Między .NET Framework a .NET Core – otwierając kod Microsoft otwiera drzwi do piekła DLL

Między .NET Framework a .NET Core – otwierając kod Microsoft otwiera drzwi do piekła DLL07.12.2014 15:40

Zapowiedź uwolnienia frameworka .NET, wraz z wydaniem jegooficjalnej wersji na Linuksa i OS X, zaskoczyła chyba wszystkich. Zprzedstawianych początkowo informacji trudno było jednakwywnioskować, jaki kształt przyjmie opensource'owa wersja taklubianego przez programistów środowiska. Sporo w tej kwestiirozjaśnił wpisImmo Landwertha, menedżera Microsoftu odpowiedzialnego za toprzedsięwzięcie.

Przypomnijmy: fundamentem .NET-u jest środowisko uruchomienioweCLR (Common Language Runtime), w którym uruchamiany jest kod pisanyw językach takich jak C#, Visual Basic czy IronPython. Do tegodochodzi zestaw bibliotek programistycznych, na czele z zawierającąstandardowe typy i funkcje BCL (Base Class Library), oraz zbudowanychna nich frameworków, takich jak desktopowe Windows Forms czyserwerowe ASP.NET.

Potrzeba wprowadzenia .NET na nowe platformy, np. mobilne (WindowsPhone) czy przeglądarkowe (Silverlight) doprowadziła do powstanianiekompatybilnych ze sobą wersji .NET. Z czasem problem siępogarszał, tak że kod pisany dla Windows Phone 7 okazał się byćniekompatybilny z Windows Phone 8. Do pewnego stopnia producentpróbował rozwiązać to wprowadzeniem tzw. PCL (Portable ClassLibraries), zawierających tylko te klasy .NET, które działają nawybranym zbiorze platform. Było to jednak rozwiązanie tymczasowe, wpraktyce bowiem nie zapewnia ono kompatybilności, lecz jedynieuniemożliwia wywołanie interfejsów, które mogłyby uczynić kodniekompatybilnym.

Następną próbą były Universal Apps, zaprezentowane nategorocznej konferencji BUILD – ale i one nie gwarantowałyzgodności, a jedynie możliwość zapakowania do aplikacjispecyficznego dla danej platformy kodu. Uzyskiwaliśmy kompatybilnośćaplikacji z perspektywy użytkowników, ale nie z perspektywyprogramistów, których skazywano na dodatkową pracę.

Pełen .NET Framework wciąż tylko na Windows
Pełen .NET Framework wciąż tylko na Windows

Przełomem w tej sprawie ma być .NET Core, czyli zmodularyzowanawersja .NET Frameworku. Zawiera on Base Class Library wspólną dlawszystkich platform (nie tylko microsoftowych, ale też dla Linuksa iOS X), mimo skrajnych często nawet różnic między nimi. Wspólnedla wszystkich platform są też kompilatory i środowiskouruchomieniowe, wykorzystujące m.in. nowe optymalizacjeJust-in-Time. Drobne różnice zaczynają się na poziomie stykuimplementacji z rdzeniem. Obecnie gotowe są dwie takieimplementacje, dla .NET Native (czyli kompilowalnych do natywnegokodu aplikacji .NET rozpowszechnianych przez Windows Store) i ASP.NET5 (czyli aplikacji serwerowych). Dodają one po prostu interfejsyspecyficzne dla danego zastosowania – np. .NET Native ma APIzapewniające interoperacyjność z WinRT, zaś ASP.NET 5 API służącedo obsługi wzorców projektowych MVC.

Najciekawszy w .NET Core wydaje się być nowy model wdrażaniaaplikacji. Biblioteki będą dostarczane jako pakiety NuGet, znanedobrze programistom korzystającym z Visual Studio – służą onedo importowania kodu .NET do projektów. Zamiast instalować ogólnyzbiór bibliotek na poziomie systemu, często niekompatybilnych zaplikacją potrzebną użytkownikowi, aplikacjom będzie towarzyszyłotylko to, czego potrzebują. Skończy się konieczność instalowania.NET Frameworka przez użytkowników.

Nie do końca jednak wiadomo jeszcze, jak Microsoft chce sobieporadzić z ewentualnymi problemami z bezpieczeństwem – co robić,jeśli poszczególne pakiety NuGet będą zawierały luki? Oddzielnezaś ich aktualizowanie może doprowadzić do niekompatybilnościposzczególnych komponentów. Póki co Redmond obiecuje przygotowaniecztery razy w roku takich całościowych wydań .NET Core,testowanych pod kątem kompatybilności pakietów. Cynicy już mówiąjednak o tym, że doczekamy się powtórki z historii, znanej pewniestarszym czytelnikom jako PiekłoDLL – aplikacje będą żądały bibliotek A, B i C wkonkretnych wersjach, ale biblioteka B niezbędna do działaniabiblioteki C może nie być zgodna z biblioteką C.

Zamiast monolitycznego frameworku dużo małych, wersjonowanych bibliotek
Zamiast monolitycznego frameworku dużo małych, wersjonowanych bibliotek

A co z klasycznym .NET Frameworkiem? Z tego co Landwerth pisze,wygląda na to, że powoli odchodzi do lamusa, przynajmniej naserwerach. Póki co .NET Core w ma być podzbiorem .NET Frameworka,nie będzie tu żadnych różnic, ale z czasem .NET Core zacznie byćaktualizowany szybciej niż .NET Framework, tak że w pewnym momenciepojawią się funkcjonalności dostępne wyłącznie w .NET Core. Taksamo na razie aplikacje desktopowe, pisane pod WPF (WindowsPresentation Foundation) wciąż jednak będą korzystały z .NETFrameworka. W razie gdyby doszło do konieczności współdzieleniakodu między oprogramowaniem desktopowym, mobilnym i serwerowym,Microsoft obiecuje dostarczyć niezbędne biblioteki PCL.

Z kolei jednak aplikacje .NET Native, jakie mają zdominowaćWindows Store nie będą współpracowały z .NET Frameworkiem, gdyżjest on niewystarczająco modularny. Dołóżmy do tego jeszczezapowiadane oficjalne wsparcie dla Mono – niezależnejimplementacji .NET dla uniksopodobnych systemów – i widać, że toco miało ułatwić życie programistom może równie dobrze ichzdezorientować.

Jeśli to ma tak wyglądać, to zadajemy sobie pytanie, jaki jestfaktyczny cel tego wszystkiego. Nowy modularny .NET będzie dalekomniej interoperacyjny niż Java, wciąż jego wyróżnionym,najlepszym środowiskiem będzie Windows. Widać jeszcze pewien senstworzenia .NET Core dla Linuksa, ale jaki jest sens pisania go dlaMaka, skoro OS X praktycznie w ogóle nie jest wykorzystywany jakosystem serwerowy? Desktopowych aplikacji pisanych w .NET Frameworkudla Windows i tak się na Makach z .NET Core przecież nie uruchomi.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.