Software Development

MVC vNext – co nowego?

Kwiecień 13, 2016 4
Podziel się:

Czym jest ASP.NET? Myślę, że nikomu nie trzeba tłumaczyć. Po niespełna 15 latach od ukazania się pierwszej wersji ASP.NET 1.0 w wersji preview, wielkimi krokami zaczyna zbliżać się nowe wydanie – ASP.NET 5. Najnowsza wersja popularnego framework’a do tworzenia aplikacji internetowych ma być przede wszystkim szczuplejsza, mniej złożona, międzyplatformowa oraz zoptymalizowana pod kątem chmury.

ASP.NET 5 jest nowoczesnym, open source’owym frameworkiem, pozwalającym na budowanie, a także uruchamianie nowoczesnych aplikacji internetowych na platformach Windows, Linux oraz Mac. W jego skład wchodzi MVC 6, które skupia w sobie cechy zarówno samego MVC jak i Web API.

Tak jak wspomniałem na początku artykułu, w ASP.NET 5 zostało wprowadzonych szereg zmian mających na celu uszczuplenie samego framework’a. Oznacza to, że do działania nie jest już wymagane używanie System.Web.dll. Kolejną dużą zmianą jest większa modułowość, ma to na celu przede wszystkim pozwolenie programiście na większe zoptymalizowanie tworzonej aplikacji tak, aby wykorzystywała tylko te moduły, których rzeczywiście potrzebuje (ma w tym pomóc to, że prawie wszystkie funkcje zostały zaimplementowane jako pakiety NuGet).

Głównymi usprawnieniami, które wprowadzi ze sobą ASP.NET 5 są:

  • Budowanie oraz uruchamianie międzyplatformowych aplikacji internetowych wykorzystujących ASP.NET w środowiskach Windows, Mac oraz Linux
  • Tworzenie w oparciu o .NET Core
  • Nowe narzędzia, które ułatwiają tworzenie nowoczesnych aplikacji internetowych
  • Połączenie MVC, Web API oraz Web Pages w jeden model programowania
  • Optymalizacja pod kątem korzystania z chmury
  • Zintegrowane wsparcie dla tworzenia i używania pakietów NuGet
  • Wbudowane wsparcie dla Dependency Injection
  • Dodana możliwość hostowania aplikacji w jej własnym procesie lub tak jak dotychczas za pomocą IIS

Wieloplatformowe środowisko uruchomieniowe

 ASP.NET 5 może pracować w dwóch środowiskach uruchomieniowych, są nimi:

  • .NET Core – nowe, modularne, wieloplatformowe środowisko uruchomieniowe o niewielkich rozmiarach, pozwalające na uruchamianie naszej aplikacji na wielu platformach (Windows, Linux, Mac OS X). Dodatkowym atutem .NET Core jest to, że tworzona przez nas aplikacja będzie zależna tylko i wyłącznie od funkcji, które wykorzystuje. Oznacza to, ze nigdy nie będziemy proszeni o zaktualizowanie, bądź obsługę funkcji środowiska uruchomieniowego, której nasza aplikacja nie wykorzystuje. Pozwoli to na zaoszczędzenie czasu potrzebnego na testowanie, czy też wdrażanie aktualizacji. Możemy również wdrożyć środowisko .NET Core razem z naszą aplikacją, a co za tym idzie, nasza aplikacja będzie działała na wdrożonym przez nas środowisku, a nie na tym, które jest zainstalowane na maszynie (hoście). W takim wypadku wersja naszego środowiska uruchomieniowego będzie działała równoległe z wersjami dla innych aplikacji. Niesie to za sobą pewne korzyści. Jedną z nich jest to, iż w razie potrzeby zaktualizowania naszego środowiska, jesteśmy w stanie przeprowadzić ją bez wpływania na inne hostowane na tej maszynie aplikacje. Działa to również w drugą stronę, jeśli zdarzy się aktualizacja środowiska uruchomieniowego zainstalowanego na maszynie, wtedy nie wpłynie ona na naszą aplikację.
  • .NET Framework – obecne API .NET Core jest bardziej ograniczone niż pełna wersja .NET Framework’a. Jeśli chcielibyśmy przeportować naszą istniejącą aplikację by korzystała z .NET Core, prawdopodobnie wiązałoby się to z przymusem wykonania w niej kilku modyfikacji. Takie rozwiązanie może oczywiście nie wszystkim odpowiadać, w takim wypadku można oczywiście uruchamiać aplikacje wykorzystujące ASP.NET 5 na pełnej wersji .NET Frameworka (wersje od 4.5.2 wzwyż) wtedy nasza istniejąca już aplikacja nie będzie wymagała żadnych zmian.

 

MVC 6 – jeden model programowania

