Когда использовать PHP или ASP.NET? [закрыто]

46

Я много работал над созданием веб-приложений с использованием PHP и ASP.NET, но один из вопросов, который мне постоянно задают клиенты, заключается в том, стоит ли переходить на php-сайт или asp.net.

Естественно, первое, что приходит в голову, это ответить на вопрос следующим образом:

PHP с открытым исходным кодом и ASP.NET от Microsoft.

Обычно после того, как что-то подобное сказано, клиент теряет взгляд. Очевидно, тот факт, что один с открытым исходным кодом, а другой нет, на самом деле не беспокоит их. И на то есть веская причина, потому что, когда я впервые услышал это, это мне мало что говорит.

Из работы с обоими я знаю, что у каждого есть свои отличия, когда речь идет о разработке веб-сайтов.

Мой вопрос заключается в том, какие различия между ASP.NET и PHP, насколько

  1. Особенности
  2. Безопасность
  3. Продолжаемость
  4. Каркасы
  5. Среднее время разработки

Я пытаюсь составить список фактов, чтобы их можно было сравнить с заказчиком, чтобы сделать осознанный выбор подходящей платформы разработки.

Эдвард
источник
7
Я использовал оба, я думаю, Visual Studio и ASP.NET гораздо более надежны. Одна IDE побеждает меня.
Маффин Ман
7
PHP всегда будет для меня слабым местом, потому что это был мой первый язык веб-программирования ... но после 2 лет ASP.NET C # я просто не смог вернуться ... Visual IDE замечательно!
Дал
Да, я бы хотел, чтобы у php была какая-то основная IDE, но я думаю, это убило бы сам дух PHP как открытого исходного кода. Определенно фактор для рассмотрения.
Эдвард
2
6. Стоимость в течение жизни проекта?
VirtuosiMedia
@VirtuosiMedia еще один важный фактор, который я не упомянул.
Эдвард

Ответы:

39

Функции , безопасность и расширяемость будут примерно одинаковыми. То, что можно сделать с помощью PHP, можно сделать с помощью ASP.NET.

Фреймворки. Опять же, когда речь заходит об особенностях фреймворков, они будут более или менее одинаковыми. Однако, будучи более конкретным, чем сам язык, вы захотите рассмотреть:

  • То, что ваши разработчики наиболее удобны. Знание = эффективность .
  • Для каждого отдельного проекта одна структура на одном языке может быть более естественной, чем другая. Быть более конкретным, чем сам язык, означает, что структура не может не быть подходящей для одних задач и менее подходящей для других.

Среднее время разработки - Ваше среднее время разработки для очень маленького проекта может быть лучше с PHP, так как веб-хосты так легко найти, а разработчики машин так легко настроить. Тем не менее, с чем-то большим, если у вас есть хорошие разработчики, или вы уже настроены на что-либо, это, вероятно, будет стирка.


Главное, что вы должны сделать, это то, какой технологический стек ваш клиент хочет привязать к дальнейшему развитию. Ни один не смешивается хорошо (легко) с другим. У них могут быть разработчики, которые знакомы с одним или другим.

  • Если вашему клиенту нравится идея подключения к Microsoft, используйте ASP.NET. У некоторых клиентов будет больше комфорта в отношении будущей поддержки, обновлений и т. Д. С MS.

  • Если им нравится идея серверов с открытым исходным кодом и серверов Linux, используйте PHP . Это может заинтересовать некоторых клиентов из-за переносимости веб-хостов, свободного программного обеспечения и т. Д.

И, наконец, если им все равно, тогда выбирайте то, что вам больше всего удобно . Там не так много, кроме этого.

Николь
источник
8
+1 за «Главное, что вы должны сделать, это то, какой технологический стек ваш клиент хочет привязать к дальнейшей работе»
Система
Отказ от безопасности Нет ли ресурса, чтобы увидеть, как работает каждая платформа?
Эдвард
3
@loyalpenguin - это вопрос сам по себе. Я не уверен, что вы подразумеваете под «как работала каждая платформа», но если вы говорите о дырах в безопасности платформы (которые почти всегда быстро исправляются), это меньше всего вас беспокоит. По большей части каждый язык так же «безопасен», как и разработчик, пишущий код.
Николь
Хороший вопрос. Еще один последний вопрос. Как бы мне выйти из вопроса, который более безопасен?
Эдвард
@loyalpenguin, когда я говорю, что это другой вопрос, я имею в виду вопрос: «Являются ли проблемы безопасности платформы основной причиной для беспокойства в веб-приложениях? Если да, то как мне проанализировать, какая история лучше среди различных платформ, таких как PHP, ASP.NET, Java, Ruby on Rails и т. Д.? " Для меня, я не настолько уверен, что это на самом деле является большой причиной для беспокойства.
Николь
29

