Co Wy widzicie w tym ASP.NET?

0

Witam wszystkich,

Mam pewne pytanie. Proszę o wyrozumiałość i szczerą odpowiedź, bowiem nurtuje mnie w mojej opinii nadmierna fascynacja NET, której nie podzielam.

Jestem programistą-freelancerem. Piszę w jednym z frameworków PHP, deko w Rubym, C# (windows forms i serwisy konsolowe, Delphi).
Umówmy się, że rozmawiamy wyłącznie o aplikacjach webowych. O ile lubię c# i NET Windows forms jest super, to jakoś za cholerę nie mogę się przemóc to ASp.NET czy core. Napiszcie mi proszę, co takiego da mi przejście na ASP.NET - najlepiej Core (siedzę na Macu), czego nie mam w PHP? Jestem programistą małych systemów (średnio 15-30 tabel w bazie relacyjnej). Uwierzcie mi - próbuję już n-ty raz się przerzucić z PHP na ASP.NET, ale nagle przychodzi zlecenie - na wczoraj i ... robię go w Windows Forms, Delphi albo PHP, bo jest szybciej i łatwo się poprawia błędy. Szczególnie gdy mam tydzień na napisanie systemu, projektuję bazę, odpalam scaffolding i w ciągu 10 minut mam działający prototyp. Na drugi dzień wysyłam klientowi prototyp aplikacji - oczywiście to uproszczenie. Za cholerę nie mogę tego samego powiedzieć o ASP.NET Core.

Dobry framework PHP załatwia automatycznie walidację danych w modelu, generuje widoki, modele, kontrolery, linki menu. Dosłownie bajka. No i nie ma problemów z bazami innymi niż MS SQL Server czy hostingiem - działa wszędzie. Jest dostępnych mnóstwo gotowych pluginów, które można podłączyć i działają. I to za darmo. PHP jest na ponad 80% aplikacji w Internecie. Do tego różnorodność frameworków... jest pluralizm, czego w mojej opinii brakuje w NET.

Druga sprawa - zarobki. Uczelnie generują setki, o ile nie tysiące programistów C#. Jest dla Netowców sporo miejsc pracy, ale czy to nie tak, że więcej programistów prędzej czy później przełoży się w końcu na mniejsze zarobki? Osobiście wolę się specjalizować w słabiej znanych narzędziach czy też - niepopularnych frameworkach. Dzięki temu mniejsza konkurencja, a ofert mnóstwo i większe pieniądze. Wg mnie doskonały produkt to Ruby Rails, ale jakże niedoceniony. Aplikacja niemal tworzy się sama, super active record w porównaniu do Entity, który mnie totalnie denerwuje. Gdzie więc widzicie plusy? Bo jest w korporacjach? Jest szybkie? Szybsze niż PHP 7 (gdy wyjdą frameworki wykorzystujące moc tej wersji)? Jeszcze jedno - gdy znajdę błąd w aplikacji PHP czy Ruby, podmieniam plik i działa - nie trzeba kompilować od nowa. Gdzie wygoda w ASP? Przecież wszystkie te rozwiązania bazują na kodzie pośrednim, po co wiec kompilacja? Jeszcze kwestia środowiska - Visual Studio jest fajne, ale totalnie toporne. Mam wrażenie, że na Mac OS działa o wiele lepiej niż na Windows.

Odpowiedzcie szczerze - co Was tak kręci w ASP.NET?

Pozdrowienia!
Leszek

1

Wow

0

.NETowcy są wdzięczni Microsoftowi... <-- tak, to jest dobry argument, ale czy są wdzięczni także za to, że ów "standardy" ciągle się zmieniają? .NET ma wiele wersji. Microsoft w mojej opinii nie ma pomysłu na produkt i zmienia zasady w trakcie gry.

2

Dobry framework PHP załatwia automatycznie walidację danych w modelu, generuje widoki, modele, kontrolery, linki menu. Dosłownie bajka.

No popatrz, to zupełnie tak samo jak stworzenie nowego projektu MVC. Zaznacz opcje że chcesz konta użytkowników i dostajesz autoryzacje w pakiecie.

