(Nie wiem, czy dobry dział, ale ten mi się wydawał najodpowiedniejszy)
Dawno mnie tu nie było, ale to nie znaczy, że mnie nie ma
Otwieram ogólny wątek do dyskusji o technologii .Net Core, a w szczególności ASP .Net Core.
Przed Corem do ASP podchodziłem dosyć sceptycznie. Jakoś zawsze to było mułowate i jakieś takie nijakie, więc gdy pojawił się .Net Core, to nie przykuł on zbytnio mojej uwagi, jednak pojeździłem tu i tam, zobaczyłem kilka projektów i wykorzystań Core'a i muszę powiedzieć, że to zap…rawdę działa już całkiem szybko.
Mój następny serwis chciałbym już więc napisać w .Net Core, bo na co dzień pracuję jako .Net Developer i WPF UI Designer, zatem chyba będzie mi się łatwiej w tym odnaleźć niż w jakichś frameworkach PHP-owych.
Jedyny problem jaki mam to brak doświadczenia z ASP .Net Core (a te tutoriale od M$ są jakieś takie…) i nie wiem, jaki projekt odpowiadałby moim potrzebom – MVC, Razer, MVC+Angular, MVC+React…
Są tu jakieś osoby, które miały okazję tworzyć coś w ASP .Net Core i mogły by mi rozjaśnić, czym charakteryzują się poszczególne rozwiązania?
Okej, zasięgnąłem trochę wiedzy i myślę, że mam już jako-takie pojęcie, z czym to się wszystko je, więc napiszę tutaj wyjaśnienie dla potomnych.
[
attachment=14338]
- Empty – jest (jak można się domyślić) pustym projektem ASP.Net Core, do którego możemy sami "dokładać" potrzebne funkcjonalności.
- API – projekt MVC przygotowany z myślą o usługach RESTful. Dopóki takowych nie piszemy, nie będzie nas zbytnio interesować.
- Web Application (Model-View-Controller) – klasyczna aplikacja ASP.Net Core. Technologia opiera się o wzorzec MVC, gdzie główny Kontroler obsługuje żądania HTTP klienta i na jego podstawie wybiera odpowiedni plik *.cshtml, wypełnia go danymi i zwraca do klienta w postaci sparsowanego po stronie serwera statycznego kodu HTML. Dzięki kontrolerowi możemy ręcznie definiować widoki oraz modele, z którymi będziemy je łączyć i w jaki sposób ma to być robione.
- Web Application (Razor Pages) – jest tak naprawdę uproszczoną formą klasycznej aplikacji ASP.Net Core. Charakteryzuje się tym, że nie mamy tutaj jawnie zdefiniowanego kontrolera – wszystko działa w tle na prostej zasadzie traktowania treści żądania GET jako nazwy strony do wyszukania i wyświetlenia, bez potrzeby ręcznej deklaracji widoków.
Powyższe dwa projekty są projektami aplikacji wielostronicowych (MPA), czyli innymi słowy – klasycznych stron internetowych, gdzie cała magia tworzenia i wypełniania kodu HTML danymi dzieje się po stronie serwera. Są to rozwiązania odpowiednie dla projektów, których głównym atrybutem jest prezentowana treść.
Jeśli jednak chcemy pisać aplikację internetową, w której najważniejsza będzie jednak płynność interakcji z użytkownikiem, najlepiej będzie rozważyć jakieś rozwiązanie SPA oparte na JavaScript-cie, jak Angular, Ember.JS, React, Vue i wiele innych, które pojawiają się szybciej niż można to ogarnąć… Jeśli ktoś, tak jak ja, przez ostatnie lata żył gdzieś w jaskini i nie interesował się tymi wszystkimi trendami, poniżej będzie względnie łopatologiczne wyjaśnienie. W .Net Core mamy dostępne gotowce dla dwóch z tych rozwiązań:
- Angular – gotowy projekt aplikacji ASP z wykorzystaniem stworzonego przez Google Frameworka AngularJS. Rzeczami odróżniającymi go od React.js są sposób budowania strony po stronie klienta (Angular przeładowuje całe drzewo DOM), dwustronne wiązanie danych (data binding), całkowitość rozwiązania (Angular jest kompletnym frameworkiem, podczas gdy React.js jedynie biblioteką, którą zazwyczaj wzbogaca się innymi współpracującymi z nią bibliotekami) oraz domyślnym językiem pisania aplikacji – zalecany jest tutaj TypeScript, który jest silnie typowaną odmianą JavaScripta, jednak nie jest on wymuszony i można w Angularze wykorzystywać również normalny JS lub ECMAScript 6 (JS 6) skompilowany przy użyciu biblioteki Babel.
- React.js – gotowy projekt aplikacji ASP z wykorzystaniem rozwijanej przez Facebooka biblioteki React. Od Angulara odróżnia ją porównywanie wyświetlonego u użytkownika drzewa DOM z nowym i aktualizacja jedynie fragmentów, które uległy zmianie, jednokierunkowe wiązanie danych w kierunku serwer->klient (odczytu danych dokonujemy przy użyciu zdarzeń, chociaż istnieją fiflaki do uzyskania wiązań dwustronnych w React-cie), lekkość (React jest jedynie biblioteką, więc jest lżejszy od Angulara, ale z drugiej strony potrzebuje często wspomagania innymi bibliotekami jak Redux, Router, itd…). Tutaj również mamy wsparcie dla ES6 przy wsparciu biblioteki Babel.
- React.js and Redux – to, co wyżej, ale do Reacta od razu mamy dorzuconą bibliotekę Redux, która odpowiada za przechowywanie i zarządzanie stanami aplikacji.
Warto tutaj nadmienić, że oczywiście nie jesteśmy ograniczeni powyższymi projektami. Jeśli nie boimy się trochę popisać w konsoli, to możemy sobie np. samodzielnie utworzyć projekt z wykorzystaniem Angulara, ale zamiast na MVC, to oparty na Razor Pages lub do bazowego projektu MVC dograć sobie jakąkolwiek inną bibliotekę/framework JS-owe do tworzenia rozwiązań SPA.
W przyszłości może napiszę kolejny, dłuższy post o samym pisaniu w ASP.Net Core, bo dla wielu ta technologia brzmi jak jakieś egzotyczne rozwiązanie dla starych dziadów, z którego nikt szanujący się nie jest w stanie korzystać