SlideShare una empresa de Scribd logo
1 de 75
WinRT w Windows 8 i tzw.
aplikacje LOB (300)

     Tomasz Kopacz
     Architect Evangelist | Microsoft
Cel sesji
 Jak pisać aplikacje „biznesowe” dla Windows 8
 Przegląd scenariuszy przydatnych przy ich implementacji
Cechy aplikacji biznesowych (LOB)
 Przechowują wrażliwe dane (też prywatność)
 Komunikują się z zapleczem (BEZPIECZNIE!)
 Zwykle „danych” jest bardzo dużo
 Czasami są wielomodułowe
 Zwykle mają historię z brodą: C++, MFC, …
 Zwykle zawierają jakieś ważne algorytmy – publiczny sklep?
  NIGDY
 Wygląd… mniej istotny (TO SIĘ ZMIENIA!!!)
„Problem” świata dzisiejszego
 Ruch BYOD, praca z domu, praca na
  komputerze żony/męża/dziecka
 Czyli co?
   Policy korporacyjne na komputerze
    domowym?
     Domownik: WRRR
   Brak policy w ogóle:
     Administrator: WRRR
   Szukamy złotego środka…
Przypomnienie – subiektywnie wybrane
cechy appsów WinRT
   Izolacja (Sandbox) owszem, ale kontrakty do współdzielenia
   Nowoczesny UI + touch + sensory + nowe urządzenia +…
   Zapewnienie Fast & Fluid – async / await
   Broker kontrolujący dostęp do wrażliwych API / danych
   Powiadamianie
   Sensory
   (Bogata grafika (DX 11.1) )
   Aplikacja ma kontrolę nad całym ekranem
Plan prezentacji
 Jak działa Windows 8 pod spodem?
 Jak budować komponenty?
 Scenariusze
   Kryptografia i bezpieczeństwo
     Logowanie
     W8 jak klient Web Services - ASMX / WCF / REST
   Praca z duża ilością danych
   Wielomodułowa aplikacja + Wymiana danych
   Powiadamianie
 „Własny sklep”
Języki w których można pisać na W8
 Założenie: programista używa tej wiedzy, którą już posiada
   HTML + JavaScript, GOTOWE układy stron
   XAML + C# / VB.NET – też do migracji rozwiązań z Windows
    Phone
   C++ - gry, specjalistyczne algorytmy, GOTOWE fragmenty kodu


 Ale Windows 8 pozwala ŁĄCZYĆ te technologie
   UI w HTML
   Logika w C#
   Obliczenia w C++ (choć – w JavaScript będą też szybkie )
Jak to działa?
.NET WinRT Interop
 RCW = Runtime Callable Wrapper
   Zwiększa reference counting obiektu ABI
   Implementuje finalizator który zmniejsza reference
    counting
   Marshal.ReleaseComObject = Dispose
 CCW = ABI Callable Wrapper
   Odwołanie do obiektu zarządzanego jako do COM
 Kosztowne? NIE!
   Ale – można też pracować z typami WinRT!

   void SetVal(int index, int value); - AUĆ
   void SetValRange(int start,int length,int[]
    values);
   Albo – przyjąć jako parametr IBuffer i go
    wypełnić
Typy .NET a WinRT
 Tylko klasy „sealed” (oprócz kontrolek XAML)
     Stąd – interfejsy popularne! List<string> vs IList<string> |
      IVector<T>
 Sygnatury API muszą wykorzystywać typy WinRT
     Część typów ma sposoby na konwersję – np. extension methods
   Typy generyczne – NIE; Virtual – NIE
   Struktury mogą mieć tylko publiczne pola
   Uwaga! Mówimy o przekazywaniu, nie implementacji
   Uwaga na tablice i kolekcje
     Nietypowe przekazywanie przez referencję / readonly
01 Demo – 3 2
„ciekawostki”
API z „Async”
Z tablicy do strumieni w JS
(2 style pracy z plikami – pominąć – w materiałach)
(Demo na slajdach)




                     Klient C# - bez problemu (ale on może też „natywnie” –
                     bez żadnych pośredników

                     Klient JS – promises (.then, .done, funkcja progres);
                     jedyne ograniczenie – nie da się
                     bezpośrednio CancellationToken przekazać. Ale da się
                     async anulować (.Cancel )
(Demo na slajdach)
Pojemniki DI/IoCUnity, Autofact
 Problem: dużo komponentów, związki przez „dodaj
  referencję”…
 Dependency Injection, Inversion of Control
 Rozwiązania:
   Unity (P& P) – DI + przechwytywanie typów + instancjonowanie
   Autofac – jeden z pierwszych pojemników DI / IoC (2007)
   MEF – lekkie narzędzie do kompozycji, rozszerzenia, dynamiczne
    odkrywanie dzięki atrybutom
 Generalnie –uwagi: Jutro, 12:00-13:00 systemów obowiązkowe
       Sesja warta dla większych
        Bartłomiej Zass: Tworzenie aplikacji dla Windows Phone i Windows 8 –
        dwie pieczenie przy jednym ogniu (w skrócie – MVVM/PCL/strategie);
Demo
Unity w Windows 8
(malutki Portable Library + autofac)
(Malutkie MEF)
Co to obiekt ABI?
 Bazuje na koncepcjach COM
 Binarny standard komponentu
 Referencja do obiektu WinRT (czyli ABI) to
  wskaźnik do wskaźnika do vtable która zawiera
  tablicę wskaźników do funkcji interfejsów.
  Pierwsze dwa to:
  IUnknown
  IInspectable
