Kiedy używać PHP lub ASP.NET? [Zamknięte]

46

Pracowałem intensywnie nad tworzeniem aplikacji internetowych przy użyciu PHP i ASP.NET, ale jednym z pytań, które nieustannie zadają mi klienci, jest to, czy przejść dalej z witryną php czy stroną asp.net.

Naturalnie pierwszą rzeczą, która przychodzi na myśl, jest odpowiedź na następujące pytanie:

PHP jest oprogramowaniem typu open source, a ASP.NET pochodzi z firmy Microsoft.

Zwykle po tym, jak mówi się coś takiego, klient ma pusty wyraz twarzy. Najwyraźniej fakt, że jeden z nich jest open source, a drugi nie, tak naprawdę ich nie przeraża. I nie bez powodu, ponieważ kiedy pierwszy raz to usłyszałem, tak naprawdę niewiele mi to mówi.

Wiem z obu, że każda z nich ma swoje różnice, jeśli chodzi o tworzenie stron internetowych.

Moje pytanie brzmi, jakie są różnice między ASP.NET i PHP w tym zakresie

  1. cechy
  2. Bezpieczeństwo
  3. Rozszerzalność
  4. Ramy
  5. Średni czas rozwoju

Staram się sporządzić listę faktów, aby móc porównać z klientem, aby można było dokonać świadomego wyboru na odpowiedniej platformie programistycznej.

Edward
źródło
7
Użyłem obu, myślę, że Visual Studio i ASP.NET są znacznie bardziej niezawodne. Sam IDE wygrywa mnie.
The Muffin Man,
7
PHP zawsze będzie miało dla mnie słabość, ponieważ był to mój pierwszy język programowania WWW ... ale po 2 latach ASP.NET C # po prostu nie mogę wrócić ... Visual Studio IDE jest cudowne!
Dal
Tak, chciałbym, żeby php miał jakieś główne IDE, ale myślę, że zabiłoby to samego ducha PHP jako open source. Zdecydowanie czynnik do rozważenia.
Edward
2
6. Koszt w całym okresie realizacji projektu?
VirtuosiMedia,
@VirtuosiMedia to kolejny ważny czynnik, o którym nie wspomniałem.
Edward

Odpowiedzi:

39

Funkcje , bezpieczeństwo i rozszerzalność będą mniej więcej takie same. To, co można zrobić za pomocą PHP, można wykonać za pomocą ASP.NET.

Frameworki - Ponownie, jeśli chodzi o cechy frameworków, będzie mniej więcej takie samo. Będąc bardziej szczegółowym niż sam język, warto rozważyć:

  • Z czym Twoi programiści czują się najlepiej. Wiedza = wydajność .
  • W zależności od projektu, jeden szkielet w jednym języku może być lepszym rozwiązaniem naturalnym niż szkielet w innym. Bycie bardziej szczegółowym niż sam język oznacza, że ​​środowisko nie może pomóc, ale jest dobrze dostosowane do niektórych zadań i mniej dostosowane do innych.

Średni czas programowania - Twój średni czas programowania dla bardzo małego projektu może być lepszy w PHP, ponieważ hosty WWW są tak łatwe do znalezienia, a maszyny deweloperskie tak łatwe do skonfigurowania. Jednak w przypadku czegoś większego, o ile masz dobrych deweloperów lub masz już skonfigurowane jedno z nich, prawdopodobnie będzie to pranie.


Najważniejszą rzeczą, którą powinieneś wziąć pod uwagę, jest to, jaki stos technologii Twój klient będzie chciał powiązać z postępem. Żadne z nich nie miesza się dobrze (łatwo) z drugim. Mogą mieć programistów, którzy znają jeden lub drugi.

  • Jeśli Twojemu klientowi podoba się pomysł połączenia z Microsoftem, skorzystaj z ASP.NET. Niektórzy klienci będą mieli większy komfort w zakresie przyszłego wsparcia, aktualizacji itp. Z MS.

  • Jeśli podoba im się koncepcja serwerów open source i Linux, wybierz PHP . Może to zainteresować niektórych klientów ze względu na możliwość przenoszenia hostów internetowych, bezpłatnego oprogramowania itp.