No i nie ma problemów z bazami innymi niż MS SQL Server czy hostingiem - działa wszędzie.

Że co proszę?

Jeszcze może powiesz że ASP.Net Core tylko na Windowsie działa :)

0

Dzięki za odpowiedź.

to zupełnie tak samo jak stworzenie nowego projektu MVC. Zaznacz opcje że chcesz konta użytkowników i dostajesz autoryzacje w pakiecie.
Dopytam: Czy dotyczy to także ASP.NET Core? Nie wiem, czy masz doświadczenie w PHP, zatem sprecyzuję: mam tabelę powiedzmy posts. Robię scaffolding i mam gotowe: controller crud, model z walidacją oraz widoki dla każdej części CRUD. Do tego jeśli w bazie są relacje, te relacje są od razu odzwierciedlone w wygenerowanym kodzie. Ciekawi mnie - bez złośliwości, ale z ciekawości, czy ASP.NET Core tak umie z bazą powiedzmy MySQL.

Że co proszę? (odnośnie innych baz niż MS SQL)
Jeszcze może powiesz że ASP.Net Core tylko na Windowsie działa :)

Pisałem, że pracuję na Macu. Jeśli brać pod uwagę projekt Windows, to czy da się podłączyć się z np. z MySQL i np. wygenerować kod Entity dla tej bazy czy działa to wyłącznie z MS SQL? Jeśli Core jest przenośne, to czy jego funkcjonalność w Visual Studio w Mac OS jest identyczna? Czy automatycznie generuje kontrolery, modele widoki gotowe do odpalenia?

Pozdrawiam

1

"Osobiście wolę się specjalizować w słabiej znanych narzędziach".
O PHP. :)

IMHO to jest najlepsze :)

A tak w ogóle to pisz sobie w czym chcesz. Z Bogiem. ;)

0

Druga sprawa - zarobki. Uczelnie generują setki, o ile nie tysiące programistów C#.

Czemu akurat C#?

Java C++ C Python?

1
lklich napisał(a):

Pisałem, że pracuję na Macu. Jeśli brać pod uwagę projekt Windows, to czy da się podłączyć się z np. z MySQL i np. wygenerować kod Entity dla tej bazy czy działa to wyłącznie z MS SQL?

Czyli że zaczynasz krytykować, wysuwać pochopne wnioski mimo że nie znasz tego oczym piszesz? Szczerze to nawet mi się nie chce Tobie tłumaczyć w takiej sytuacji. Nie lubię tego pisać ale... wygoogluj sobie.

Jeśli Core jest przenośne, to czy jego funkcjonalność w Visual Studio w Mac OS jest identyczna? Czy automatycznie generuje kontrolery, modele widoki gotowe do odpalenia?

Ale zdajesz sobie sprawę że szablony projektów nie mają nic wspólnego z frameworkami? To czy po utworzeniu projektu zostaną wygenerowane kontrolery, widoki etc. nie jest podyktowane tym czy korzystasz z ASP.Net, Laravel czy czegokolwiek innego.

0

Pisałem, że pracuję na Macu. Jeśli brać pod uwagę projekt Windows, to czy da się podłączyć się z np. z MySQL i np. wygenerować kod Entity dla tej bazy czy działa to wyłącznie z MS SQL? Jeśli Core jest przenośne, to czy jego funkcjonalność w Visual Studio w Mac OS jest identyczna? Czy automatycznie generuje kontrolery, modele widoki gotowe do odpalenia?

Tak, jest dostawca do MySQL i to działa. Tak, funkcjonalność w Visual Studio dla Mac powinna być identyczna (ale nie wiem, nie używałem go nigdy) - zresztą w ogóle nie musisz używać VS, możesz używać narzędzi konsolowych i w nim sobie generować kontrolery/widoki/całe aplikacje.

Szybsze niż PHP 7 (gdy wyjdą frameworki wykorzystujące moc tej wersji)?