Czyli:
 Każdy obiekt WinRT implementuje IUnknown
      AddRef / Release / QueryInterface
      (+ WeakReference do unikania zapętleń cyklicznych)
 Każdy obiekt WinRT implementuje IInspectable
   GetIids – lista ID interfejsów
   GetRuntimeClassName – nazwa (z przestrzenią nazw), na
    przykład
      Windows.Foundation.Collections.IVector`1<IMap’2<…>>
   GetTrustLevel (Base / Partial / Full)
 IActivationFactory (jak stworzyć obiekt)
WinMD, CLI  Czyli – ILDASM, Reflector
Mamy fragment w C++ - co dalej
 C++/CX, Windows Runtime                WRL, Windows Runtime C++
  Component                               Template Library
 Mapują wzorce C++ (konstruktor...)     Niezależne od kompilatora (znane
  na interfejsy COM                       template); pełna kontrola nad
 Mapuje pomiędzy wyjątkami a             wydajnością (zwłaszcza Marshaling
  wartościami HRESULT                     jak się odbywa + cykl życia).
 Odwzorowuje wyjściowe parametry i      HRESULT, IDL itp
  zwracane wartości                      Cel podstawowy: Łatwa migracja ATL
 Zapewnia automatyczną obsługę           / inne -> WRL
  zliczania referencji dla wskaźników    "C:Program Files (x86)Windows
  do obiektów Windows Runtime             Kits8.0IncludeWinRTwrl"
 Odczyt i zapis metadanych
A ja mam binarny komponent…
 NIE DZIAŁA! Binarnie się nie da – trzeba mieć kod…
 Dlaczego? Bo WinRT: Wymaga by komponenty były
  „ACTIVABLE”
   To znaczy (uproszczenie!) – by można było wywołać domyślny
    konstruktor
 Ale obiekt ABI może być używany jako obiekt COM
   (domyślnie jest tak deklarowany; można to wyłączyć)
 Opcja: zewnętrzne hostowanie + komunikacja typu RPC –
  będzie dalej
Demo – rejestr – jak to
działa w środku Windows 8
(Demo do materiałów)
Migracja C++?
 Lektura tu
 Pakujemy w WRL; Czasami wygodniej – skonwertować do
  C++/WX




 Uwaga! Da się wołać dowolne Win32 API
     Ale – nie przejdzie to certyfikacji!
DEMO
„Migracja” (na przykładzie C++) i WRL od zera
To też działa w drugą stronę…
 Aplikacja „desktop” może wołać WinRT
 How to: Add or Remove References By Using the
  Reference anager



 Po zmianie .csproj, normalnie – wywołujemy metody
 Błędy – sprawdzić czy jest dodane
  WindowsRutnime, InteropServices
 Uruchomienie Modern UI Apps (patrz rejestr):
      IApplicationActivationManager::ActivateApplication
      start knownfolder:{1e87508d-89c2-42f0-8a7e-
DEMO
(trochę proste – jak wołać z trybu desktop WinRT)
(tak ogólnie)
Uwierzytelnianie i bezpieczeństwo

                    Zintegrowane       Certyffikacja dla   Wieloczynnikowe    Federacja - ADFS   Single Sign On z
 Uwierzytelnianie   uwierzytelnianie   appsa - My i        uwierzytelnianie                      Live, Facebook, it
                    Windows            Root                                                      p..




                    Izolowane          Mechanizm           Wsparcie           Crypto APIs        Podpisywanie
 Bezpieczeństwo     pojemniki          „zdolności”         SSL/TLS                               aplikacji
                    Appsów
Bezpieczeństwo – co może W8
 Kryptografia
      Klucze symetryczne / asymetryczne
      Dziedziczenie kluczy na podstawie hasła
      Kody HMAC (message authentication)
      Podpisywanie treści
      DPAPI – (DataProtection) – statyczne / strumienie danych
 Kodowanie
 PKI
      Tworzenie certyfikatów, też self-signed, importowanie PFX, SmartCard
      Certyfikaty z „My”
      Zablokowanie dziedziczenia zaufania z systemu
      Per aplikacja – root certificates / trusted certificates
      Kryteria: Hardware-based, wynikające z łańcucha, automatyczny wybór
DEMO
Różne opcje związane z szyfrowaniem
Trzy rozwiązania (technologie)
 Serwer:
   Tradycyjne usługi Web – WCF
   Usługi w stylu REST
      Pisane w WCF | Pisane w ASP.NET MVC Web Api <- prościej
      OData – formalny sposób dostępu do baz relacyjnych | Azure Mobile Services
   WebSocket – MessageWebSocket i StreamWebSocket (callback)
 Klient
   WCF – „Add Service Reference”
   REST – tak proste że „add” nie jest potrzebne
   WebSocket
      JavaScript – bardzo naturalne
      C# - praca ze strumieniami | NetHttpBinding
WCF
 Binding
   BasicHttpBinding | NetTcpBinding | NetHttpBinding |
    CustomBinding
 Binding elements
   BinaryMessageEncodingBindingElement |
    TextMessageEncodingBindingElement |
    ConnectionOrientedTransportBindingElement |
    SslStreamSecurityBindingElement |
    WindowsStreamSecurityBindingElement |
    TcpTransportBindingElement | Http(s)TransportBindingElement |
    TransportSecurityBindingElement
WCF Services
 Bezpieczeństwo
   None, Transport, TransportWithMessageCredential, TransportCred
    entialOnly
 ClientCredentialType:
  None, Basic, Digest, Negotiate, Ntlm, Windows
 Transfer Mode: Buffered, Streamed, StreamedRequest, and
  StreamedResponse
 DataContractSerializer, DataContractJsonSerializer, XmlSeri
  alizer
 ChannelFactory, DuplexChannelFactory, CallbackBehavior
Uwaga!
 Nie ma:
     WSHttpBinding
     NetMsmqBinding
     NetPeerTcpBinding
     UdpBinding
Drobiazgi
 Brak pliku konfiguracyjnego XML
   Kod do Reference.cs
   ConfigureEndpoint
   E… to może wszystko ręcznie? < PROŚCIEJ!
 Tylko async (Task)
 Internet & Private Network & Enterprise Authentication
 TransportWithMessageCredential – bezpieczne przekazanie
  hasła
     […]Security.Mode = […].BasicHttpSecurityMode.TransportCredentialOnly
     […]. ClientCredentialType = […].HttpClientCredentialType.Windows;
REST services
 WebClient HttpClient
   Działa z async
   Implementacja w System.Net
 HttpClient definuje
   Get(Async)
      Zwraca HttpResponseMessage
   Put(Async)
   Post(Async)
   Delete(Async)
   RESTful!
 Wreszcie 
Analiza odpowiedzi…
 XML: LinqToXML, XmlReader/XmlWriter, XmlSerializer
 JSON:
   Zbudować JsonObject i przekazać zwrócony łańcuch
     Metoda Parse()
        Rzuca wyjątek gdy łańcuch błędny
     Można: GetNamedString(), GetNamedNumber()
     Indexer – działa, ale WOLNO = nie używać
   Z WCF: DataContractJsonSerializer
 NuGet: JSON.NET
Windows Store app for banking: code walkthrough
                                                         (Windows Store apps using JavaScript and HTML)
A może certyfikaty?
1. Logowanie do aplikacji hasłem jednorazowy
2. Serwis wołany z danym hasłem jednorazowym
  CreateRequestAsync
3. Serwis generuje plik PFX
4. Serwis przekazuje plik do klienta
5. Klient (Modern UI) importuje plik do Appsa
  ImportPfxDataAsync
  InstallCertificateAsync
6. No i reszta komunikacji przy użyciu wzajemnego uwierzytelnienia i certyfikatów
    Muszą się zgadzać
       Certyfikaty | URL-e serwisów | (normalne wymagania PKI)


 Zamiast 2-5 certyfikaty mogą być generowane w infrastrukturze firmowej
Certyfikaty w aplikacji Windows 8
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest">
  <Extensions>
    <Extension Category="windows.certificates">
      <Certificates>
        <Certificate StoreName="Root" Content="myroot.cer" />
        <Certificate StoreName="CA" Content="mystandca.cer" />
        <Certificate StoreName="Root" Content="Serverowy.cer" />
        <Certificate StoreName="My" Content="sample_cert_P@ssw@rd1.pfx" />
        <TrustFlags ExclusiveTrust="true" /> Bez ufania systemowi!
        <SelectionCriteria AutoSelect="true" />
      </Certificates>
    </Extension>
DEMO
VS Jako ADMIN
REST, WCF i autoryzacja + odrobina WebSocket
Też ODATA!
A serwer na tym samym komputerze?
 Loopback zablokowany na maszynach niedeveloperskich
   CheckNetIsolation LoopbackExempt -a -n=0e3d3bc9-242c-4a2f-b4ba-
    67f401039f2f_xhszanydfyfm8
 Nie przejdzie certyfikacji przez sklep aplikacja zależna od innego
  serwisu na tej samej maszynie
   Ale – jak ten serwis będzie też w Internecie..
      Idea: konto demo, itp.
 Sideloading – OK
 Modern UI Apps może być tylko KLIENTEM
   Ale – mamy WebSocket, DuplexContract itp..
DEMO
Serwer i serwis na tej samej maszynie
Identyfikacja „klienta”
 Użytkownika:
   Login / password (własne)
   Live ID (z Live Connect)
     Facebook, Google ID itp.
     Dostajemy to o co prosimy (np. – tylko unikalny AID; dla naszego appsa)
 Urządzenie: ASHWID i GetPackageSpecificToken
Składniki ASHWID
 4 bajty na blok (2 – komponent, 2 – wartość)
 Nie ma korelacji pomiędzy aplikacjami (ASHWID per apps)
   Nie planowane do reklam!             Kod   Komponent
                                         1,0   Processor
 Niezmienne, gdy:                       2,0   Memory
     Reinstalacja OS                    3,0   Disk Device
                                         4,0   Network Adapter
     Reset urządzenia                   5,0   Audio Adapter
     Aktualizacja OS SKU                6,0   Docking Station
                                         7,0   Mobile Broadband
     Aktualizacja wersji aplikacji      8,0   Bluetooth
     Zmiana użytkownika na urządzeniu   9,0   System BIOS
Tablet 1Ghz / 768 MB + obliczenia – hmm
 Rozwiązanie:
  1. Klient woła usługę
  2. Usługa liczy
  3. Usługa wysyła przez Push Notification że obliczenia zostały
     zakończone
  4. Klient
    1. Albo subskrybuje się (Background Task) na Raw Notification
       1.   Apps musi działać by odebrać, na pierwszym planie
    2. Albo – dostaje pięknie wyglądającego Toast-a i „klika”
DEMO
Obliczenia + powiadamianie
Podstawy podstaw: C#
   <TextBox x:Name="MyTextBox" Text="Text"
      Foreground="{Binding Brush1, Mode=OneWay}"/>
   MyColors textcolor = new MyColors(); textcolor.Brush1 = new
    SolidColorBrush(Colors.Red); MyTextBox.DataContext =
    textcolor;
 Źródła:
   List<T> IEnumerable<T>
   ObservableCollection<T> :
    Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged
   CollectionViewSource
Podstawy podstaw: JavaScript
  WinJS.Binding.optimizeBindingReferences = true;
  var person = { name: "Fran" };
  <div>Welcome, <span id="nameSpan" data-win-bind="innerText:
   name"></span>

  var personDiv = document.getElementById("nameSpan");
  WinJS.Binding.processAll(personDiv, person);
Ładowanie z opóźnieniem | wirtualizacja
danych
 ISupportIncrementalLoading
   HasMoreItems
   Windows.Foundation.IAsyncOperation<LoadMoreItemsResult>
    LoadMoreItemsAsync
 Nie zapomieć o:
    NavigationCacheMode = NavigationCacheMode.Enabled;
    OnNavigatedTo(NavigationEventArgs e){ if (this._pageKey != null &&
    e.NavigationMode == NavigationMode.Back) return; }
   Inaczej – losowe problemy (głównie z współbieżnością i pamięcią)
Demo
Binding;
Ładowanie z opóźnieniem
Dane lokalne
 ObservableCollection
 Potem - forma cache
   LinqToXML | LinqToObject
   SQLite  - zaleta – mamy bazę relacyjną, rozumiejącą SELECT
 Potem – zapis z cache do zewnętrznego pojemnika
 Koncepje „stare”, jeszcze z DataSet 
   Współbieżność, kontrola kiedy coś zostało zapisane, konflikty.
 Nie zapomnieć o Suspend!
Demo
Lokalne cache
Opcje + proces
A może: zapis zawsze lokalnie, a potem „replikacja”?
Tu: SQL Lite
Wyzwanie - komunikacja i „detekcja”
zmian
 Kontrakty Share
   Share – tak, ale tylko z „moimi” aplikacjami
   Potwierdzanie „odebrania” pakietu
   Strumień dużego obiektu
 File Open Picker
 Kwerendy na plikach (a’la WinFS)
 (Wspomniane już usługi)
DEMO
Współpraca kilku AppSów
Dla firmy (dokładniej – dla tych co mają Win Enterprise /
klucz SLK i ufają certyfikatowi)
Co jest potrzebne
 Centralne repozytorium aplikacji (udział sieciowy)
 Narzędzia:
   Dołączyć do domeny LUB
      Slmgr /ipk <sideloading product key>, potem slmgr /ato ec67814b-30e6-
       4a50-bf7b-d55daf729d1e
   add-appxpackage C:app1.appx –DependencyPath C:winjs.appx
      Lub: DISM /Online /Add-ProvisionedAppxPackage
       /PackagePath:C:App1.appx /SkipLicense
   „CopyProfile” z gotowymi wzorcami nowego „menu start”
   (Też Windows RT)
Co i gdzie ustawić
Różne
 Get-AppxPackage | Where-Object {$_.InstallLocation -
  NotMatch "C:Program FilesWindowsApps" } | Where-
  Object {$_.InstallLocation -NotMatch "C:Windows" }|
  Remove-AppxPackage -Package {$_.PackageFullName}
 W taki sam sposób
   Inwentaryzacja
   Sprawdzenie wersji / aktualizacji itp.
 MSI może zainstalować APPX!
Certyfikat do podpisania takiej aplikacji
 Serwer certyfikatów (tryb Standalone – wygodniej zmieniać
  SN)
   Code Signing Certificate Template
 Żądanie – krytyczne – Subject!


 Konwersja (certreq -New AppxCodeSign.inf
  CodeSignReq.req)
 Wkleić żądanie w portal (poczekać na akceptację)
 Pobrać certyfikat i zaimportować go do Visual Studio
 Dodać CA do Root dla MASZYNY (nie usera!)
DEMO
(raczej przegląd przez polecenia)
Przegląd sideloading
Podsumowanie 0
 Budowa modułowa – tak jak zwykle
   Komponenty WinRT i ABI pomiędzy językami
   ClassLibrary jeśli nie opuszczamy .NET
     Autofact.dll, inne DI, Unity – w zależności od potrzeb – takie same
      narzędzia jak w normalnym .NET 
 Niesamowite możliwości łączenia języków = ŁATWIEJ i
  SZYBCIEJ
   (Dygresja – VB a C# w roku 2002 a HTML i C# w roku 2012)
Podsumowanie I – „Dlaczego”
 Dlaczego aplikacje „biznesowe” w Modern UI i Windows 8
   No bo… taki jest świat
   Za chwilę nie będzie gdzie uruchamiać aplikacji Windows Forms 
     A chwilę później – WPF, SL
     Web – nie zawsze pasuje!
   Inne style używania aplikacji
   Inne style biura / użytkownika / pracy
 Biznesowe a Sklep – też się DA
   Demo Web Services, w konfiguracji wskazywane „firmowe” itp.
Podsumowanie II - Technicznie
 Dlaczego aplikacje „biznesowe” w Modern UI i Windows 8
   Sandbox (izolacja)
     ZERO problemów ze zgodnością (no bo jak …); utrzymanie….
        Niedoceniane: PC Refresh (zostawia appsy i pliki i sprząta z pozostałości!)
     Instalacja = kopiowanie, nie ma zewnętrznych zależności
     Bezpieczeństwo!
   Certyfikacja
     Windows Store – Microsoft sprawdza czy działa
        Użytkownik zarządza, dokonuje płatności itp
     Sideloading – można sprawdzić wewnątrz firmy + np. WACK
        Firma zarządza | „Lekka” kontrola prywatnych urządzeń
   Fast & Connect & Offline & …
   Jak zawsze: bezproblemowa współpraca z posiadaną
    infrastrukturą
Wypełnij ankietę i wygraj nagrody!
Organizatorzy MTS czytają                  Wystarczy 5 minut Twojego
wszystkie ankiety.                         czasu na wypełnienie ankiety!

Dzięki nim masz realny wpływ na            Masz szansę wygrać m.in.
konferencję oraz merytorykę i              wejściówkę na MTS 2013 (25x)
prelegentów kolejnego MTS.                 oraz inne nagrody.

Gdzie i jak?
 Ankiety dostępne są online – na stronie konferencji (konferencjamts.pl)
 Można je wypełnić od dziś, aż do 11 listopada 2012
Strefa Ekspertów (ATE)
 Strefa ATE dostępna jest w strefie Partnerów
 Zapraszamy wszystkich zainteresowanych poszerzeniem
  wiedzy
 Eksperci będą do Państwa dyspozycji

 Ja będę tam:
   (za chwilę – przy okazji imprezy)
   20121030 11:40 – 12:30 (jak skończę sesję o Azure + kilka minut)
Polskie aplikacje na Windows 8




    http://www.microsoft.com/poland/windows8/polskie-aplikacje/
© 2012 Microsoft Corporation. Wszelkie prawa zastrzeżone.
Microsoft, Windows oraz inne nazwy produktów są lub mogą być znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Microsoft
w Stanach Zjednoczonych i innych krajach. Zamieszczone informacje mają charakter wyłącznie informacyjny. FIRMA MICROSOFT NIE UDZIELA
ŻADNYCH GWARANCJI (WYRAŻONYCH WPROST LUB DOMYŚLNIE), W TYM TAKŻE USTAWOWEJ RĘKOJMI ZA WADY FIZYCZNE I PRAWNE, CO DO
INFORMACJI ZAWARTYCH W TEJ PREZENTACJI.

Más contenido relacionado

Destacado

Web API 2 Token Based Authentication
Web API 2 Token Based AuthenticationWeb API 2 Token Based Authentication
Web API 2 Token Based Authenticationjeremysbrown
 
Codemotion 2014 - Hackathones - de 0 a produccion en 24 horas
Codemotion 2014 - Hackathones - de 0 a produccion en 24 horasCodemotion 2014 - Hackathones - de 0 a produccion en 24 horas
Codemotion 2014 - Hackathones - de 0 a produccion en 24 horasAdolfo Sanz De Diego
 
WCF Security, FSec
WCF Security, FSecWCF Security, FSec
WCF Security, FSecAnte Gulam
 
Stateless token-based authentication for pure front-end applications
Stateless token-based authentication for pure front-end applicationsStateless token-based authentication for pure front-end applications
Stateless token-based authentication for pure front-end applicationsAlvaro Sanchez-Mariscal
 
Lunch Learn - WCF Security
Lunch Learn - WCF SecurityLunch Learn - WCF Security
Lunch Learn - WCF SecurityPaul Senatillaka
 

Destacado (6)

Web API 2 Token Based Authentication
Web API 2 Token Based AuthenticationWeb API 2 Token Based Authentication
Web API 2 Token Based Authentication
 
Codemotion 2014 - Hackathones - de 0 a produccion en 24 horas
Codemotion 2014 - Hackathones - de 0 a produccion en 24 horasCodemotion 2014 - Hackathones - de 0 a produccion en 24 horas
Codemotion 2014 - Hackathones - de 0 a produccion en 24 horas
 
WCF Security, FSec
WCF Security, FSecWCF Security, FSec
WCF Security, FSec
 
Stateless token-based authentication for pure front-end applications
Stateless token-based authentication for pure front-end applicationsStateless token-based authentication for pure front-end applications
Stateless token-based authentication for pure front-end applications
 
Lunch Learn - WCF Security
Lunch Learn - WCF SecurityLunch Learn - WCF Security
Lunch Learn - WCF Security
 
WCF security
WCF securityWCF security
WCF security
 

Similar a Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of business)

Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?javOnet
 
Seminarium .Net CF 2004
Seminarium .Net CF 2004Seminarium .Net CF 2004
Seminarium .Net CF 2004Tomasz Cieplak
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?PHPCon Poland
 
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...Tomasz Kopacz
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wojciech Barczyński
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftBiznes 2.0
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureWebhosting.pl
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Artur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsArtur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsWebhosting.pl
 
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Piotr Nalepa
 
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPROIDEA
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz
 
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPROIDEA
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHPCon Poland
 

Similar a Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of business) (20)

Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?
 
Seminarium .Net CF 2004
Seminarium .Net CF 2004Seminarium .Net CF 2004
Seminarium .Net CF 2004
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Silverlight i PHP
Silverlight i PHPSilverlight i PHP
Silverlight i PHP
 
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
 
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...Mts 2013   tomasz kopacz - windows 8, office 365, workflow manager, windows a...
Mts 2013 tomasz kopacz - windows 8, office 365, workflow manager, windows a...
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Isyp07
Isyp07Isyp07
Isyp07
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows Azure
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Artur Żarski, PHP na Windows
Artur Żarski, PHP na WindowsArtur Żarski, PHP na Windows
Artur Żarski, PHP na Windows
 
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
 
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDN
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
 
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDNPLNOG 13: Adam Heczko: Openstack, Ceph, SDN
PLNOG 13: Adam Heczko: Openstack, Ceph, SDN
 
PHP i microsoft
PHP i microsoftPHP i microsoft
PHP i microsoft
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubi
 

Más de Tomasz Kopacz

Azure Digital Twins.pdf
Azure Digital Twins.pdfAzure Digital Twins.pdf
Azure Digital Twins.pdfTomasz Kopacz
 
24032022 Zero Trust for Developers Pub.pdf
24032022 Zero Trust for Developers Pub.pdf24032022 Zero Trust for Developers Pub.pdf
24032022 Zero Trust for Developers Pub.pdfTomasz Kopacz
 
Deep dive into service fabric after 2 years
Deep dive into service fabric after 2 yearsDeep dive into service fabric after 2 years
Deep dive into service fabric after 2 yearsTomasz Kopacz
 
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
Net core (dawniej   5.0) – co to dla mnie. też dużo o open sourceNet core (dawniej   5.0) – co to dla mnie. też dużo o open source
Net core (dawniej 5.0) – co to dla mnie. też dużo o open sourceTomasz Kopacz
 
Visual Studio – jak zorganizować pracę używając Scrum i GIT?
Visual Studio – jak zorganizować pracę używając Scrum i GIT?Visual Studio – jak zorganizować pracę używając Scrum i GIT?
Visual Studio – jak zorganizować pracę używając Scrum i GIT?Tomasz Kopacz
 
Visual Studio - zastosowania
Visual Studio - zastosowaniaVisual Studio - zastosowania
Visual Studio - zastosowaniaTomasz Kopacz
 
Coś o service fabric, architekturze, i bardzo skalowalnych aplikacjach
Coś o service fabric, architekturze, i bardzo skalowalnych aplikacjachCoś o service fabric, architekturze, i bardzo skalowalnych aplikacjach
Coś o service fabric, architekturze, i bardzo skalowalnych aplikacjachTomasz Kopacz
 
Kiedy napadnie na nas pralka – jak budować bezpieczne systemy internet of thi...
Kiedy napadnie na nas pralka – jak budować bezpieczne systemy internet of thi...Kiedy napadnie na nas pralka – jak budować bezpieczne systemy internet of thi...
Kiedy napadnie na nas pralka – jak budować bezpieczne systemy internet of thi...Tomasz Kopacz
 
Windows 10, internet of things, komunikacja duplex od kabli do odrobiny azu...
Windows 10, internet of things, komunikacja duplex   od kabli do odrobiny azu...Windows 10, internet of things, komunikacja duplex   od kabli do odrobiny azu...
Windows 10, internet of things, komunikacja duplex od kabli do odrobiny azu...Tomasz Kopacz
 
It w roku 201x – dom, szkoła, potem praca. no i – jak tu (i czego!) uczyć
It w roku 201x – dom, szkoła, potem praca. no i – jak tu (i czego!) uczyćIt w roku 201x – dom, szkoła, potem praca. no i – jak tu (i czego!) uczyć
It w roku 201x – dom, szkoła, potem praca. no i – jak tu (i czego!) uczyćTomasz Kopacz
 
Big data on Azure for Architects
Big data on Azure for ArchitectsBig data on Azure for Architects
Big data on Azure for ArchitectsTomasz Kopacz
 
(Azure) Machine Learning 2015
(Azure) Machine Learning 2015(Azure) Machine Learning 2015
(Azure) Machine Learning 2015Tomasz Kopacz
 
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...Tomasz Kopacz
 

Más de Tomasz Kopacz (14)

Azure Digital Twins.pdf
Azure Digital Twins.pdfAzure Digital Twins.pdf
Azure Digital Twins.pdf
 
24032022 Zero Trust for Developers Pub.pdf
24032022 Zero Trust for Developers Pub.pdf24032022 Zero Trust for Developers Pub.pdf
24032022 Zero Trust for Developers Pub.pdf
 
Deep dive into service fabric after 2 years
Deep dive into service fabric after 2 yearsDeep dive into service fabric after 2 years
Deep dive into service fabric after 2 years
 
O danych w 2016
O danych w 2016O danych w 2016
O danych w 2016
 
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
Net core (dawniej   5.0) – co to dla mnie. też dużo o open sourceNet core (dawniej   5.0) – co to dla mnie. też dużo o open source
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
 
Visual Studio – jak zorganizować pracę używając Scrum i GIT?
Visual Studio – jak zorganizować pracę używając Scrum i GIT?Visual Studio – jak zorganizować pracę używając Scrum i GIT?
Visual Studio – jak zorganizować pracę używając Scrum i GIT?
 
Visual Studio - zastosowania
Visual Studio - zastosowaniaVisual Studio - zastosowania
Visual Studio - zastosowania
 
Coś o service fabric, architekturze, i bardzo skalowalnych aplikacjach
Coś o service fabric, architekturze, i bardzo skalowalnych aplikacjachCoś o service fabric, architekturze, i bardzo skalowalnych aplikacjach
Coś o service fabric, architekturze, i bardzo skalowalnych aplikacjach
 
Kiedy napadnie na nas pralka – jak budować bezpieczne systemy internet of thi...
Kiedy napadnie na nas pralka – jak budować bezpieczne systemy internet of thi...Kiedy napadnie na nas pralka – jak budować bezpieczne systemy internet of thi...
Kiedy napadnie na nas pralka – jak budować bezpieczne systemy internet of thi...
 
Windows 10, internet of things, komunikacja duplex od kabli do odrobiny azu...
Windows 10, internet of things, komunikacja duplex   od kabli do odrobiny azu...Windows 10, internet of things, komunikacja duplex   od kabli do odrobiny azu...
Windows 10, internet of things, komunikacja duplex od kabli do odrobiny azu...
 
It w roku 201x – dom, szkoła, potem praca. no i – jak tu (i czego!) uczyć
It w roku 201x – dom, szkoła, potem praca. no i – jak tu (i czego!) uczyćIt w roku 201x – dom, szkoła, potem praca. no i – jak tu (i czego!) uczyć
It w roku 201x – dom, szkoła, potem praca. no i – jak tu (i czego!) uczyć
 
Big data on Azure for Architects
Big data on Azure for ArchitectsBig data on Azure for Architects
Big data on Azure for Architects
 
(Azure) Machine Learning 2015
(Azure) Machine Learning 2015(Azure) Machine Learning 2015
(Azure) Machine Learning 2015
 
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
 

Tomasz Kopacz MTS 2012 Wind RT w Windows 8 i tzw aplikacje lob (line of business)

  • 1.
  • 2. WinRT w Windows 8 i tzw. aplikacje LOB (300) Tomasz Kopacz Architect Evangelist | Microsoft
  • 3. Cel sesji  Jak pisać aplikacje „biznesowe” dla Windows 8  Przegląd scenariuszy przydatnych przy ich implementacji
  • 4. Cechy aplikacji biznesowych (LOB)  Przechowują wrażliwe dane (też prywatność)  Komunikują się z zapleczem (BEZPIECZNIE!)  Zwykle „danych” jest bardzo dużo  Czasami są wielomodułowe  Zwykle mają historię z brodą: C++, MFC, …  Zwykle zawierają jakieś ważne algorytmy – publiczny sklep? NIGDY  Wygląd… mniej istotny (TO SIĘ ZMIENIA!!!)
  • 5. „Problem” świata dzisiejszego  Ruch BYOD, praca z domu, praca na komputerze żony/męża/dziecka  Czyli co?  Policy korporacyjne na komputerze domowym?  Domownik: WRRR  Brak policy w ogóle:  Administrator: WRRR  Szukamy złotego środka…
  • 6.
  • 7. Przypomnienie – subiektywnie wybrane cechy appsów WinRT  Izolacja (Sandbox) owszem, ale kontrakty do współdzielenia  Nowoczesny UI + touch + sensory + nowe urządzenia +…  Zapewnienie Fast & Fluid – async / await  Broker kontrolujący dostęp do wrażliwych API / danych  Powiadamianie  Sensory  (Bogata grafika (DX 11.1) )  Aplikacja ma kontrolę nad całym ekranem
  • 8. Plan prezentacji  Jak działa Windows 8 pod spodem?  Jak budować komponenty?  Scenariusze  Kryptografia i bezpieczeństwo  Logowanie  W8 jak klient Web Services - ASMX / WCF / REST  Praca z duża ilością danych  Wielomodułowa aplikacja + Wymiana danych  Powiadamianie  „Własny sklep”
  • 9.
  • 10. Języki w których można pisać na W8  Założenie: programista używa tej wiedzy, którą już posiada  HTML + JavaScript, GOTOWE układy stron  XAML + C# / VB.NET – też do migracji rozwiązań z Windows Phone  C++ - gry, specjalistyczne algorytmy, GOTOWE fragmenty kodu  Ale Windows 8 pozwala ŁĄCZYĆ te technologie  UI w HTML  Logika w C#  Obliczenia w C++ (choć – w JavaScript będą też szybkie )
  • 12. .NET WinRT Interop  RCW = Runtime Callable Wrapper  Zwiększa reference counting obiektu ABI  Implementuje finalizator który zmniejsza reference counting  Marshal.ReleaseComObject = Dispose  CCW = ABI Callable Wrapper  Odwołanie do obiektu zarządzanego jako do COM  Kosztowne? NIE!  Ale – można też pracować z typami WinRT!  void SetVal(int index, int value); - AUĆ  void SetValRange(int start,int length,int[] values);  Albo – przyjąć jako parametr IBuffer i go wypełnić
  • 13. Typy .NET a WinRT  Tylko klasy „sealed” (oprócz kontrolek XAML)  Stąd – interfejsy popularne! List<string> vs IList<string> | IVector<T>  Sygnatury API muszą wykorzystywać typy WinRT  Część typów ma sposoby na konwersję – np. extension methods  Typy generyczne – NIE; Virtual – NIE  Struktury mogą mieć tylko publiczne pola  Uwaga! Mówimy o przekazywaniu, nie implementacji  Uwaga na tablice i kolekcje  Nietypowe przekazywanie przez referencję / readonly
  • 14. 01 Demo – 3 2 „ciekawostki” API z „Async” Z tablicy do strumieni w JS (2 style pracy z plikami – pominąć – w materiałach)
  • 15. (Demo na slajdach) Klient C# - bez problemu (ale on może też „natywnie” – bez żadnych pośredników Klient JS – promises (.then, .done, funkcja progres); jedyne ograniczenie – nie da się bezpośrednio CancellationToken przekazać. Ale da się async anulować (.Cancel )
  • 17. Pojemniki DI/IoCUnity, Autofact  Problem: dużo komponentów, związki przez „dodaj referencję”…  Dependency Injection, Inversion of Control  Rozwiązania:  Unity (P& P) – DI + przechwytywanie typów + instancjonowanie  Autofac – jeden z pierwszych pojemników DI / IoC (2007)  MEF – lekkie narzędzie do kompozycji, rozszerzenia, dynamiczne odkrywanie dzięki atrybutom  Generalnie –uwagi: Jutro, 12:00-13:00 systemów obowiązkowe Sesja warta dla większych Bartłomiej Zass: Tworzenie aplikacji dla Windows Phone i Windows 8 – dwie pieczenie przy jednym ogniu (w skrócie – MVVM/PCL/strategie);
  • 18. Demo Unity w Windows 8 (malutki Portable Library + autofac) (Malutkie MEF)
  • 19.
  • 20. Co to obiekt ABI?  Bazuje na koncepcjach COM  Binarny standard komponentu  Referencja do obiektu WinRT (czyli ABI) to wskaźnik do wskaźnika do vtable która zawiera tablicę wskaźników do funkcji interfejsów. Pierwsze dwa to:  IUnknown  IInspectable
  • 21. Czyli:  Każdy obiekt WinRT implementuje IUnknown  AddRef / Release / QueryInterface  (+ WeakReference do unikania zapętleń cyklicznych)  Każdy obiekt WinRT implementuje IInspectable  GetIids – lista ID interfejsów  GetRuntimeClassName – nazwa (z przestrzenią nazw), na przykład  Windows.Foundation.Collections.IVector`1<IMap’2<…>>  GetTrustLevel (Base / Partial / Full)  IActivationFactory (jak stworzyć obiekt)
  • 22. WinMD, CLI  Czyli – ILDASM, Reflector
  • 23. Mamy fragment w C++ - co dalej  C++/CX, Windows Runtime  WRL, Windows Runtime C++ Component Template Library  Mapują wzorce C++ (konstruktor...)  Niezależne od kompilatora (znane na interfejsy COM template); pełna kontrola nad  Mapuje pomiędzy wyjątkami a wydajnością (zwłaszcza Marshaling wartościami HRESULT jak się odbywa + cykl życia).  Odwzorowuje wyjściowe parametry i  HRESULT, IDL itp zwracane wartości  Cel podstawowy: Łatwa migracja ATL  Zapewnia automatyczną obsługę / inne -> WRL zliczania referencji dla wskaźników  "C:Program Files (x86)Windows do obiektów Windows Runtime Kits8.0IncludeWinRTwrl"  Odczyt i zapis metadanych
  • 24. A ja mam binarny komponent…  NIE DZIAŁA! Binarnie się nie da – trzeba mieć kod…  Dlaczego? Bo WinRT: Wymaga by komponenty były „ACTIVABLE”  To znaczy (uproszczenie!) – by można było wywołać domyślny konstruktor  Ale obiekt ABI może być używany jako obiekt COM  (domyślnie jest tak deklarowany; można to wyłączyć)  Opcja: zewnętrzne hostowanie + komunikacja typu RPC – będzie dalej
  • 25. Demo – rejestr – jak to działa w środku Windows 8
  • 27. Migracja C++?  Lektura tu  Pakujemy w WRL; Czasami wygodniej – skonwertować do C++/WX  Uwaga! Da się wołać dowolne Win32 API  Ale – nie przejdzie to certyfikacji!
  • 29. To też działa w drugą stronę…  Aplikacja „desktop” może wołać WinRT  How to: Add or Remove References By Using the Reference anager  Po zmianie .csproj, normalnie – wywołujemy metody  Błędy – sprawdzić czy jest dodane WindowsRutnime, InteropServices  Uruchomienie Modern UI Apps (patrz rejestr):  IApplicationActivationManager::ActivateApplication  start knownfolder:{1e87508d-89c2-42f0-8a7e-
  • 30. DEMO (trochę proste – jak wołać z trybu desktop WinRT)
  • 32. Uwierzytelnianie i bezpieczeństwo Zintegrowane Certyffikacja dla Wieloczynnikowe Federacja - ADFS Single Sign On z Uwierzytelnianie uwierzytelnianie appsa - My i uwierzytelnianie Live, Facebook, it Windows Root p.. Izolowane Mechanizm Wsparcie Crypto APIs Podpisywanie Bezpieczeństwo pojemniki „zdolności” SSL/TLS aplikacji Appsów
  • 33. Bezpieczeństwo – co może W8  Kryptografia  Klucze symetryczne / asymetryczne  Dziedziczenie kluczy na podstawie hasła  Kody HMAC (message authentication)  Podpisywanie treści  DPAPI – (DataProtection) – statyczne / strumienie danych  Kodowanie  PKI  Tworzenie certyfikatów, też self-signed, importowanie PFX, SmartCard  Certyfikaty z „My”  Zablokowanie dziedziczenia zaufania z systemu  Per aplikacja – root certificates / trusted certificates  Kryteria: Hardware-based, wynikające z łańcucha, automatyczny wybór
  • 35.
  • 36. Trzy rozwiązania (technologie)  Serwer:  Tradycyjne usługi Web – WCF  Usługi w stylu REST  Pisane w WCF | Pisane w ASP.NET MVC Web Api <- prościej  OData – formalny sposób dostępu do baz relacyjnych | Azure Mobile Services  WebSocket – MessageWebSocket i StreamWebSocket (callback)  Klient  WCF – „Add Service Reference”  REST – tak proste że „add” nie jest potrzebne  WebSocket  JavaScript – bardzo naturalne  C# - praca ze strumieniami | NetHttpBinding
  • 37. WCF  Binding  BasicHttpBinding | NetTcpBinding | NetHttpBinding | CustomBinding  Binding elements  BinaryMessageEncodingBindingElement | TextMessageEncodingBindingElement | ConnectionOrientedTransportBindingElement | SslStreamSecurityBindingElement | WindowsStreamSecurityBindingElement | TcpTransportBindingElement | Http(s)TransportBindingElement | TransportSecurityBindingElement
  • 38. WCF Services  Bezpieczeństwo  None, Transport, TransportWithMessageCredential, TransportCred entialOnly  ClientCredentialType: None, Basic, Digest, Negotiate, Ntlm, Windows  Transfer Mode: Buffered, Streamed, StreamedRequest, and StreamedResponse  DataContractSerializer, DataContractJsonSerializer, XmlSeri alizer  ChannelFactory, DuplexChannelFactory, CallbackBehavior
  • 39. Uwaga!  Nie ma:  WSHttpBinding  NetMsmqBinding  NetPeerTcpBinding  UdpBinding
  • 40. Drobiazgi  Brak pliku konfiguracyjnego XML  Kod do Reference.cs  ConfigureEndpoint  E… to może wszystko ręcznie? < PROŚCIEJ!  Tylko async (Task)  Internet & Private Network & Enterprise Authentication  TransportWithMessageCredential – bezpieczne przekazanie hasła  […]Security.Mode = […].BasicHttpSecurityMode.TransportCredentialOnly  […]. ClientCredentialType = […].HttpClientCredentialType.Windows;
  • 41. REST services  WebClient HttpClient  Działa z async  Implementacja w System.Net  HttpClient definuje  Get(Async)  Zwraca HttpResponseMessage  Put(Async)  Post(Async)  Delete(Async)  RESTful!  Wreszcie 
  • 42. Analiza odpowiedzi…  XML: LinqToXML, XmlReader/XmlWriter, XmlSerializer  JSON:  Zbudować JsonObject i przekazać zwrócony łańcuch  Metoda Parse()  Rzuca wyjątek gdy łańcuch błędny  Można: GetNamedString(), GetNamedNumber()  Indexer – działa, ale WOLNO = nie używać  Z WCF: DataContractJsonSerializer  NuGet: JSON.NET
  • 43. Windows Store app for banking: code walkthrough (Windows Store apps using JavaScript and HTML) A może certyfikaty? 1. Logowanie do aplikacji hasłem jednorazowy 2. Serwis wołany z danym hasłem jednorazowym CreateRequestAsync 3. Serwis generuje plik PFX 4. Serwis przekazuje plik do klienta 5. Klient (Modern UI) importuje plik do Appsa ImportPfxDataAsync InstallCertificateAsync 6. No i reszta komunikacji przy użyciu wzajemnego uwierzytelnienia i certyfikatów  Muszą się zgadzać  Certyfikaty | URL-e serwisów | (normalne wymagania PKI)  Zamiast 2-5 certyfikaty mogą być generowane w infrastrukturze firmowej
  • 44. Certyfikaty w aplikacji Windows 8 <?xml version="1.0" encoding="utf-8"?> <Package xmlns="http://schemas.microsoft.com/appx/2010/manifest"> <Extensions> <Extension Category="windows.certificates"> <Certificates> <Certificate StoreName="Root" Content="myroot.cer" /> <Certificate StoreName="CA" Content="mystandca.cer" /> <Certificate StoreName="Root" Content="Serverowy.cer" /> <Certificate StoreName="My" Content="sample_cert_P@ssw@rd1.pfx" /> <TrustFlags ExclusiveTrust="true" /> Bez ufania systemowi! <SelectionCriteria AutoSelect="true" /> </Certificates> </Extension>
  • 45. DEMO VS Jako ADMIN REST, WCF i autoryzacja + odrobina WebSocket Też ODATA!
  • 46. A serwer na tym samym komputerze?  Loopback zablokowany na maszynach niedeveloperskich  CheckNetIsolation LoopbackExempt -a -n=0e3d3bc9-242c-4a2f-b4ba- 67f401039f2f_xhszanydfyfm8  Nie przejdzie certyfikacji przez sklep aplikacja zależna od innego serwisu na tej samej maszynie  Ale – jak ten serwis będzie też w Internecie..  Idea: konto demo, itp.  Sideloading – OK  Modern UI Apps może być tylko KLIENTEM  Ale – mamy WebSocket, DuplexContract itp..
  • 47. DEMO Serwer i serwis na tej samej maszynie
  • 48. Identyfikacja „klienta”  Użytkownika:  Login / password (własne)  Live ID (z Live Connect)  Facebook, Google ID itp.  Dostajemy to o co prosimy (np. – tylko unikalny AID; dla naszego appsa)  Urządzenie: ASHWID i GetPackageSpecificToken
  • 49. Składniki ASHWID  4 bajty na blok (2 – komponent, 2 – wartość)  Nie ma korelacji pomiędzy aplikacjami (ASHWID per apps)  Nie planowane do reklam! Kod Komponent 1,0 Processor  Niezmienne, gdy: 2,0 Memory  Reinstalacja OS 3,0 Disk Device 4,0 Network Adapter  Reset urządzenia 5,0 Audio Adapter  Aktualizacja OS SKU 6,0 Docking Station 7,0 Mobile Broadband  Aktualizacja wersji aplikacji 8,0 Bluetooth  Zmiana użytkownika na urządzeniu 9,0 System BIOS
  • 50.
  • 51. Tablet 1Ghz / 768 MB + obliczenia – hmm  Rozwiązanie: 1. Klient woła usługę 2. Usługa liczy 3. Usługa wysyła przez Push Notification że obliczenia zostały zakończone 4. Klient 1. Albo subskrybuje się (Background Task) na Raw Notification 1. Apps musi działać by odebrać, na pierwszym planie 2. Albo – dostaje pięknie wyglądającego Toast-a i „klika”
  • 53.
  • 54. Podstawy podstaw: C#  <TextBox x:Name="MyTextBox" Text="Text" Foreground="{Binding Brush1, Mode=OneWay}"/>  MyColors textcolor = new MyColors(); textcolor.Brush1 = new SolidColorBrush(Colors.Red); MyTextBox.DataContext = textcolor;  Źródła:  List<T> IEnumerable<T>  ObservableCollection<T> : Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged  CollectionViewSource
  • 55. Podstawy podstaw: JavaScript  WinJS.Binding.optimizeBindingReferences = true;  var person = { name: "Fran" };  <div>Welcome, <span id="nameSpan" data-win-bind="innerText: name"></span>  var personDiv = document.getElementById("nameSpan");  WinJS.Binding.processAll(personDiv, person);
  • 56. Ładowanie z opóźnieniem | wirtualizacja danych  ISupportIncrementalLoading  HasMoreItems  Windows.Foundation.IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync  Nie zapomieć o: NavigationCacheMode = NavigationCacheMode.Enabled; OnNavigatedTo(NavigationEventArgs e){ if (this._pageKey != null && e.NavigationMode == NavigationMode.Back) return; }  Inaczej – losowe problemy (głównie z współbieżnością i pamięcią)
  • 58. Dane lokalne  ObservableCollection  Potem - forma cache  LinqToXML | LinqToObject  SQLite  - zaleta – mamy bazę relacyjną, rozumiejącą SELECT  Potem – zapis z cache do zewnętrznego pojemnika  Koncepje „stare”, jeszcze z DataSet   Współbieżność, kontrola kiedy coś zostało zapisane, konflikty.  Nie zapomnieć o Suspend!
  • 59. Demo Lokalne cache Opcje + proces A może: zapis zawsze lokalnie, a potem „replikacja”? Tu: SQL Lite
  • 60.
  • 61. Wyzwanie - komunikacja i „detekcja” zmian  Kontrakty Share  Share – tak, ale tylko z „moimi” aplikacjami  Potwierdzanie „odebrania” pakietu  Strumień dużego obiektu  File Open Picker  Kwerendy na plikach (a’la WinFS)  (Wspomniane już usługi)
  • 63. Dla firmy (dokładniej – dla tych co mają Win Enterprise / klucz SLK i ufają certyfikatowi)
  • 64. Co jest potrzebne  Centralne repozytorium aplikacji (udział sieciowy)  Narzędzia:  Dołączyć do domeny LUB  Slmgr /ipk <sideloading product key>, potem slmgr /ato ec67814b-30e6- 4a50-bf7b-d55daf729d1e  add-appxpackage C:app1.appx –DependencyPath C:winjs.appx  Lub: DISM /Online /Add-ProvisionedAppxPackage /PackagePath:C:App1.appx /SkipLicense  „CopyProfile” z gotowymi wzorcami nowego „menu start”  (Też Windows RT)
  • 65. Co i gdzie ustawić
  • 66. Różne  Get-AppxPackage | Where-Object {$_.InstallLocation - NotMatch "C:Program FilesWindowsApps" } | Where- Object {$_.InstallLocation -NotMatch "C:Windows" }| Remove-AppxPackage -Package {$_.PackageFullName}  W taki sam sposób  Inwentaryzacja  Sprawdzenie wersji / aktualizacji itp.  MSI może zainstalować APPX!
  • 67. Certyfikat do podpisania takiej aplikacji  Serwer certyfikatów (tryb Standalone – wygodniej zmieniać SN)  Code Signing Certificate Template  Żądanie – krytyczne – Subject!  Konwersja (certreq -New AppxCodeSign.inf CodeSignReq.req)  Wkleić żądanie w portal (poczekać na akceptację)  Pobrać certyfikat i zaimportować go do Visual Studio  Dodać CA do Root dla MASZYNY (nie usera!)
  • 68. DEMO (raczej przegląd przez polecenia) Przegląd sideloading
  • 69. Podsumowanie 0  Budowa modułowa – tak jak zwykle  Komponenty WinRT i ABI pomiędzy językami  ClassLibrary jeśli nie opuszczamy .NET  Autofact.dll, inne DI, Unity – w zależności od potrzeb – takie same narzędzia jak w normalnym .NET   Niesamowite możliwości łączenia języków = ŁATWIEJ i SZYBCIEJ  (Dygresja – VB a C# w roku 2002 a HTML i C# w roku 2012)
  • 70. Podsumowanie I – „Dlaczego”  Dlaczego aplikacje „biznesowe” w Modern UI i Windows 8  No bo… taki jest świat  Za chwilę nie będzie gdzie uruchamiać aplikacji Windows Forms   A chwilę później – WPF, SL  Web – nie zawsze pasuje!  Inne style używania aplikacji  Inne style biura / użytkownika / pracy  Biznesowe a Sklep – też się DA  Demo Web Services, w konfiguracji wskazywane „firmowe” itp.
  • 71. Podsumowanie II - Technicznie  Dlaczego aplikacje „biznesowe” w Modern UI i Windows 8  Sandbox (izolacja)  ZERO problemów ze zgodnością (no bo jak …); utrzymanie….  Niedoceniane: PC Refresh (zostawia appsy i pliki i sprząta z pozostałości!)  Instalacja = kopiowanie, nie ma zewnętrznych zależności  Bezpieczeństwo!  Certyfikacja  Windows Store – Microsoft sprawdza czy działa  Użytkownik zarządza, dokonuje płatności itp  Sideloading – można sprawdzić wewnątrz firmy + np. WACK  Firma zarządza | „Lekka” kontrola prywatnych urządzeń  Fast & Connect & Offline & …  Jak zawsze: bezproblemowa współpraca z posiadaną infrastrukturą
  • 72. Wypełnij ankietę i wygraj nagrody! Organizatorzy MTS czytają Wystarczy 5 minut Twojego wszystkie ankiety. czasu na wypełnienie ankiety! Dzięki nim masz realny wpływ na Masz szansę wygrać m.in. konferencję oraz merytorykę i wejściówkę na MTS 2013 (25x) prelegentów kolejnego MTS. oraz inne nagrody. Gdzie i jak?  Ankiety dostępne są online – na stronie konferencji (konferencjamts.pl)  Można je wypełnić od dziś, aż do 11 listopada 2012
  • 73. Strefa Ekspertów (ATE)  Strefa ATE dostępna jest w strefie Partnerów  Zapraszamy wszystkich zainteresowanych poszerzeniem wiedzy  Eksperci będą do Państwa dyspozycji  Ja będę tam:  (za chwilę – przy okazji imprezy)  20121030 11:40 – 12:30 (jak skończę sesję o Azure + kilka minut)
  • 74. Polskie aplikacje na Windows 8 http://www.microsoft.com/poland/windows8/polskie-aplikacje/
  • 75. © 2012 Microsoft Corporation. Wszelkie prawa zastrzeżone. Microsoft, Windows oraz inne nazwy produktów są lub mogą być znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Microsoft w Stanach Zjednoczonych i innych krajach. Zamieszczone informacje mają charakter wyłącznie informacyjny. FIRMA MICROSOFT NIE UDZIELA ŻADNYCH GWARANCJI (WYRAŻONYCH WPROST LUB DOMYŚLNIE), W TYM TAKŻE USTAWOWEJ RĘKOJMI ZA WADY FIZYCZNE I PRAWNE, CO DO INFORMACJI ZAWARTYCH W TEJ PREZENTACJI.

Notas del editor

  1. SLAJD OBOWIĄZKOWY (proszę nie usuwać)Jest to slajd archiwizacyjny, więc prezentację na sali na MTS rozpoczynamy od slajdu 2 – tytułowego.
  2. Podczas tej sesji omówione będzie Windows, 8, z punktu widzenia developera, który głównie chce zbudować tzw. aplikacje „Line of Business”. Przeanalizowane zostanie także, w jaki sposób WinRT zapewnia współpracę pomiędzy komponentami napisanymi w różnych technologiach oraz mechanizmy w Windows 8, które pozwalają łatwiej migrować starsze fragmenty kodu. Uwaga! Część z tych informacji będzie nieprzydatna dla aplikacji, które mają być opublikowane w Store – zakładana jest instalacja typu „side-loading” (czyli generalnie wdrażanie aplikacji w ramach przedsiębiorstwa).
  3. SLAJD DOMYŚLNIE UKRYTYMożna w nim podać namiary kontaktowe na prelegenta (nie jest to obowiązkowe).Mają one pozwolić (po pobraniu prezentacji) skontaktować się z prelegentem.Można również pokazać ten slajd na prezentacji.
  4. SLAJD OBOWIĄZKOWY (proszę nie usuwać, i wypełnić zgodnie z instrukcją powyżej)PROSZĘ POKAZAĆ GO NA SESJI!
  5. Przechowują wrażliwe dane (też prywatność)Zagrożenia: Kradzież, Tablet zostawiony w toalecieKomunikują się z zapleczem (bezpiecznie!)Ale – sieć hotelowa, kafejka, sieć domowaZwykle „danych” jest bardzo dużoSpadek po myśleniu w ramach architektury 2 warstwowejCzasami są wielomodułoweZwykle mają historię z brodąVB6, C++, MFC, …Zwykle zawierają jakieś ważne algorytmy – publiczny sklep? NIGDYWygląd…
  6. Z drugiej strony, mamy
  7. Jakoś tak wyszło że zadowoleni pracownicy lepiej pracują
  8. Aplikacja w .NET ma klasyczny GCGen 0 – obiekty do 85000 bajtów, Gen 1Gen 2 – odśmieca także Large Object HeapWinRT – referencecounting + Weak Reference by uniknąć cyklicznych zapętleńWindows 8 jako OS: Usprawnienia w pamięciWspółdzielone strony pamięciPo modyfikacji są kopiowane jako prywatne dla procesuGłównie Memory-MappedFiles (czyli DLL-ki)Podział na często i rzadko zmienianie struktury danych
  9. Autofac: http://www.codeproject.com/Articles/25380/Dependency-Injection-with-Autofachttp://akashkava.com/blog/391/mef-vs-unity-in-composite-application-prism/
  10. Binarny standard komponentówKlasy i Co-Clases mają ID (GUID) (i ew. nazwy)Class – coś co definiuje interfejs (GUID); kontrakt; czego się może spodziewać wywołującyCoclass – konkretna implementacja (np. danego algorytmu szufrowania). Jedna class wiele coclass dla danej implementacjiRejestr HKEY_CLASSES_ROOT\\CLSID – gdzie DLL„Nowoczesne” – też bez rejestruMetadane w TLBInstancjonowanie in-proc,out-proc, remote (DCOM)DllGetClassFactory -&gt; IClassFactory -&gt; CreateInstanceCzas życia:AddRef / Release; licznik referencjiSTA / MTA (apartment)Dane przekazywane pomiędzy apartamentami/wątkami są KONWERTOWANE (kopiowane, marshaled)
  11. Dodać uruchamianie aplikacji
  12. Przegląd przez przykład z SDK
  13. Bindings -BasicHttpBindingNetTcpBindingNetHttpBindingCustomBindingBindingelements -  BinaryMessageEncodingBindingElementTextMessageEncodingBindingElementConnectionOrientedTransportBindingElement SslStreamSecurityBindingElementWindowsStreamSecurityBindingElementTcpTransportBindingElementHttp(s)TransportBindingElementTransportSecurityBindingElementEncoding -  Text, Binary Security modes -  None, Transport, TransportWithMessageCredential, TransportCredentialOnly (for BasicHttpBinding) ClientCredentialType -None, Basic, Digest, Negotiate, Ntlm, Windows Transfer Mode -Buffered, Streamed, StreamedRequest, and StreamedResponse   Serializers -   DataContractSerializer, DataContractJsonSerializer, XmlSerializer Miscellaneous -ChannelFactoryDuplexChannelFactory    CallbackBehavior   
  14. Done
  15. start knownfolder:{1e87508d-89c2-42f0-8a7e-645a0f50ca58}\\09B6C2D8.TheTreasuresofMontezuma3_hbbh9szp6erha!App
  16. Get-WindowsDeveloperLicenseRegistrationGet-AppxPackageGet-AppxPackage | Where-Object {$_.InstallLocation -NotMatch &quot;C:\\\\Program Files\\\\WindowsApps&quot; } | Where-Object {$_.InstallLocation -NotMatch &quot;C:\\\\Windows&quot; }| Remove-AppxPackage -Package {$_.PackageFullName}
  17. SLAJD OBOWIĄZKOWY (proszę nie usuwać i nie zmieniać)PROSZĘ POKAZAĆ GO NA SESJI!
  18. SLAJD OBOWIĄZKOWY (proszę nie usuwać, można dopisać godziny swojego „dyżuru” w strefie ATE – lub usunąć tą część o swojej obecności)PROSZĘ POKAZAĆ GO NA SESJI!
  19. Tu wpisujemy AGENDĘ
  20. SLAJD OBOWIĄZKOWY (proszę nie usuwać i nie zmieniać)