I na koniec, jeśli ich to nie obchodzi, wybierz to, z czym czujesz się najlepiej . Nie ma w tym nic więcej.

Nicole
źródło
8
+1 za „Najważniejszą rzeczą, którą powinieneś wziąć pod uwagę, jest to, jaki stos technologii chcesz, aby Twój klient był związany z kontynuacją”.
System w dół
odgałęzienie bezpieczeństwa nie ma zasobów, aby zobaczyć, jak działa każda platforma?
Edward
3
@loyalpenguin - to pytanie samo w sobie. Nie jestem pewien, co rozumiesz przez „jak działa każda platforma”, ale jeśli mówisz o lukach w zabezpieczeniach platformy (które prawie zawsze są szybko załatane), to jest to najmniejsze z twoich zmartwień. W większości przypadków każdy język jest tak „bezpieczny” jak programista, który pisze kod.
Nicole,
Dobra uwaga. Tylko jedno ostatnie pytanie Jak mam wyjść z pytania, które jest bezpieczniejsze?
Edward
@loyalpenguin, kiedy mówię, że to inne pytanie, mam na myśli, że pytanie brzmi: „Czy problemy związane z bezpieczeństwem platformy są poważnym powodem do niepokoju w aplikacjach internetowych? Jeśli tak, to w jaki sposób mogę przeanalizować, która ma lepszą historię wśród różnych platform, takich jak PHP, ASP.NET, Java, Ruby on Rails itp.? ” Dla mnie nie jestem pewien, czy rzeczywiście jest to poważny powód do niepokoju.
Nicole,
29

Aby wyjaśnić, na czym opieram swoje odpowiedzi, od ponad 6 lat zajmuję się programowaniem w PHP, gram w ASP.NET MVC przez ostatnie 3-4 miesiące i pracuję w C # programowanie mniej więcej tak długo, jak programowanie PHP.

Dla mnie jest to bardziej argument PHP vs C # niż argument PHP vs ASP.NET.

Funkcja /
rozszerzalność Myślę, że ASP.NET wygrywa tutaj, a to bardziej ze względu na możliwość używania języka takiego jak C #. C # jest znacznie lepszym językiem niż PHP, ponieważ obsługuje OO. Jestem także osobą, która preferuje język o typie statycznym (nawet myślałem w C # 4.0, uważam, że można robić zmienne o typie dynamicznym). Jedyną rzeczą, którą PHP miał ponad C # pod względem funkcji języka, były parametry opcjonalne, ale to kolejna rzecz, która została dodana w C # 4.0 (nie jestem pewien, jak dobrze działa, ponieważ jeszcze tego nie próbowałem).

Bezpieczeństwo
Prawdopodobnie powiedziałbym, że jest to zmywanie między nimi. Myślę, że oba mają funkcjonalność zapewniającą bezpieczeństwo, ale ostatecznie zadaniem programisty jest upewnienie się, że ich aplikacja jest bezpieczna.

Frameworki
Cóż, PHP wydaje się mieć znacznie więcej frameworków (CakePHP, Codeigniter, Symfony, Zend Framework) i wiele innych mniejszych frameworków niż ASP.NET. ASP.NET ma 2 główne frameworki Microsoft, WebForms (kompletna bzdura) i ASP.NET MVC (powód, dla którego zacząłem zajmować się programowaniem ASP.NET). Podczas gdy PHP ma więcej frameworków, uważam, że framework ASP.NET MVC 3 jest lepszy niż którykolwiek z frameworków PHP.

Średni czas
programowania Myślę, że w przypadku mniejszych projektów czas programowania jest znacznie lepszy w PHP, jednak wraz ze wzrostem wielkości projektu C # lepiej się pod tym względem skaluje.

Koszt
Niektóre kwestie, które należy poruszyć, to koszty. PHP wygrywa na tym froncie. Chociaż możesz uruchomić ASP.NET na Mono w Linuksie, ma swoje własne problemy.