Jest taka strona z benchmarkami: https://www.techempower.com/benchmarks/. Nie wiem dokładnie jak ona testuje szybkość tych aplikacji, ale np w teście Fortunes "aspnetcore-mvc-ef" jest na pozycji 152, "php-raw7" na 97, pierwszy framework PHP to nieznany mi "yaf" na pozycji 115, pierwsze znane mi frameworki PHP to pozycje 207 (CodeIgniter), 212 (Kohana) i 215 (Silex), Symfony i Zend okupują pozycje 235 i 237.

W poszczególnych testach ASP.NET Core MVC przegrywa z Symfony w "Multiple Queries" i "Data Updates", z Laravelem we wszystkich. W kategorii "plaintext" 18 pozycja, miażdży PHP (około drugiej setki), a ASP.NET MVC (zapewne 5.0) na Mono w ogóle jest na pozycji 240. Choć ten test akurat to jest nie tak bardzo istotny.

Aczkolwiek coś mi się nie podoba w tych testach, bo na przykład ASP.NET Core jest opisane, że działało na Postgres, a PHP na MySQL. Wersje też nie są podawane, nie wiem czy to był Core 2.0 czy 1.0 i tak dalej.

Jeszcze jedno - gdy znajdę błąd w aplikacji PHP czy Ruby, podmieniam plik i działa - nie trzeba kompilować od nowa. Gdzie wygoda w ASP? Przecież wszystkie te rozwiązania bazują na kodzie pośrednim, po co wiec kompilacja?

Zasadniczo też nie musisz kompilować od nowa, bo masz możliwość kompilacji w pamięci.

Jeszcze kwestia środowiska - Visual Studio jest fajne, ale totalnie toporne. Mam wrażenie, że na Mac OS działa o wiele lepiej niż na Windows.

Visual Studio for Mac to zupełnie inny produkt niż Visual Studio dla Windows (przebrandowane MonoDevelop). Nie używałem jeszcze wersji dla Mac, więc się o nim nie wypowiem - ale masz też JetBrains Rider, a do tego możesz używać tak naprawdę czegokolwiek innego, np. VS Code, Sublime Text albo Vima ;-)

Jakiś czas temu pisałem w PHP (ale to było dawno temu), ale przerzuciłem się głównie na ASP.NET - z uwagi na sam język. C# o wiele bardziej mi pasuje niż PHP. Między innymi z tego prostego względu, że PHP ssie niemiłosiernie. Ja rozumiem, frameworki, AR, scaffolding, ale ten język ma skopaną bibliotekę standardową, a nawet zwykłą wewnętrzną logikę :/ Plus silne typowanie vs ...niezbyt wiem jakie typowanie.

0

