Możesz skomentować ten wpis w serwisach społecznościowych: Linkedin (przejdź) lub Facebook (przejdź).
Na ścieżce rozwoju każdej osoby, która chce się zająć programowaniem, pojawia się w pewnym momencie kwestia wyboru technologii, z której chciałaby korzystać.
Do najbardziej popularnych języków programowania należą te obiektowe. Wśród nich zaś prym wiodą Java i C#.
Po pierwszym kontakcie z w.w. technologiami odniosłem wrażenie: Java i C# są jak Coca-Cola i Pepsi. Tylko koneserzy rozpoznają różnice. 😉
W ramach swojej pracy dyplomowej podjąłem się porównania dwóch popularnych frameworków stworzonych na bazie każdego z tych języków, a mianowicie Spring Framework i ASP.NET Core.
Springa po raz pierwszy opublikowano 1 października 2002 roku (źródło), a obecnie jest już dostępna piąta wersja tego środowiska. Miał być alternatywą dla stosowanej wcześniej technologii Enterprise Java Beans, która dla tworzenia małych aplikacji wymagała podobnego nakładu pracy jak dla aplikacji dużej. Obsługuje zasadę „odwrócenia sterowania” (Inversion of Control) i „wstrzykiwania zależności” (Dependency Injection), które pozwalają na sterowanie aplikacją (np. konstruowanie zapytań HTTP) z poziomu frameworka – programista jedynie dokonuje odpowiedniej konfiguracji. W przypadku wykorzystania Spring Boot także i to nie jest konieczne (istnieje zestaw konfiguracji domyślnych), ale o tym innym razem. Możliwe jest także przekazywanie zależności przy pomocy gotowych instancji obiektów, jako argument konstruktora albo poprzez przypisanie własciwości (pola) danego obiektu w postaci metody setter. Dzięki tej funkcjonalności można przygotować kilka implementacji tego samego interfejsu, a programista korzystający z takiego rozwiązania może wybrać preferowaną implementację lub też napisać własną (wzorzec projektowy „most„).
Spring posiada wiele modułów. Podstawowa część frameworka zgrupowana jest w module Spring Core, Spring Web i Spring Web MVC zapewnia warstwę do obsługi aplikacji sieciowych, Spring Security obejmuje kontrolę dostępu do zasobów i kwestie uwierzytelniania. Są też moduły odpowiedzialne za komunikację z bazami danych, np. Spring DAO, Spring Data, Spring ORM czy Spring Hibernate, jak również Spring Cloud, zapewniający wsparcie dla komunikacji z platformami chmurowymi.
Często stosowanym rozwiązaniem jest Spring Boot, posiadający zestaw gotowych konfiguracji Springa, a także wbudowany serwer do uruchamiania aplikacji.
Pierwsza wersja ASP.NET także została opublikowana w 2002 roku (5 stycznia), (żródło) a jego korzenie sięgają 2000 roku i projektu ASP+. (źródło) Jednak przez wiele lat było to oprogramowanie o zamkniętym kodzie źródłowym, a jego w pełni sprawne wykonywanie możliwe było jedynie w systemach operacyjnych Windows. Powstało wprawdzie Mono – implementacja .NET na systemy Linuxowe, jednak nie posiada ona pełnej zgodności i pojawiają się błędy w działaniu.
Dopiero w 2016 roku opublikowano pierwszą wersję ASP.NET Core, umożliwiającej działanie na różnych systemach operacyjnych, także Linuxowych. Przy okazji jej stworzenia, Microsoft przebudował środowisko, usuwając część bibliotek, które były przestarzałe lub używały funkcji specyficznych dla platformy systemowej Windows. Od czasu powstania wersji Core, kod źródłowy frameworka jest dostępny publicznie na platformie Github, co wg mnie jest bardzo ważną zmianą, pozwalającą na pełniejsze badanie, dlaczego system działa w taki a nie inny sposób. Powstał także .NET Core CLI, umożliwiający obsługę z linii poleceń (konsoli systemowej), m.in. kompilację kodu i uruchamianie aplikacji.
W przeciwieństwie do Springa, jest to rozwiązanie stworzone i polecane przez producenta języka C#, podczas gdy Spring jest rozwiązaniem alternatywnym.
W dalszej części pracy dyplomowej porównywałem kolejne elementy aplikacji sieciowej, m.in. kontrolery, warstwę dostępu do danych, kwestię uwierzytelniania i autoryzacji i inne, sprawdzając jak dane rzeczy robi się w Springu, a jak w ASP.NET, jakie możliwości są dostępne. Czasami poszukiwałem dodatkowych bibliotek wspierających dane funkcjonalności. Zdarzała się także analiza wybranych fragmentów kodu źródłowego samych frameworków.
Najciekawsze elementy będą stopniowo publikowane na niniejszej stronie internetowej.
Możesz skomentować ten wpis w serwisach społecznościowych: Linkedin (przejdź) lub Facebook (przejdź).