Просто чтобы дать представление о том, на чем я основываю свои ответы, я профессионально занимался разработкой PHP более 6 лет, я играл с ASP.NET MVC в течение последних 3-4 месяцев, и я занимался C # программирование примерно столько же, сколько программирование на PHP.

Для меня это больше аргумент PHP против C #, чем аргумент PHP против ASP.NET.

Возможность / расширяемость
Я думаю, что ASP.NET выигрывает здесь, и это больше из-за способности использовать язык как C #. C # - намного лучший язык, чем PHP, с поддержкой OO. Я также человек, который предпочитает статически типизированный язык (даже подумав, что в C # 4.0 я считаю, что вы можете создавать динамически типизированные переменные). Единственное, что у PHP было над C # в том, что касается языковой функции, это необязательные параметры, но это еще одна вещь, которая была добавлена ​​в C # 4.0 (не уверен, насколько хорошо это работает, поскольку я еще не пробовал).

Безопасность
Я бы, наверное, сказал, что это стирка между ними. Я думаю, что у них обоих есть функциональность, чтобы помочь с безопасностью, но в конечном счете программист должен убедиться, что их приложение безопасно.

Фреймворки
Ну, похоже, в PHP гораздо больше базовых фреймворков (CakePHP, Codeigniter, Symfony, Zend Framework) и множество других более мелких фреймворков, чем ASP.NET. ASP.NET имеет 2 основных фреймворка от Microsoft, WebForms (полная чушь) и ASP.NET MVC (причина, по которой я начал заниматься разработкой ASP.NET). Хотя PHP имеет больше фреймворков, я считаю, что фреймворк ASP.NET MVC 3 лучше, чем любой из фреймворков PHP.

Среднее время разработки
Я думаю, что для небольших проектов время разработки в PHP намного лучше, однако, поскольку ваш проект увеличивается в размерах, C # лучше масштабируется в этом отношении.

Стоимость
Некоторые, которые должны быть подняты, это стоимость. PHP победил на этом фронте. Хотя вы можете запускать ASP.NET в Mono в Linux, у него есть свои проблемы.

Если вы делаете небольшой или средний размер проекта и / или стоимость является фактором, PHP побеждает. Если вы делаете крупномасштабный проект, я бы выбрал ASP.NET w / C # и ASP.NET MVC.

ryanzec
источник
3
У веб-форм есть свои преимущества. Например, тысячи готовых к использованию элементов управления для быстрого создания веб-приложений стали плюсом для продажи моего клиента на веб-сайте.
Эдвард
1
Я согласен с @ryanzec WebForms не дерьмо и так же хорошо, как ASP.NET MVC с другой точки зрения. Я использовал ASP.NET MVC framework начиная с Preview 2 первой версии в коммерческой среде. Кроме того, я использовал WebForms в течение последних 7 лет. Более того, вы больше не можете спорить о затратах на ASP.NET, Microsoft предоставляет бесплатные инструменты, теперь это лучше, чем то, что предлагает PHP. Также Microsoft поставляет бесплатную версию SQL Compact и SQL Server. В наши дни сторонний хостинг для .NET сравним с Linux.
Ник
Хотя я согласен с тем, что стоимость хостинга ASP.NET стала лучше, я все же могу найти более дешевый хостинг VPS LAMP намного проще, чем хостинг VPS Windows.
ryanzec
Кроме того, что касается WebForm, сказать, что это дерьмо, возможно, было грубо, это просто не моя чашка чая. Это правда, что вы можете быстрее приступить к работе, однако, если вы попытаетесь сделать что-то за пределами того, что предоставляется вам от компонентов, или когда вы захотите значительно изменить существующий компонент, это будет значительно сложнее. Также вся система работает с постбэками и тому подобным, что мне кажется слишком неуклюжим для веб-разработки. Я предпочитаю ASP.NET MVC, так как он дает мне 100% контроль над тем, что создано и пригодно для веб-разработки.
ryanzec
8

PHP против ASP.NET похож на сравнение яблок и апельсинов, предназначенных для различных решений.

