Podczas ostatniego Microsoft Build zaanonsowano powstanie dwóch nowych pojęć. Mowa tu o .Net Standard 2.0 i XAML Standard 1.0.
.Net Standard obecny był już od jakiegoś czasu a obecnie anonsowana jego wersja 2.0 ma zapewnić bardziej rozbudowany zakres API wspólnego dla wszystkich wspieranych przez .Net platform. Nie będę się tutaj rozwodził nad zakresem możliwości jakie daje .Net Standard 2.0. Zainteresowanych odsyłam do tego blog post-a na MSDN.
Zaproponowany XAML Standard jest zupełną nowością. XAML jest opartym na XML-u językiem definiowania interfejsu użytkownika. Pojawił się on w technologiach .Net-owych wraz z pojawieniem się WPF, które miało zastąpić wcześniejszą technologię – Windows Forms.
Jak dobrze wiemy Forms-y żyją do dzisiaj i mają się całkiem nieżle. Nadal są technologią bardzo często wybieraną przy tworzeniu aplikacji desktopowych. Jest to szczerze mówiąc trochę dziwne, biorąc pod uwagę możliwości jakie daje WPF, ale być może po prostu łatwiej jest „sklikać” interfejs w designerze niż przygotować go za pomocą XAML-a. O Formsach nie zapomniał również sam Microsoft, dodając niedawno wsparcie hi-dpi dla Windows Forms
Wróćmy jednak do tematu. XAML-a obecnie spotkamy w WPF, w UWP, w Xamarin Forms oraz w Silverlight, chociaż ta ostatnia technologia jest już w zasadzie martwa. Każdy z tych XAML-owych targetów używa innego zestawu kontrolek, innego zestawu parametrów i nieco innych mechanizmów. O ile inne zestawy kontrolek są zrozumiałe – mamy przecież do czynienia z różnymi platformami, to inne funkcjonowanie części mechanizmów lub ich brak na niektórych platformach jest trochę trudny do zrozumienia.
Zdecydowanie najbardziej rozwinięty XAML spotkamy w WPF. Programista WPF nie będzie czuł się zupełnie obco tworząc interfejs np. w Xamarin Forms, ale napotka kilka problemów. Wspominałem o tym w jednym z wcześniejszych postów.
Sama idea standaryzacji jest świetna. Tworząc jakiś czas temu aplikację własnie w Xamarin Forms bardzo żałowałem, że nie ma jakiegoś większego stopnia ujednolicenia. Jestem w stanie sobie wyobrazić wspólny XAML, który pozwoli może nie koniecznie przenosić aplikacje pomiędzy platformami tylko kompilując pod inny target (przy zachowaniu .Net Standard) ale pozwoli programiście dużo łatwiej poruszać się pomiędzy platformami. Wdrożenie i poznanie obu tych standardów spowoduje że programista desktop będzie praktycznie z marszu programistą mobilnym i odwrotnie (oczywiście do pewnego tylko stopnia, pewne specyficzne dla platfrom kwestie nadal trzeba będzie z pewnością rozwiązywać na poziomie platformy – nie spodziewam się, żeby Apple, Microsoft i Google kiedykolwiek próbowali się dogadywać odnośnine standaryzacji mechanizmów stosowanych w swoich systemach desktopowych i mobilnych).
Na chwilę obecną XAML Standard jest w powijakach. Na github znajdziemy listę propozycji tego, co mogłoby być częścią standardu otwartą do dyskusji. Znajdziemy draft zawierający wstępne propozycje. Znajdziemy też pierwszy milestone zawierający zaakceptowane propozycje.
Fajnie, że tematyka tej standaryzacji jest dyskutowana w community ale wydaje mi się, że sprawa nie nabrała jeszcze wystarczającego rozpędu. Miejmy nadzieję, że wkrótce przyspieszy i zestandaryzowany XAML stanie się popularny i szeroko wykorzystywany. Fajny byłby np. Xaml-owy wrapper dla jakiegoś frameworka Javascript + Bootstrap. Opisanie za jego pomocą interfejsu webowego i „zbindowanie” go z backendem mogłoby być bardzo ciekawe.
Ostatnie lata to bardzo duży podział specjalizacji jeżeli chodzi o programistów. Główną przyczyną oczywiście jest złożoność i skrajna różnorodność technologii dla platform. Być może wprowadzenie standaryzacji jest pierwszym krokiem do tego aby ten podział zacierać.
Jedno jest pewne. Jeżeli tylko te idee nie stracą swojego rozpędu to czekają nas ciekawe czasy. Nie mogę się tego doczekać 🙂