Jeśli wykonujesz mały lub średni projekt i / lub istotny jest koszt, PHP wygrywa. Jeśli wykonujesz projekt na dużą skalę, wybrałbym ASP.NET w / C # i ASP.NET MVC.

ryanzec
źródło
3
Formularze internetowe mają jednak zalety. Na przykład tysiące gotowych do użycia elementów sterujących do szybkiego tworzenia aplikacji internetowych było zaletą sprzedaży mojego klienta na stronie internetowej.
Edward
1
Zgadzam się z @ryanzec WebForms nie jest badziewiem i jest tak samo dobry jak ASP.NET MVC z innej perspektywy. Korzystam ze środowiska ASP.NET MVC od wersji zapoznawczej 2 pierwszej wersji w środowisku komercyjnym. Korzystałem także z WebForms przez ostatnie 7+ lat. Co więcej, nie można już kłócić się o koszty dla ASP.NET, Microsoft dostarcza darmowe narzędzia, teraz jest to lepsze niż to, co oferuje PHP. Microsoft dostarcza również bezpłatną wersję SQL Compact i SQL Server. Hosting stron trzecich dla platformy .NET jest obecnie porównywalny z Linuksem.
Nickz
Chociaż zgodzę się, że koszty hostowania ASP.NET wzrosły, nadal mogę znaleźć tańszy hosting VPS LAMP o wiele łatwiejszy niż hosting VPS Windows.
ryanzec
Również do rzeczy o WebForm, mówiąc, że to bzdura, może być trudne, to po prostu nie moja filiżanka herbaty. Prawdą jest, że możesz szybciej działać, jednak gdy spróbujesz zrobić coś poza tym, co jest ci dostarczone z komponentów lub gdy będziesz musiał poważnie zmodyfikować istniejący komponent, jest to wykładniczo trudniejsze. Również cały sposób, w jaki system działa z postbackami i takimi rzeczami, wydaje mi się zbyt niezręczny, jeśli chodzi o tworzenie stron internetowych. Wolę ASP.NET MVC, ponieważ daje mi to 100% kontrolę nad tym, co jest tworzone i które moim zdaniem lepiej nadaje się do tworzenia stron internetowych.
ryanzec
8

PHP vs ASP.NET jest jak porównywanie jabłek i pomarańczy - tam są ukierunkowane na różne rozwiązania.

PHP jest lepiej dostosowanym frameworkiem dla małych rozwiązań dla początkujących. PHP będzie działało lub Linux, Windows bez zbyt wielu wymagań. Microsoft ASP.NET to platforma siły przemysłowej, która ma wszystko, co możesz sobie wyobrazić i więcej. ASP.NET to bardzo bogate w funkcje środowisko gotowe do pracy. Wielu twierdzi, że ASP.NET jest drogi, co miało miejsce kilka lat temu, ale już nie. Po pierwsze narzędzia są bezpłatne (wersje ekspresowe), opcje bazy danych są bezpłatne (SQL Compact lub SQL Server 2005 lub nowszy Express). Kup Hosting jest teraz bardzo tani, więc pytanie nie brzmi, które jest lepsze, ale co pasuje do twojego rozwiązania. Osobiście wolę ASP.NET, ale to dlatego, że pracuję w środowisku korporacyjnym, w którym elastyczność i skalowalność jest bardzo ważna, dlatego rozwiązania dyktują ramy.

Jedną bardzo ważną rzeczą jest to, w jakim języku jesteś najlepszy? To powinien być ostatni czynnik w decyzji.

Jeśli Twoim celem jest przekonanie klienta, lepszym rozwiązaniem jest asp.net. Nazwa dużej firmy, która wspiera język, sprawia, że ​​klient czuje się komfortowo. W takim przypadku najlepszymi opcjami są (Microsoft) ASP.NET i (Oracle) Java JSP.