PHP лучше подходит для небольших, начинающих решений. PHP будет работать или Linux, Windows без особых требований. Microsoft ASP.NET - это мощная инфраструктура промышленного уровня, в которой есть все, что вы только можете себе представить, и даже больше. ASP.NET - это полнофункциональная готовая среда. Многие утверждают, что ASP.NET стоит дорого, как это было несколько лет назад, но не больше. Сначала инструменты бесплатны (экспресс-выпуски), параметры базы данных бесплатны (SQL Compact или SQL Server 2005 или более поздняя версия Express). Купить хостинг сейчас очень дешево, поэтому вопрос не в том, что лучше, а в том, что подходит вашему решению. Лично я предпочитаю ASP.NET, но это потому, что я работаю в корпоративной среде, где гибкость и масштабируемость очень важны, поэтому решения определяют структуру.

Очень важно то, на каком языке ты лучше всего? Это должно быть последним фактором в решении.

Если ваша цель - убедить клиента, тогда лучше выбрать asp.net. Большое название компании и язык помогают клиенту чувствовать себя комфортно. В этом случае лучшими вариантами являются (Microsoft) ASP.NET и (Oracle) Java JSP.

РЕДАКТИРОВАТЬ: многофункциональный - ASP.NET предоставляет две альтернативы для создания веб-форм веб-сайта и подхода MVC. Поскольку он отличается от .NET Framework, вам нужны очень мощные функции, например WF (рабочий процесс), DLR (динамический язык Runtime), Parallel Linq, Linq, маршрутизация, различные формы управления состоянием данных: элементы HTTPContext, ViewState, Runtime Cache, page Кэш вывода, три разных типа реализации сессий InProc, State и SQL Server. ASP.NET реализует различные формы безопасности, например, поставщик членства и поставщик ролей. Я не хочу мешать PHP, но ASP.NET находится в другой лиге.

NickZ
источник
5
Я всегда слышал это как оправдание, что «Microsoft = Дорого», поэтому я сначала выучил PHP. Но я должен согласиться, что это действительно не так.
Эдвард
Да, игровое поле довольно даже сейчас, трудно понять, какой язык использовать в эти дни.
Ник
Что именно «производственная структура сила» средний ? «Все, что вы могли себе представить и даже больше»? "Очень многофункциональная среда" из коробки "? Как ASP.NET эти вещи, в отличие от PHP? Пока вы не объяснили это, это всего лишь рекламный язык Microsoft.
Николь
Цели дизайна - php изначально предназначался для личных домашних страниц и был разработан для упрощения простых сценариев на стороне сервера. asp.net был создан, чтобы конкурировать с Java в качестве решения корпоративного уровня. За эти годы php ассимилировал многие функции, но эта «привязка к функциям» проникает в языковые несоответствия и причуды платформы. Я часто использую php, но он и был разработан для веб-языка, а не для платформы программирования общего назначения
bunglestink
6

Тщательно поработав с обоими, вы уже знаете, что ответы будут разными в зависимости от проблемы и клиента. В очень общем смысле:

  • PHP отлично подходит для проектов, которые должны работать с ограниченным бюджетом. Например, вы не получите большой платы за лицензирование базы данных.
  • ASP.NET отлично подходит для проектов, требующих поддержки и культуры разработчиков, которые предоставляет Microsoft.

Если вы составляете список фактов для своих клиентов, основывайте его на том, что вы знаете. Ваши исследования, независимо от того, насколько предвзяты ваши выводы, хороши для получения ваших пуль.

Фред Уилсон
источник
8
Меня как-то раздражает, когда .Net автоматически ассоциируется с «большими лицензионными сборами». Вы, конечно, должны знать, что .Net может взаимодействовать с различными СУБД, бесплатными и нет, и, конечно, так же, как PHP, бесплатным и нет (и это не значит, что Microsoft - единственная популярная СУБД с большими лицензионными платежами).
Квентин Старин
3
Не говоря уже о том, что Express и веб-версии SQL Server имеют гораздо более приемлемые лицензионные сборы (бесплатно в случае Express).
Квентин Старин
Извините, не хотел раздражать. Похоже, что MS выглядит лучше как полный стек, и я предполагал, что ядро ​​БД больше, чем Express.
Фред Уилсон
1
Не взятый лично, я просто, кажется, вижу ассоциацию, сделанную довольно часто.
Квентин Старин
1
@loyalpenguin: По моему опыту, редко можно найти механизм хранения, который не поддерживается в .Net. Я не могу комментировать, действительно ли это так же верно с PHP.
Квентин Старин
1

Элементы управления .net гораздо приятнее того, что вы можете найти с платформой PhP. Посмотрите, например, на Infragistics, что эквивалентно лампе?

Totor
источник