Tworzenie aplikacji na uniwersalną platformę windows. Pojęcie platformy oprogramowania. Przechowywanie ustawień aplikacji i praca z plikami
Biblioteka programisty
„Bardzo ważne jest, aby nie przerywać pytań. Ciekawość ma prawo istnieć
Alberta Einsteina
37. Platformy z rodziny Windows
W tej sekcji wykorzystano materiały z książki: Jeffrey Richter. Windows for Professionals (programowanie w Win32 API dla Windows NT i Windows 95) / Per. z angielskiego. - M .: Dział wydawniczy „Wydanie rosyjskie” LLP „Channel Trading Ltd.”, 1995. - 720s. (Wydanie oryginalne - 1995)
Win32 API. Programistom oferowane są systemy operacyjne Windows w różnych wersjach programy użytkowe(dla programistów) tzw. Win32 API (interfejs programowania aplikacji). API to zbiór funkcji, do których aplikacja może uzyskać dostęp.
Win32 API jest zaimplementowany na trzech platformach: Win32s, Windows NT (Windows 2000) i Windows 95. Pierwotnym celem Microsoftu było zaimplementowanie API (tj. całej jego funkcjonalności) na wszystkich trzech platformach. W tym przypadku aplikację stworzoną na dowolną platformę można by po prostu przenieść na inną platformę: wystarczyłoby ją ponownie skompilować na inną platformę. W rzeczywistości jednak to marzenie nie zostało w pełni zrealizowane, w wyniku czego pomiędzy trzema wymienionymi platformami występują dość znaczne różnice, które zawężają możliwości przenoszenia aplikacji z jednej platformy na drugą.
Platforma Win32 była pierwszą platformą zdolną do uruchamiania aplikacji 32-bitowych. Składa się z zestawu dynamicznie dołączanych bibliotek (plików dll) i sterownika urządzenia wirtualnego (sterownik urządzenia wirtualnego). Zestaw ten służy jako dodatek do 16-bitowych systemów Windows 3.x. Tak więc Win32s jest tylko dodatkiem do systemu Windows 3.x. Ten dodatek konwertuje 32-bitowe parametry funkcji na 16-bitowe i wywołuje odpowiednie funkcje systemu Windows 3.x.
W Win32 większość funkcji Win32 jest po prostu zaimplementowana jako "zaczątki": kiedy są wywoływane, sterowanie powraca bez robienia czegokolwiek. Na przykład, ponieważ 16-bitowy system Windows nie obsługuje wątków, funkcja CreateThread zwróci wskaźnik null. Jednak Win32s wprowadził pewne funkcje nieobsługiwane przez Windows 3.x. Należą do nich na przykład pliki mapowane w pamięci i strukturalna obsługa wyjątków.
Celem rozwoju Win32s było zachęcenie programistów do tworzenia aplikacji 32-bitowych, tak aby aplikacje 32-bitowe były już na rynku przed wydaniem platformy Windows NT. Ten cel niestety nigdy nie został osiągnięty, ponieważ Win32s nie był zbyt udany.
Platforma Windows NT to kompletny system operacyjny, który w pełni obsługuje funkcje Win32. Jest to stosunkowo nowy system operacyjny i nie jest obciążony systemem MS DOS. Microsoft stawia na ten konkretny system operacyjny. To prawda, że platforma Windows NT stawia wysokie wymagania sprzęt komputerowy komputera, przede wszystkim do ilości pamięci RAM i dysku twardego.
Platforma Windows NT ma wiele zalet w porównaniu z pozostałymi dwiema platformami.
Po pierwsze, aplikacje 32-bitowe są dla niego natywne i mogą działać najefektywniej dzięki API Win32. Tutaj również należy zwrócić uwagę na wysoką stabilność platformy w stosunku do nieuniknionych awarii w działaniu aplikacji.
Po drugie, Windows NT może uruchamiać (jednocześnie) kilka różnych typów aplikacji zaprojektowanych dla MS DOS, OS/2, POSIX, Presentation Manager i Windows 3.x.
Po trzecie, Windows NT jest jedynym przenośnym z rozważanych platform, czyli tzw. jest w stanie pracować na maszynach z różne rodzaje procesory. Ponieważ większość Kod systemu Windows NT jest napisany w C i C++, następnie aby przenieść go na komputer z innym (nie-Intel) typem procesora - MIPS R4000, DEC Alpha lub Motorola PowerPC - wystarczy przekompilować kod źródłowy za pomocą kompilatora natywnego dla procesora. Oczywiście w rzeczywistości przejście na inny typ komputera jest nieco bardziej skomplikowane, ponieważ wymaga przepisania dwóch niskopoziomowych komponentów systemu: jądra (Kernel) oraz tzw. warstwy abstrakcji ze sprzętu komputerowego (Hardware Abstraction). Poziom - HAL). Te komponenty są napisane głównie w odpowiedniej wersji asemblera i są bardzo specyficzne dla konkretnego procesora. Aby aplikacje napisane dla systemu Windows NT działały na innym komputerze, wystarczy je ponownie skompilować.
Tak więc, jeśli zamierzasz używać opracowanej aplikacji na komputerach z różnymi typami procesorów, to musi być ona opracowana na platformę Windows NT.
I wreszcie, po czwarte, Windows NT jest jedyną omawianą platformą, która może działać na komputerze wieloprocesorowym i naprawdę wykorzysta jego unikalne możliwości. Na przykład, jeśli komputer ma 30 procesorów, system Windows NT pozwoli na jednoczesne działanie do 30 wątków. (Sequent opracował system komputerowy z 30 procesorami Intel.)
Platforma Windows 95- To najnowszy system operacyjny, który wypełnia bardzo obszerną niszę na rynku dla komputerów klasy Intel 386 i wyższej z 4 lub więcej megabajtami pamięci RAM. Powód wydania Windows 95 jest po prostu przesadnie wysoki Wymagania dotyczące systemu Windows NT do właściwości komputera.
Aby system Windows 95 działał na maszynach z 4 MB pamięci, firma Microsoft wycięła niektóre funkcje API Win32. W rezultacie system Windows 95 nie obsługuje w pełni niektórych funkcji API Win32, takich jak asynchroniczne operacje we/wy plików, debugowanie, logowanie, zabezpieczenia itp. Funkcje te są zaimplementowane, ale nie w pełni. Jednak Windows 95 obsługuje większość interfejsów API Win32 i jest najpopularniejszą platformą.
Tak więc, z trzech rozważanych platform, tylko Windows NT i Windows 95 powinny być poważnie rozważane w tym momencie, ponieważ platforma Win32s nie obsługuje w rzeczywistości większości funkcji Win32 API.
Jest jeszcze jedna różnica między platformami Windows 95 i Windows NT, na którą należy zwrócić uwagę. Windows 95 dodał szereg nowych funkcji do Win32 API, aby obsługiwać modemy, dokładniejsze odwzorowanie kolorów i inne usługi. Ale Windows NT (przynajmniej wersja 3.5) w ogóle nie ma tych funkcji. Dlatego przy tworzeniu programów należy pamiętać, że niektóre funkcje interfejsu Win32 API istnieją na jednej platformie, a na innej są zupełnie nieobecne. Jest to tym bardziej niefortunne, że platforma Windows NT, zgodnie z planem Microsoftu, powinna obsługiwać wszystkie funkcje Win32 API.
Pełną listę różnic w implementacji platformy Win32 w różnych wersjach systemu Windows można znaleźć w sekcji „Różnice między platformami” w pliku pomocy ProgTech.hlp.
Windows NT 3.5 ma wbudowane możliwości graficzne grafika 3D API OpenGL. OpenGL to niezależna od systemu operacyjnego, branżowa biblioteka graficzna opracowana przez Silicon Graphics dla swoich stacji roboczych. OpenGL jest obecnie uznawany przez Radę Przeglądu Architektury, w skład której wchodzą takie firmy, jak DEC, IBM, Intel, Microsoft i Silicon Graphics. Technologia OpenGL została licencjonowana przez Microsoft, aby zapewnić ten potężny 32-bitowy interfejs API Użytkownicy Windows NT. Zaawansowane funkcje tej biblioteki są wymagane, gdy wymagana jest wizualizacja dużych projektów i danych. Typowe aplikacje wymagające jego użycia to CAD, systemy projektowania mechanicznego i przemysłowego, programy do analizy statystycznej i naukowej.
Ostatnia aktualizacja: 04/12/2017
UWP (uniwersalna platforma Windows) to ujednolicona platforma do tworzenia i uruchamiania aplikacji w systemach Windows 10 i Windows 10 Mobile.
UWP jest wynikiem foliacji wcześniejszych technologii. Tak, z Wydanie systemu Windows 8 wprowadzono nową platformę architektoniczną dla aplikacji - Windows Runtime (WinRT), która umożliwiała uruchamianie aplikacji w tzw. trybie Modern (Metro) na komputerach stacjonarnych i tabletach. Następnie wraz z wydaniem Windows 8.1 i Telefon Windows 8.1, ta technologia została opracowana - istniały "aplikacje uniwersalne", które mogły natychmiast uruchomić Windows 8.1 i WP8.1. W lipcu 2015 r. został oficjalnie wydany nowy system operacyjny Windows 10. Wykorzystuje on platformę UWP, która jest rozwój okien czas wykonywania.
Jak sama nazwa platformy sugeruje, jest uniwersalna – uniwersalna dla wszystkich urządzeń w ekosystemie Windows 10. A są to zwykłe komputery stacjonarne, tablety, urządzenia mobilne, urządzenia IoT (Internet of Things), Xbox, urządzenia Surface Hub. A aplikacja UWP może działać tak samo na wszystkich tych platformach, o ile mają zainstalowany system Windows 10.
Dlaczego platforma UWP?
Programowanie w ramach platformy UWP ma szereg zalet:
Szerokość dystrybucji. Do tej pory (kwiecień 2017) Windows 10 został już zainstalowany na ponad 400 milionach urządzeń. Na komputerach stacjonarnych Windows 10 wyprzedza już Windows 8/8.1.
Wsparcie dla szerokiej gamy urządzeń. Komputery stacjonarne, tablety, smartfony, duże tablety Surface Hub, różne urządzenia IoT, w przyszłości urządzenia wirtualnej rzeczywistości HoloLens – gama urządzeń, na których może działać Windows 10, jest naprawdę szeroka.
Wsparcie dla różnych języków programowania i technologii. Aplikacje UWP można budować w językach takich jak Visual C++, C#, Visual Basic, JavaScript. Jako technologia do tworzenia GUI Visual C++, C# i Visual Basic używają XAML, JavaScript używa HTML. Ponadto C++ może używać DirectX zamiast XAML. Oznacza to, że jest to dość powszechne i znane wielu technologiom.
Sklep z aplikacjami i łatwość dystrybucji. Sklep Windows to doskonałe miejsce do dystrybucji aplikacji platformy UWP, zarówno płatnych, jak i bezpłatnych. Same możliwości platformy i Sklepu Windows pozwalają na korzystanie różne sposoby monetyzacja. Na przykład możesz zintegrować bloki reklam z aplikacjami za pomocą różnych pakietów SDK. Możesz dystrybuować za opłatą, a płatność można elastycznie konfigurować. Opcjonalnie możesz wstawić udostępnienie wersji testowej, po której użytkownik może zdecydować, czy kupić aplikację, czy nie. Możesz także zarabiać zgodnie z modelem freemium, w którym aplikacja jest shareware, a niektóre usługi w ramach aplikacji są świadczone za opłatą. Co więcej, wszystkie te możliwości zarabiania zapewniają wbudowane narzędzia SDK.
Bogate funkcje platformy. Platforma UWP dziedziczy wiele z Windows Runtime z Windows 8.1, a jednocześnie zapewnia wiele nowych funkcji, takich jak bogatsza integracja z chmurą, Cortana, system powiadomień Win10 i wiele innych.
Czego potrzebujesz do rozwoju platformy UWP
Programowanie UWP wymaga systemu Windows 10. Wszystkie inne systemy operacyjne, takie jak Windows 8.1/8/7, nie wspominając o Windows XP, nie są odpowiednie!
Potrzebne będzie również środowisko programistyczne Visual Studio 2017 Community. Jest to w pełni funkcjonalne bezpłatne środowisko programistyczne, które można pobrać z oficjalnej strony internetowej pod adresem https://www.visualstudio.com/downloads/download-visual-studio-vs .
Możliwe jest również korzystanie z wersji VS 2015 i wszystkich innych poprzednie wersje Visual Studio - 2013, 2012, 2010 itd. nie działają z platformą UWP.
Na instalowanie wizualizacji Studio 2017 w programie instalacyjnym należy sprawdzić odpowiednią pozycję:
Zanim zaczniesz tworzyć aplikacje, upewnij się, że w Windows 10 Update jest zainstalowana odpowiednia opcja dla programistów:
Po zainstalowaniu systemu Windows 10 i programu Visual Studio 2017 możesz rozpocząć tworzenie aplikacji.
Więc całkiem możliwe jest rozpoczęcie poznawania nowej platformy. Pozwólcie, że zrobię mały objazd, opisując niektóre różnice.
Na początek aplikacje platformy UWP mają coś, czego nie mają aplikacje dla systemu Windows na komputery stacjonarne — mają model aplikacji. Co to jest model aplikacji? To jest rodzaj regulacji. Opis wszystkich funkcji aplikacji - jej prawa dostępu, sposób instalacji, aktualizacji, przechowywania informacji itp.
Aplikacje ze Sklepu Windows, podobnie jak aplikacje platformy UWP, mają plik manifestu, który opisuje wszystkie funkcje i uprawnienia aplikacji. To jest plik Package.appxmanifest. Można go edytować zarówno w edytorze graficznym, jak i jako kod XML. Zrzut ekranu edytor graficzny patrz poniżej.
Sterownica
Jeśli pamiętasz, ostatnio Windows 8 i 8.1 miały panel Charm - magiczny panel:Teraz zamiast tego używane są bardziej znane kontrolki dla deweloperów WPF:
W tym przypadku nową kontrolką jest ContentDialog, która blokuje aplikację w podobny sposób, w jaki blokuje ją MessageBox.
Ponadto nawigacja w platformie UWP jest bardziej znana programistom WP:
Ciekawe może być to, że niektóre kontrolki mogą się różnić wygląd zewnętrzny po wyświetleniu na różne urządzenia. W prostych słowach, formant może wyglądać nieco inaczej, na przykład, gdy jest wyświetlany na komputerze stacjonarnym i na urządzeniu przenośnym.
Ogólnie uważam, że przeciętny programista od dawna jest przyzwyczajony do szerokiej gamy elementów sterujących. Rozwój nowych trudności nie powinien powodować.
Rozwój dla różnych urządzeń
Postaram się dowiedzieć, co będzie niezwykłe dla programisty WPF. Na przykład, podczas tworzenia aplikacji dla systemu Windows 8.1 można było opracować zarówno na telefon, jak i na komputer stacjonarny w jednym rozwiązaniu.W tym przypadku powstały 3 projekty. W aplikacjach WP i WinRT przechowywano kod xaml „widoków” i jakiś specjalny kod dla urządzeń, a wspólny kod xaml i wspólny kod C# dla dwóch projektów były przechowywane we wspólnym projekcie.
Teraz, ponieważ platforma UWP jest uniwersalna, dla każdego typu urządzenia można utworzyć folder, w którym można umieścić „widok” – tj. plik xaml z projektem parametrów urządzenia.
Koło życia
Jest taki stary żart F1: „Ralf Schumacher ma dwie pozycje pedałów – włączony i wyłączony. Resztę przepisów można pominąć.Z tym żartem mogę rzucić trochę klasycznych aplikacji .Net. Albo pracują, albo nie. W aplikacjach Sklepu sytuacja wygląda trochę inaczej. Oprócz stanów „Włączony / Wyłączony” mają również stan pośredni „Zawieszony”. Cykl życia aplikacji 8.x i platformy UWP pokazano na poniższym obrazku:
Wyzwalacze i zadania w tle
Aplikacje .Net mogą być plikami wykonywalnymi lub usługami/usługami. Jest idealny różne rodzaje Aplikacje. Oznacza to, że nie może być tak, że aplikacja jest exe, ale jednocześnie działa w tle. Nie, oczywiście aplikacja może działać w zasobniku. Ale w rzeczywistości okazuje się, że jest uruchamiany i po prostu ograniczany.Jeśli chodzi o aplikacje 8.x i UWP, mogą one zawierać zadania w tle. Praca w tle jest to jakiś rodzaj usługi. Oznacza to, że aplikacja może nie działać, ale pewne zadanie zostanie wykonane w systemie. Ponadto zadanie w tle może „wyłapać” niektóre zdarzenia w systemie przez wyzwalacz.
Jednym z najpopularniejszych wyzwalaczy jest Wyzwalacz systemowy. Za jego pomocą aplikacja może wykonać dowolny kod w przypadku wystąpienia takich zdarzeń jak: pojawienie się lub utrata Internetu, zmiana stanu sieci, połączenie lub rozłączenie użytkownika, odebranie SMS-a, zmiana strefy czasowej itp.
Również dość popularny Wyzwalacz czasu oraz spust konserwacji. Oba wyzwalacze wykonują pewien kod w regularnych odstępach czasu w określonym czasie. Przedział czasu musi wynosić co najmniej 15 minut. Różnica polega na tym, że TimeTrigger wymaga, aby aplikacja była zarejestrowana na ekranie blokady, podczas gdy MaintenanceTrigger wymaga, aby urządzenie działało nie na zasilaniu bateryjnym, ale na zasilaniu sieciowym.
Platforma UWP ma wiele nowych wyzwalaczy. Weźmy na przykład tak ciekawy wyzwalacz, jak Wyzwalacz przetwarzania mediów, który umożliwia aplikacji transkodowanie multimediów w ramach zadania w tle.
Korzystanie z bibliotek
Jeśli korzystasz z aplikacji komputerowych Biblioteki DLL, będziesz mógł używać zarówno PCL, jak i komponentu wykonawczego WinMD w aplikacjach 8.x i UWP. Co za różnica?PCL (portable class library) można dodawać do aplikacji na różne platformy. Oraz pod .Net Framework w różnych wersjach, pod Windows 8.x i pod WP, pod UWP, a nawet pod aplikacjami iOS/Android Xamarin. Oznacza to, że możesz umieścić w tej bibliotece pewien typowy kod niezależny od platformy.
WinMD może być używany tylko pod 8.x lub UWP. Bez względu na język, w którym napisane są aplikacje, mogą one współpracować z WinMD. Ale sam WinMD, jeśli zawiera złożone obliczenia, lepiej pisać w C++, aby osiągnąć najlepszą wydajność.
Jednak podczas opracowywania dla platformy UWP można również utworzyć bibliotekę klas (DLL).
Praca z danymi
Inną różnicą między aplikacjami platformy UWP jest to, że nie działają bezpośrednio z bazami danych. Oznacza to, że bazy danych, takie jak, powiedzmy, SQL Server lub Oracle, znajdujące się na serwerze organizacji, nie będą dla Ciebie dostępne. Byłoby jednak dziwne, gdyby użytkownik pobierał z Sklep aplikacji, a aplikacja zacznie działać z bazą Serwer SQL znajduje się na serwerze w lokalna sieć. Ale będziesz mógł pracować z danymi za pomocą usług internetowych. Możliwe jest użycie bazy danych Oracle Connector / Net for MySQL, ale tak jest ten moment nie obsługuje SSL i dlatego nie jest szczególnie interesujący. Najlepiej więc nie odchodzić od koncepcji korzystania z usług dostępu do danych.Możesz użyć SQLite do przechowywania informacji w aplikacji.
Przechowywanie ustawień aplikacji i praca z plikami
Ustawienia aplikacji można przechowywać nie tylko na urządzeniu, ale również w chmurze. Tak więc, jeśli uruchomisz aplikację na różnych urządzeniach, ustawienia będą wszędzie takie same.Poniższy mały fragment kodu pozwala zaoszczędzić ilość wywoływania kodu w chmurze:
int licznik czasu = 0; RoamS obiektu = Windows.Storage.ApplicationData.Current.RoamingSettings.Values["razy"]; if (roamS != null) timecount = (int)roamS; licznik czasu++; Windows.Storage.ApplicationData.Current.RoamingSettings.Values["razy"] = licznik czasu;
Jeśli zastąpisz Windows.Storage.ApplicationData.Current.RoamingSettings wartością Windows.Storage.ApplicationData.Current.LocalSettings, ustawienie zostanie zapisane lokalnie na urządzeniu.
Ustawienia można łączyć zarówno w parametry złożone, jak i kontenery. Pliki, podobnie jak ustawienia, mogą być przechowywane zarówno na urządzeniu w folder lokalny jak również w chmurze. Ale poza tym możliwe jest przechowywanie plików w folderze tymczasowym, który w razie potrzeby może zostać wyczyszczony przez system - ApplicationData.TemporaryFolder .
Alternatywnie możesz uzyskać dostęp do folderu zawartego w aplikacji za pomocą
Windows.ApplicationModel.Package.Bieżąca.ZainstalowanaLokalizacja
Dostęp do plików przechowywanych na dyskach jest również zorganizowany według specjalnego modelu. Dostęp do zawartości dokumentów, zdjęć, wideo i podobnych folderów można uzyskać za pomocą klasy KnownFolders, ale w tym przypadku uprawnienia muszą być ustawione w manifeście. Dostęp do dowolnego innego folderu jest możliwy tylko wtedy, gdy użytkownik sam wybierze folder podczas pracy z aplikacją. Odwiedzone foldery można zapisać, aby ponowne uruchomienie aplikacji nie zmuszało użytkownika do wykonywania niepotrzebnych czynności
Var folderPicker = nowy Windows.Storage.Pickers.FolderPicker(); folderPicker.FileTypeFilter.Add(.jpg"); folderPicker.FileTypeFilter.Add(.jpeg"); folderPicker.FileTypeFilter.Add(".png"); folderPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary; folderPicker.SettingsIdentifier = "selektor2"; Windows.Storage.StorageFolder lastFolder = czekaj na folderPicker.PickSingleFolderAsync(); if (lastFolder == null) return; Ciąg mruToken = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList.Add(lastFolder);
Następnie możesz uzyskać ostatni zapisany folder w ten sposób:
String mruFirstToken = StorageApplicationPermissions.MostRecentlyUsedList.Entries.FirstOrDefault().Token; lastFolder = czekaj na StorageApplicationPermissions.MostRecentlyUsedList.GetFolderAsync(mruFirstToken);
Wiązania danych
Zarówno w aplikacjach WPF, jak i aplikacjach platformy UWP, a także podczas programowania w wersji 8.x, można używać powiązań danych — (binding). Ale platforma UWP wprowadziła również skompilowane powiązania — (x:bind) Jaka jest różnica? Skompilowane działają znacznie szybciej i są tworzone / sprawdzane w czasie kompilacji, a nie podczas uruchamiania aplikacji. Są też mocno wpisane.Przeczytaj więcej tutaj.
Drodzy habravchans!
Chciałbym bardziej szczegółowo opowiedzieć o jednej z najciekawszych moim zdaniem innowacji. Porozmawiamy o równoczesnym rozwoju aplikacji na Windows 8 i Windows Phone, czyli m.in. o uniwersalne aplikacje na platformę Windows.
Platforma Microsoft obejmuje szeroką gamę urządzeń, od smartfonów i tabletów po komputery osobiste oraz konsola do gier Xbox One, i całkiem naturalne jest, że programista chce zminimalizować wysiłek podczas tworzenia aplikacji dla wszystkich czynników kształtu. Na konkurencyjnych platformach istnieje ogromna różnica między aplikacjami desktopowymi i mobilnymi (ponieważ działają inaczej system operacyjny), w którym aplikacje mobilne, zaprojektowany na smartfon, może działać na tabletach, co często prowadzi do niezadowolenia użytkownika z powodu słabego interfejsu użytkownika.
W tej chwili Microsoft zbliżył się do ujednolicenia wszystkich platform (Windows Phone, Windows 8, Xbox One) pod względem API i umożliwienia programiście jak największego wykorzystania wspólnego kodu przy tworzeniu aplikacji, przy zachowaniu możliwości korzystania różne wzory dla różnych form. Przeczytaj więcej o tym, jak jest obecnie wdrażany - przeczytaj poniżej.
Jak zostały stworzone wcześniej? Aplikacje Windows+ telefon
Do tej pory, aby tworzyć aplikacje ze wspólnym kodem dla Windows i Windows Phone, trzeba było użyć udostępnionej biblioteki przenośnej (biblioteki przenośnej), aby oddzielić wspólny kod odpowiedzialny za dostęp do danych i logikę biznesową oraz różne projekty dla interfejsu użytkownika. To podejście jest bardziej szczegółowo opisane na specjalnym kursie w Microsoft Virtual Academy lub. Ponadto, ze względu na różnice w interfejsach API systemów Windows 8 i Windows Phone, część kodu musiała być uzależniona od platformy.Uniwersalne aplikacje Windows
Na konferencji build zostały ogłoszone następujące innowacje:- W Nowa wersja Windows Phone 8.1 będzie korzystał z interfejsu API Windows RT Oznacza to, że około 90% wywołania systemowe między Windows 8.1 a Windows Phone 8.1 będą wspólne. Ponadto język znaczników XAML został również ujednolicony na różnych platformach. Innymi słowy, nowe aplikacje Windows Phone 8.1 będą używać Windows XAML, a nie Silverlight. Jeśli potrzebujesz kompatybilności, nadal możesz programować dla Windows Phone za pomocą Silverlight, w tym. korzystając z nowych funkcji, ale to temat na osobny artykuł.
- Visual Studio 2013 Update 2 będzie miał nowy szablon projekt dla zunifikowanych aplikacji Windows. Ten szablon tworzy różne projekty dla systemu Windows i Phone oraz trzeci „udostępniony” projekt, który obsługuje cały udostępniony kod. Jednocześnie wspólny projekt
może zawierać nie tylko kod, ale także znaczniki XAML, udostępnione zasoby, obrazy itp. Ten projekt nie jest kompilowany w osobną bibliotekę, ale jest współdzielony między dwoma projektami platformy na poziomie włączenia tekstu na etapie kompilacji. Taki szablon może być używany do programowania C#/XAML, C++/XAML lub HTML/JS. - Jeśli chcesz wyizolować fragment kodu niezależnego od platformy do oddzielnej biblioteki współdzielonej przez wiele aplikacji, nadal możesz użyć przenośna biblioteka, która może teraz zawierać również znaczniki XAML. Biblioteki przenośne mogą być używane do programowania w języku C# lub Visual Basic.
- Nie ma jeszcze binarnej kompatybilności między platformami, tj. Aplikacje dla systemów Windows 8 i Windows Phone będą nadal dystrybuowane za pośrednictwem odpowiednich sklepów, a programista będzie musiał tworzyć i przesyłać pakiety aplikacji do każdego sklepu (chociaż Windows Phone 8.1 będzie teraz używał tego samego formatu .appx co Windows 8. Jednak Sklepy Windows i Windows Phone będą używać tych samych identyfikatorów aplikacji, co pozwoli na realizację scenariuszy zakup pojedynczej aplikacji do użytku na wszystkich platformach.
- Aplikacje na konsolę Xbox One w obecnej wersji Visual Studio Update 2 nie pasuje tak dobrze do wspólna historia, chociaż sprawozdanie plenarne pokazało Uniwersalna aplikacja Khan Academy korzystająca z Kinect, działająca na Xbox i Windows(tak, Kinect v2 będzie obsługiwany w aplikacjach Windows Store, ale znowu to temat na inny artykuł). Obecnie zakłada się, że programowanie na Xbox One odbywa się w HTML/JS/CSS i C++
Uniwersalny witaj świecie
Rozważ mały przykład tworzenia uniwersalnej aplikacji. Struktura projektu w programie Visual Studio 2013 Update 2 została przeprojektowana tak, aby obejmowała aplikacje Windows i Windows Phone oraz uniwersalne aplikacje i biblioteki w sklepie Windows.Nowo stworzona aplikacja uniwersalna będzie przeznaczona na platformę Windows Phone 8.1 i Windows 8.1 Update. Jednocześnie w sekcji Aplikacje Windows Phone dostępne są szablony projektów Windows Phone oparte na technologii Silverlight, które pozwolą na tworzenie aplikacji dla wczesne wersje platformy - ale możliwości aplikacji uniwersalnych nie da się wykorzystać.
Po utworzeniu pustej aplikacji uniwersalnej będziemy mieli następującą strukturę, składającą się z trzech projektów: jednego projektu na każdą platformę oraz wspólnego projektu współdzielonego:
Notatka:
- Domyślnie projekt strony (XAML) dla platform jest podzielony na różne projekty. Jednak w prostych przypadkach możesz użyć wspólnych plików XAML dla wszystkich platform, jeśli masz pewność, że Twój projekt będzie wystarczająco dobrze dostosowywał się do różnych rozdzielczości, od smartfona po komputer. Jednocześnie wiele wbudowanych kontrolek (na przykład GridView) jest w stanie dostosować i zmienić swój wygląd w zależności od platformy.
- Jeśli już masz gotowy projekt Windows lub Windows Phone, możesz na jego podstawie stworzyć uniwersalną aplikację, wybierając menu kontekstowe projekt odpowiedni element. Spowoduje to przekształcenie projektu w tę samą strukturę trzech projektów i będzie można przesyłać pliki aplikacji do współdzielonego projektu w celu udostępnienia.
- Możesz dołączyć linki do bibliotek (Referencje) we wspólnym projekcie, a te linki zostaną dodane do obu projektów (widzimy, że w linkach każdego z projektów platformy znajduje się link Shared). Jeśli jakieś biblioteki są dostępne tylko dla jednej z platform, to nadal możemy korzystać z odpowiedniej funkcjonalności we wspólnym kodzie, otaczając ją dyrektywami kompilacji warunkowej #ifdef. Visual Studio jest tak poręczny, że Intellisense będzie działać, ostrzegając nas, że link jest dostępny tylko na jednej z platform.
- Jeśli wprowadzimy kod XAML do wspólnego projektu, to w edytorze XAML dostępne jest rozwijane do przełączania platformy, a my możemy wizualnie edytować projekt strony zarówno w trybie telefonu, jak i w trybie tablet/komputer.
W większości przypadków będziesz chciał udostępniać jak najwięcej kodu na różnych platformach, przenosząc jak najwięcej do wspólnego projektu. W naszym przypadku możemy przenieść MainPage.xaml z jednego z projektów do projektu współdzielonego i usunąć go w projektach platformy, ponieważ w naszym przypadku wygląd strony nie będzie się różnił w zależności od platformy:
W ten sposób otrzymaliśmy uniwersalną aplikację, której kod i design są całkowicie we wspólnym projekcie.
W drodze do prawdziwa aplikacja- Przeglądarka zdjęć
Spróbujmy zamienić naszą aplikację Hello World w coś użytecznego - na przykład w przeglądarkę najlepsze zdjęcia flickr. Flickr udostępnia kanał RSS ze zdjęciami, więc ustalenie odpowiedniego źródła danych jest stosunkowo łatwe (dla uproszczenia ładowanie RSS odbywa się nieasynchronicznie, w prawdziwych projektach nie trzeba tego robić):Kod do pobierania obrazów z Flickr
public class Flickr(List
Na stronie głównej używamy GridView powiązanego z tym źródłem danych. Aby zdjęcia były na różnych platformach inny rozmiar, używamy klucza z pliku zasobów, który określa wymagany rozmiar zdjęcia.
Projekt XAML głównej strony aplikacji
Aby ustawić różne parametry w pliku zasobów, utwórzmy w każdym z projektów platformy własny plik zasobów Resource.xaml o następującej zawartości:
I na koniec musimy dołączyć ten plik zasobów do App.xaml (który znajduje się we wspólnym projekcie):
app.xaml
W efekcie otrzymujemy kilka aplikacji na Windows 8 i Windows Phone, które poprawnie wyświetlają galerię obrazów, uwzględniając specyfikę platformy.
Pełny kod źródłowy aplikacji można znaleźć na github.
Moralność
Aby teraz tworzyć nowe aplikacje na platformie Windows 8 najlepsze rozwiązanie użyje uniwersalnych aplikacji. Jeśli masz istniejącą aplikację dla systemu Windows 8, warto powoli przekonwertować ją na aplikację uniwersalną i przenieść ją do systemu Windows Phone 8.1. Trudniej jest przekonwertować istniejącą aplikację Windows Phone 8 na aplikację uniwersalną (ponieważ do niektórych operacji wykorzystywane są inne zestawy interfejsów API), omówimy to później. Wreszcie, uniwersalne aplikacje na Windows Phone wymagają Wersje Windows Telefon 8.1, więc obecnie sensowne jest korzystanie z aplikacji Silvelight 8.0, aby mieć wystarczająco szeroką bazę instalacyjnąsala operacyjna System Windows Core OS to przyszły fundament systemu Windows i historyczny krok naprzód w przekształcaniu systemu Windows 10 w prawdziwy system operacyjny typu „wszystko w jednym”.
Krótko mówiąc, Windows Core OS (w skrócie WCOS) to wieloplatformowe łącze dla systemu Windows, które umożliwia korzystanie z dowolnego urządzenia lub architektury, które można ulepszyć za pomocą rozszerzeń modułowych, które mogą aktywować niezbędne funkcje na urządzeniach.
Projekt Andromeda OS nosi teraz nazwę „Windows Core OS” w kręgach wtajemniczonych
Jego głównym celem jest uczynienie systemu Windows 10 znacznie bardziej elastycznym i kompatybilnym z duża ilość urządzeń bez przywiązywania się do niektórych wcześniej opracowanych wariantów produktów. W rezultacie system Windows stanie się „mniejszy” (w zależności od urządzenia), sam system operacyjny będzie rozwijany szybciej, a urządzenia nie będą przesycone komponentami i funkcjami, które nie są już istotne. Wzrośnie ogólna wydajność i szybkość operacji na mniejszych lub słabszych urządzeniach.
Co to oznacza dla użytkownika?
Dzisiejszy system Windows 10 jest dostępny w kilku wersjach (na przykład istnieją wersje na komputery stacjonarne i urządzenia mobilne), nie będąc jedynym systemem operacyjnym dla wszystkich urządzeń. Jednak te wersje mają wspólne elementy, takie jak OneCore i platforma uniwersalna systemu Windows, więc WCOS ma na celu zastąpienie tych odmian platformą uniwersalną.
WCOS otwiera drzwi do wielu nowych konfiguracji Windows. Oczywiście systemy operacyjne Windows 10 dla komputerów stacjonarnych, takie jak Pro i Enterprise, będą nadal istnieć, zapewniając pełną funkcjonalność i wszystkie funkcje systemów operacyjnych dla komputerów stacjonarnych.
Oczekuje się, że wstępne wdrożenie WCOS zostanie opracowane w 2018 r. i najprawdopodobniej będzie ukierunkowane na segment telefonii komórkowej.
Następnym krokiem jest przygotowanie WCOS dla komputerów stacjonarnych i urządzeń takich jak Xbox. WCOS i wspólne prace rozwojowe między Microsoft i CShell pomagają korporacji zrobić duży krok w kierunku koncepcji „Jeden Windows” („Single Windows”). Pierwszy uniwersalny Komponenty Windows 10 to OneCore i uniwersalna platforma Windows. Teraz Microsoft idzie dalej w tym kierunku dzięki WCOS i CShell.
Przyszłość systemu Windows
WCOS będzie impulsem Uruchamianie systemu Windows na nowoczesnym urządzenia mobilne i uczynić go kompatybilnym z innowacyjnymi urządzeniami, które mogą zobaczyć świat w ciągu najbliższych kilku lat. Microsoft potrzebuje elastycznego, konfigurowalnego i responsywnego systemu operacyjnego, którego system Windows obecnie nie oferuje. WCOS to naprawi.
Ważne: WCOS nie jest przeznaczony do bezpośredniego użytku konsumenckiego i nie będzie otwarcie sprzedawany przez firmę Microsoft. Jest to wewnętrzna platforma, która pozwala tworzyć wersje systemu Windows 10, które wcześniej były nierealistyczne. Ale, jak zwykle, Microsoft może w dowolnym momencie anulować lub odroczyć swoje plany WCOS.