Коли використовувати 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 Studio 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 vs C #, ніж PHP проти ASP.NET.

Особливості / розширюваність
Я думаю, що тут виграє ASP.NET, і це більше через можливість використовувати мову, як C #. C # є набагато кращою мовою, ніж PHP, з нею йде підтримка ОО Я також людина, яка надає перевагу мові, яка набирається статично (навіть думаючи про C # 4.0, я вважаю, що ви можете робити динамічно набрані змінні). Єдине, що PHP мав понад C #, що стосується мовної функції, це необов'язкові параметри, але це інша річ, яка була додана в C # 4.0 (не впевнений, наскільки добре вона працює, як я ще не пробував її).

Безпека
Я б, мабуть, сказав, що це миття між двома. Я думаю, що в обох є функціонал, який допомагає забезпечити безпеку, але в кінцевому підсумку робота програміста - забезпечити безпеку їх застосування.

Frameworks
Well 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.


3
Однак веб-форми мають переваги. Наприклад, тисячі готових до використання елементів керування для швидкого створення веб-додатків були плюсом для продажу мого клієнта на веб-сайті.
Едвард

1
Я погоджуюся з @ryanzec WebForms не лайно, і це так само добре, як ASP.NET MVC з різних точок зору. Я використовував рамку ASP.NET MVC з попереднього перегляду першої версії в комерційному середовищі. Також я використовував WebForms протягом останніх 7 років. Крім того, ви більше не можете сперечатися з витратами на ASP.NET, Microsoft постачає безкоштовні інструменти, тепер це краще, ніж те, що пропонує PHP. Також Microsoft постачає безкоштовну версію SQL Compact і SQL Server. У цей час сторонній хостинг для .NET є порівнянним з Linux.
Nickz

Хоча я погоджусь, що вартість хостингу 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) JSP.

EDIT: Багаті функції - ASP.NET пропонує дві альтернативи для створення веб-форм веб-форм та підходу MVC. З огляду на рамки .NET, ви маєте дуже потужні функції, наприклад WF (робочий процес), DLR (динамічне виконання мови), паралельний Linq, Linq, маршрутизація, різні форми управління станом даних: елементи HTTPContext, ViewState, кеш-пам'ять виконання, сторінка вихідний кеш, три різні типи впровадження сеансу InProc, State та SQL Server. ASP.NET реалізує різні форми захисту, наприклад, постачальник членства та постачальник ролей. Я не хочу вручати PHP, але ASP.NET знаходиться в іншій лізі.


5
Я завжди чув це як виправдання, що "Майкрософт = дорогий", тому я першим навчився PHP. Але я повинен погодитися, що насправді це вже не так.
Едвард

Так, ігрове поле вже зараз, важко знати, якою мовою користуватися в наші дні.
Nickz

Що саме «виробнича структура сила» середній ? "Все, що ти міг собі уявити, і більше"? "Дуже насичене середовище поза коробкою"? Як ASP.NET ці речі таким чином, що PHP не є? Поки ви не пояснили це, це лише мова реклами Microsoft.
Ніколь

Цілі дизайну - php спочатку розглядали особисті домашні сторінки та були розроблені для спрощення простого сценарію на сервері. asp.net був побудований для конкуренції w / java ee як рішення на рівні підприємства. Програма php засвоїла багато функцій протягом багатьох років, але ця "функція тактики" проникає в мовні невідповідності та химерність платформ. Я часто використовую php, але він є і був розроблений як веб-мова, а не платформа програмування загального призначення
bunglestink

6

Довго працюючи з обома, ви вже знаєте, що відповіді будуть різними залежно від проблеми та клієнта. У дуже загальному сенсі:

  • PHP чудово підходить для проектів, які потребують роботи над бюджетом. Наприклад, ви не будете вражені великими платами за ліцензування бази даних.
  • ASP.NET чудово підходить для проектів, яким потрібна така підтримка та культура розробників, які надає Microsoft.

Якщо ви складаєте список фактів для своїх клієнтів, грунтуйтеся на тому, що ви знаєте. Ваше дослідження, незалежно від того, наскільки упереджені ваші висновки, чудово отримає бали.


8
Це мене дратує, коли .Net автоматично асоціюється з "великими платами за ліцензування бази даних". Ви, звичайно, повинні знати, що .Net може взаємодіяти з досить різноманітними RDBMS, вільними і ні, і, звичайно, так може бути PHP, безкоштовним і ні (і це не так, як Microsoft є єдиним популярним RDBMS з великими ліцензійними платами).
квентін-зірін

3
Не кажучи вже про те, що експрес та веб-версії SQL Server мають набагато більш приємні плати за ліцензування (безкоштовно у випадку Express).
квентін-зірін

Вибачте, не роздумувати. MS, здається, продається краще як повний стек, і я припускав, що більший двигун DB, ніж Express.
Фред Вілсон

1
Не сприймаючи особисто, я, здається, бачу, що асоціація робиться досить часто.
квентін-зірин

1
@loyalpenguin: На моєму досвіді, рідко можна знайти механізм зберігання даних, який не підтримується в .Net. Я не можу коментувати, чи правда це для PHP чи ні.
квентін-зірин

1

.net управління набагато приємніше, ніж те, що ви можете знайти на платформі PHP. Наприклад, погляньте на інфраструктуру, що таке еквівалент для LAMP?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.