EDYCJA: Bogate w funkcje - ASP.NET zapewnia dwie alternatywy do tworzenia witryn WebForms i podejścia MVC. Ponieważ oprócz frameworku .NET musisz korzystać z bardzo zaawansowanych funkcji, np. WF (przepływ pracy), DLR (dynamiczny język uruchomieniowy), Parallel Linq, Linq, routing, różne formy zarządzania stanem danych: elementy HTTPContext, ViewState, Runtime Cache, strona wyjściowa pamięć podręczna, trzy różne typy implementacji sesji: InProc, State i SQL Server. ASP.NET wdraża różne formy bezpieczeństwa, np. Dostawca członkostwa i dostawca ról. Nie chcę spakować PHP, ale ASP.NET należy do innej ligi.

Nickz
źródło
5
Zawsze słyszałem to jako wymówkę, że „Microsoft = Drogie” i dlatego najpierw nauczyłem się PHP. Ale muszę się zgodzić, że tak naprawdę już tak nie jest.
Edward
Tak, boisko jest teraz całkiem niezłe, ciężko jest wiedzieć, jakiego języka używać w dzisiejszych czasach.
Nickz
Co dokładnie oznacza „przemysłowy siła ramowa” średnią ? „Wszystko, co możesz sobie kiedykolwiek wyobrazić i więcej”? „Bardzo bogate w funkcje środowisko gotowe do pracy”? Jak ASP.NET to te rzeczy, w przeciwieństwie do PHP? Dopóki tego nie wyjaśnisz, jest to tylko język reklamowy Microsoft.
Nicole,
cele projektowe - php pierwotnie oznaczało osobiste strony główne i zostało zaprojektowane tak, aby ułatwić proste skryptowanie na serwerze. asp.net został stworzony, aby konkurować w / java ee jako rozwiązanie na poziomie przedsiębiorstwa. php przyswoił sobie wiele funkcji na przestrzeni lat, ale ta „cecha radzenia sobie” zepsuje się w niespójnościach językowych i dziwactwach platformowych. używam php często, ale jest zaprojektowana aby być język stron internetowych, a nie ogólny cel platformy programowania
bunglestink
6

Po intensywnej pracy z obiema rzeczami już wiesz, że odpowiedzi będą różne w zależności od problemu i klienta. W bardzo ogólnym sensie:

  • PHP doskonale nadaje się do projektów, które muszą pracować z ograniczonym budżetem. Na przykład nie dostaniesz dużych opłat licencyjnych za bazy danych.
  • Program ASP.NET doskonale nadaje się do projektów wymagających wsparcia i kultury programistycznej zapewnianej przez firmę Microsoft.

Jeśli tworzysz listę faktów dla swoich klientów, oprzyj ją na tym, co wiesz. Twoje badania, bez względu na to, jak stronnicze są twoje ustalenia, są w porządku, jeśli chodzi o zdobywanie punktów.

Fred Wilson
źródło
8
To mnie denerwuje, kiedy .Net automatycznie kojarzy się z „dużymi opłatami licencyjnymi za bazy danych”. Musisz oczywiście wiedzieć, że .Net może współpracować z wieloma różnymi RDBMS, za darmo i nie, i oczywiście tak samo może PHP, za darmo i nie (i to nie tak, że Microsoft jest jedynym popularnym RDBMS z dużymi opłatami licencyjnymi).
quentin-starin
3
Nie wspominając o tym, że wersje SQL Server Express i Web mają znacznie łatwiejsze do zaakceptowania opłaty licencyjne (w przypadku Express).
quentin-starin
Przepraszam, nie po to, żeby irytować. MS wydaje się sprzedawać lepiej jako pełny stos, a ja zakładałem większy silnik DB niż Express.
Fred Wilson,
1
Nie biorąc pod uwagę osobiście, wydaje mi się, że stowarzyszenie tworzy się dość często.
quentin-starin
1
@loyalpenguin: Z mojego doświadczenia wynika, że ​​rzadko można znaleźć silnik pamięci masowej, który nie jest obsługiwany w .Net. Nie mogę komentować, czy tak jest w przypadku PHP.
quentin-starin
1

Kontrolki .net są znacznie ładniejsze niż to, co można znaleźć na platformie PhP. Spójrz na przykład na Infragistics, jaki jest odpowiednik LAMPY?

Totor
źródło