MVC, Web API oraz Web Pages w poprzednich wydaniach ASP.NET były zaimplementowane oddzielnie, problemem tego typu rozwiązania było to, że posiadały sporo duplikatów i niespójności. W MVC 6, framework’i te zostały połączone w jeden model programowania.

Dodatkowo w MVC 6 została dodana nowość, która kryje się pod nazwą: Tag Helpers. Tag Helpers pozwalają na użycie HTML helper’ów w widokach poprzez proste rozszerzenie semantyki znaczników w znacznikach. Przykładowo, zamiast pisać:

<div class="form-group">
   @Html.LabelFor(x => x.CarModel, new { @class = "col-md-2 control-label" })
   <div class="col-md-10">
      @Html.TextBoxFor(x => x.CarModel, new { @class = "form-control" })
      @Html.ValidationMessageFor(x => x.CarModel, "", new { @class = "text-danger" })
   </div>

</div>

Można napisać:

<div asp-validation-summary="ModelOnly" class="text-danger"></div>

<div class="form-group">
   <label asp-for="CarModel" class="col-md-2 control-label"></label>
   <div class="col-md-10">
      <input asp-for="CarModel" class="form-control" />;
      <span asp-validation-for="CarModel" class="text-danger"></span>
   </div>

</div>

Tag Helper’y dodatkowo jak można zauważyć powyżej, wpływają przede wszystkich na ujednolicenie i czytelność kodu.

 

Nowoczesne tworzenie aplikacji internetowych

Jedną z nowości, jakie znajdziemy w Visual Studio 2015, jest dynamiczna kompilacja, ma ona wpłynąć głównie na sprawną pracę programistów. Polega ona na tym, że nie będzie potrzeby ponownej kompilacji po każdej zmianie w aplikacji. Działać to będzie w ten sposób, że wystarczy abyśmy zrobili zmianę w kodzie, zapisali zmiany, a następnie odświeżyli stronę w przeglądarce, w celu zobaczenia zmian.

Kolejnym udogodnieniem, które zostało dodane, to wbudowane wsparcie dla Bower’a, Gunt’a i Gulp’a – popularnych open source’owych narzędzi do wytwarzania aplikacji internetowych w Visual Studio 2015.

W ASP.NET 5 mamy możliwość zarządzania zależnościami poprzez dodawanie pakietów NuGet. Można do tego celu użyć NuGet Package Manager’a lub po prostu edytować plik JSON (project.json), w którym przechowywana będzie lista pakietów NuGet oraz ich wersje.

ASP.NET 5 eliminuje potrzebę przechowywania danych konfiguracyjnych w pliku Web.config. Rozwiązanie to ma na celu uproszczenie wdrażania aplikacji w chmurze. Nowy system konfiguracyjny pozwala odczytywać konfigurację z różnych źródeł, mogą być to pliki JSON, XML albo zmienne środowiskowe. To, z jakiego źródła będziemy odczytywali konfigurację dla naszej aplikacji definiować możemy w pliku Startup.cs.

Na koniec, chciałbym wspomnieć również o tym, że najnowsza wersja ASP.NET posiada wbudowany kontener dla Dependency Injection. Oczywiście, nic nie stoi na przeszkodzie, aby wybrać i korzystać ze swojego ulubionego kontenera (Autofac, Ninject, itd.).

W tym artykule skupiłem się przede wszystkim na nowościach, które według mnie są najważniejsze i przełomowe dla platformy ASP.NET. Zachęcam również wszystkich do zgłębiania tematu ASP.NET 5.

5 / 5
Tagi: , , ,
Norbert Pietroń
Autor: Norbert Pietroń
Zawodowo .NET Developer odpowiedzialny za tworzenie, rozwój oraz wsparcie aplikacji. Prywatnie fan koszykówki, ligi zawodowej NBA oraz Arsenalu Londyn.

Imię i nazwisko (wymagane)

Adres email (wymagane)

Temat

Treść wiadomości

komentarze(4)

avatar'
Piotr Stola
13 kwietnia 2016 Odpowiedz

Hmm, lista nowości ok, konwencja nazewnictwa już nie taka aktualna ;)
ASP.NET 5 IS DEAD by SCOTT HANSELMAN
http://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx

avatar'
Dorian Sobacki
13 kwietnia 2016 Odpowiedz

Nie ma czegoś takiego jak ASP.NET 5. Proszę, nie wprowadzaj ludzi w błąd.
http://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx

avatar'
PCC
14 kwietnia 2016 Odpowiedz

Może nowe ASP.NET 5 oprócz usprawnienia pracy programistów poprawi komfort użytkowania aplikacji opartych na tym środowisku.

Norbert Pietroń
14 kwietnia 2016 Odpowiedz

Rzeczywiście nazewnictwo się zmieniło z ASP.NET 5 na ASP.NET Core 1.0.

Zostaw komentarz