Dziękuję wszystkim za dyskusję. Chciałem napisać wątek tak, aby deczko Was zirytować. Podsumowując, otrzymałem mało odpowiedzi, aby wyciągnąć wnioski. Ale czy nie mogę ich wniosków? Jak mawia mój profesor, brak wniosków może stanowić istotny wniosek. Zatem postaram się je mimo wszystko wysunąć.

  1. Brak argumentów o wyższości jednego języka nad drugim świadczy o tym, że nie ma różnicy zarówno pomiędzy PHP ani C#, czy innymi, ale też pomiędzy frameworkami. Jednak MS posiada w pewien sposób narzucone środowisko (ASP.NET MVS + Razor + Entity) i faktycznie może to być zaletą, bowiem próg wejścia jest niższy niż np. w przypadku Javy.
  2. Rację zatem mają starzy deweloperzy, którzy powtarzają - słusznie zresztą: nie jest ważne, w czym piszesz. Klient i tak nie wie, co siedzi w backendzie. Ważne tylko, dobrze dobrać technologię do danego projektu - a w większych i długoterminowych projektach ma to krytyczne znaczenie.
  3. C# oferuje doskonałą integrację z systemem operacyjnym i pozwala mi na więcej, a to jednak przewaga nad PHP.
  4. C# i ASP.NET jest coraz popularniejsze, bowiem liczy się u nich na tylko szybkość pisania kodu, lecz jakość kodu, czyli późniejsza cena jego utrzymania i rozwoju kodu. Większe systemy to ogromne koszty utrzymania i rozwoju. Jeśli zatem tego typu organizacja postawi na ASP.NET i popularnego ORMa, np. Entity, Hibernate, etc., to jest to chyba lepszy pomysł, niż "setki" frameworków PHP (choć tak naprawdę liczy się tylko kilka - ale za to ich filozofia jest zupełnie odmienna). W konsekwencji wykorzystanie ASP.NET może skutkować łatwiejszym dostępem do pracowników na rynku. A kasa nie zależy od technologii, tylko od doświadczenia.
  5. Używam C# i ASP.NET, bowiem nie mogę odnaleźć się w Javie, zatem przyznaję rację Autorowi piszącemu o homogeniczności ASP.NET - to ma sens!
  6. ASP.NET Core się dynamicznie rozwija. Śledzę rozwój platformy i widzę ogromny potencjał.
  7. C# to jednak nowoczesny język, bardzo intuicyjny, elastyczny i czytelny. Uwielbiam jego składnię. Ileż razy wyłożyłem się w PHP i nie wiedziałem gdzie jest błąd...
  8. C# to web, desktop oraz mobile (Xamarin), zatem znając język, można pisać wszędzie. Ogromny potencjał.
  9. Lubię składnię Razora.
  10. Podoba mi się obsługa błędów w C#.
  11. Kompilacja ma swoje zalety - może to trywialne, ale dla mnie jest to dla jakaś ochrona kodu przed piractwem (dekompilacja to jednak pewien próg nie dla wszystkich).

P.S Szanowny Panie "Ktos" - ogromnie dziękuję za cenną odpowiedź.

Pozdrawiam wszystkich i dziękuję
Leszek

0

Napisałbym WOW ale już było więc pozostaje.... O Jezu....

0

Produkcji .NETowcow na uczelniach winne sa te smieszne kola naukowe, ktorym patronuje Microsoft.
Dadza Ci kilka gadzetow, zorganizuja hackathon na Alejach Jerozolimskich 195A.
Raz w roku kaza zrobic Ci ITAD na ktory dostaniesz paczke dlugopisow, smyczek 3 przydzielonych ludzi i 5 koszulek i tak oto powstaje stado .NETowych zombie lecacych do C# i ekosystemu jak muchy do g.wna :-)
Tego jezyka nie trzeba promowac bo 'studenty' robia to sami, a jak powiesz im, ze to wszystko nie do konca jest tak kolorowe jak sie im pokazuje na prezentacjach to malo czlowieka nie zabija.
Troche taki fanatyzm...

4
lklich napisał(a):

Napiszcie mi proszę, co takiego da mi przejście na ASP.NET - najlepiej Core (siedzę na Macu), czego nie mam w PHP? Jestem programistą małych systemów (średnio 15-30 tabel w bazie relacyjnej).

Jedyne co przy tej skali działalności mogłaby Ci dać zmiana, to możliwość pisania w normalnym języku, a nie obrzydliwej pełna wtfów parodia zwana PHP.

Szczególnie gdy mam tydzień na napisanie systemu, projektuję bazę, odpalam scaffolding i w ciągu 10 minut mam działający prototyp. Na drugi dzień wysyłam klientowi prototyp aplikacji - oczywiście to uproszczenie. Za cholerę nie mogę tego samego powiedzieć o ASP.NET Core.

To się da zrobić w każdej technologii webowej, więc jeśli masz z tym problem, to najwyraźniej kwestia tego, że nie masz po prostu wiedzy i wprawy. Albo próbujesz pisać w nieznanej sobie technologii tak jakbyś to robił w takiej, do której jesteś przyzwyczajony, to też częsty błąd.

Dobry framework PHP załatwia automatycznie walidację danych w modelu, generuje widoki, modele, kontrolery, linki menu. Dosłownie bajka. No i nie ma problemów z bazami innymi niż MS SQL Server

To jak chyba w każdej technologii webowej.

czy hostingiem - działa wszędzie.

Fakt, o hosting ASP.NET jest trudniej. Nakłada się na to mały popyt, ceny licencji Windowsa (w przypadku standardowego ASP.NET) i mała popularność (w przypadku Core).

Jest dostępnych mnóstwo gotowych pluginów, które można podłączyć i działają. I to za darmo. PHP jest na ponad 80% aplikacji w Internecie.

A ile w intranecie? ;)
Ogólnie popularność może być wyjaśnieniem, ale nie argumentem.

Do tego różnorodność frameworków... jest pluralizm, czego w mojej opinii brakuje w NET.

No cóż, to Twoja opinia. Tzn. na pewno w PHP jest więcej frameworków, bo po pierwsze jest starsze, po drugie znacznie więcej ludzi w nim pisze, po trzecie jest znacznie większe zapotrzebowanie, po czwarte jest znacznie więcej sposobów na przykrywanie syfiastego języka frameworkami, ale nie powiedziałbym, że czegoś w .NET brakuje. No chyba, że chciałbyś mieć jakieś porty frameworków PHP.

Druga sprawa - zarobki. Uczelnie generują setki, o ile nie tysiące programistów C#.

Chyba raczej Javy i C++. Niewiele jest uczelni wymagających C# od studentów.

Jest dla Netowców sporo miejsc pracy, ale czy to nie tak, że więcej programistów prędzej czy później przełoży się w końcu na mniejsze zarobki?

O to powinieneś pytać programistów PHP. ;)

super active record w porównaniu do Entity, który mnie totalnie denerwuje.

Akurat active record to antywzorzec łamiący tak podstawowe zasady jak SRP.

Przecież wszystkie te rozwiązania bazują na kodzie pośrednim, po co wiec kompilacja?

No po to, żeby mieć ten kod pośredni?

0

Jak dla mnie .net core jest super. Świetny język. Spójna biblioteka standardowa. Kupa świetnych frameworków od razu w platformie (po co mi wiele frameworków w ogóle do robienia tego samego?), dzięki temu również całe community jest skoncentrowane w jednym miejscu. Nie wiem jak z wydajnością, ale słyszałem że dobra. Jak dla mnie w typowej webdeveloperce .net core mógłby zająć miejsce innych języków (Ruby, Java, PHP, Python).
Z drugiej strony jak widzę coś takiego:

services.AddMvc();

to czuję się jakoś dziwnie :D

0

@theacid:
Ja właściwie .Neta prawie nie używałem, natomiast pisałem zawodowo w PHP, teraz JavaEE/JSF, Angular(2+). Może i bym nie zwracał uwagi na .Net Core gdyby nie Blazor- to jest dla mnie "gejm czendżer".

0

A czy ten Blazor to nie jest taki https://en.wikipedia.org/wiki/Google_Web_Toolkit tyle że napisany w C# zamiast w Javie? Rozwój GWT trochę zwolnił, ale jest oparty na nim https://en.wikipedia.org/wiki/Vaadin

0
Wibowit napisał(a):

A czy ten Blazor to nie jest taki https://en.wikipedia.org/wiki/Google_Web_Toolkit tyle że napisany w C# zamiast w Javie? Rozwój GWT trochę zwolnił, ale jest oparty na nim https://en.wikipedia.org/wiki/Vaadin

No nie wiem, może, chociaż w Blazorze programowanie przypomina bardziej typowe frameworki SPA.

0

Blazor działa całkowicie w przeglądarce tak jak frameworki jsowe, nie ma tam współdzielonego stanu takiego jak w WebFormsach czy jak się domyślam w GWT (nie znam tej technologii, czytałem tylko pobieżnie)

0
Złoty Mleczarz napisał(a):

@theacid:
Ja właściwie .Neta prawie nie używałem, natomiast pisałem zawodowo w PHP, teraz JavaEE/JSF, Angular(2+). Może i bym nie zwracał uwagi na .Net Core gdyby nie Blazor- to jest dla mnie "gejm czendżer".

Skoro już podnieca Cię Blazor to najpierw sprawdź czy w ogóle go wykorzystasz. Patrząc po tym w czym pracujesz śmiem wątpić. To nie jest żaden złoty środek na wszystko, a bardziej zastosowanie do konkretnych celów. Jak potrzebujesz mega wydajności może być dobrym rozwiązaniem, a stosowanie go jako złotego środka na wszystko to nieporozumienie.

0
theacid napisał(a):
Złoty Mleczarz napisał(a):

@theacid:
Ja właściwie .Neta prawie nie używałem, natomiast pisałem zawodowo w PHP, teraz JavaEE/JSF, Angular(2+). Może i bym nie zwracał uwagi na .Net Core gdyby nie Blazor- to jest dla mnie "gejm czendżer".

Skoro już podnieca Cię Blazor to najpierw sprawdź czy w ogóle go wykorzystasz. Patrząc po tym w czym pracujesz śmiem wątpić. To nie jest żaden złoty środek na wszystko, a bardziej zastosowanie do konkretnych celów. Jak potrzebujesz mega wydajności może być dobrym rozwiązaniem, a stosowanie go jako złotego środka na wszystko to nieporozumienie.

Tak, podnieca mnie :) zwłaszcza to że po obu stronach mam ten sam język i nie jest JavaScript (ani TypeScript), i mam wszystko w jednym projekcie w jednym IDE.

0
mad_penguin napisał(a):

Blazor działa całkowicie w przeglądarce tak jak frameworki jsowe, nie ma tam współdzielonego stanu takiego jak w WebFormsach czy jak się domyślam w GWT (nie znam tej technologii, czytałem tylko pobieżnie)

GWT też może działać całkowicie w przeglądarce. Dla przykładu kod Javowy w GWT może być skompilowany do JavaScriptu, a serwerowy interfejs do RPC zaimplementowany np w PHP (chociać może być to dowolny inny język, czyli przede wszystkim Java, ważne by serwer wystawiał końcówki HTTP): http://gwtquickstart.blogspot.com/2009/11/call-php-script-from-gwt.html

1

C# jest bardzo fajnym językiem, a .NET Core i ASP.NET Core od wersji 2.0 w zwyż to już w ogóle baja :)
Lubię też TypeScript i Angular'a i nie widzę powodów by ktoś wyzywał mnie od zombi, tylko z tego powodu, że nie lubi Microsoftu i jego rozwiązań.

0

Przy projekcie "Enterpice" to nie, ale jeśli mowa o "Enterprise" to już jak najbardziej.

0

Z tych enterprajsowych rzeczy to Core nie ma chyba transakcji rozproszonych i SOAP. A tak to przecież "enterprajz" znaczy tyle co kim jest klient docelowy, dla mnie enterprajz to ciągle SOA i ESB.

1

Kiedyś już o tym pisałem, przy większych projektach to nie programista wybiera język programowania czy technologię. Owszem pisząc program dla "Pana Janka" można mu zaproponować aplikację w PHP + MySQL bo np. dostępny jest tani hosting. Przy dużych korporacyjnych projektach jest wiele czynników wpływajacych na wybór technologii i języków oprogramowania zaczynając od tego co już funkcjonuje w firmie. Bo jak są używane np. serwery bazodanowe z MSSQL z licencją na procesor to raczej nik się nie rzuci na MySQL bo za darmo czy tez Oracle bo jest chyba wydajnieszy (oczywiście jak używa się Oracle to raczej nie będzie przesiadki na MSSQL). Jeżeli firma ma doświadczenie w tworzeniu np. aplikacji w Javie to raczej nie wybierze też PHP itd. Ogólnie inna skala, inne pieniądze i inne problemy. Dodatkowo takie firmy jak MS czy Oracle gwarantują wsparcie i rozwój swoich produktów i raczej nie zostawią dużych klientów "na lodzie". Przy rozwiązaniach opensource tworzonych przez grupy entuzjastów (przy całym szacunku dla ich pracy) różnie z tym bywa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1