1 / 101

Microsoft .NET Framework 3.0 Razvojne tehnologije srednjega sloja

Microsoft .NET Framework 3.0 Razvojne tehnologije srednjega sloja. Matev ž Gačnik Microsoft regionalni direktor Microsoft MVP – Solution Architect Vodja področja razvoja aplikacij Gama System d.o.o. Namen. Zakaj .NET Framework 3.0? Zgodovina WPF, WCF, WF Srednji sloj:

lacy-buck
Download Presentation

Microsoft .NET Framework 3.0 Razvojne tehnologije srednjega sloja

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Microsoft .NET Framework 3.0 Razvojne tehnologije srednjega sloja Matevž Gačnik Microsoft regionalni direktorMicrosoft MVP – Solution ArchitectVodja področja razvoja aplikacijGama System d.o.o.

  2. Namen • Zakaj .NET Framework 3.0? • Zgodovina • WPF, WCF, WF • Srednji sloj: • Podpora storitveni usmerjenosti • Prezentacijski sloj: • Podpora naprednim grafičnim vmesnikom

  3. SOA!= spletne storitve Storitveno usmerjene arhitekture Matevž Gačnik Microsoft regionalni direktorMicrosoft MVP – Solution ArchitectVodja področja razvoja aplikacijGama System d.o.o.

  4. Agenda • Objektni in storitveni ekosistem • Storitve • Obstoječe tehnologije • WCF

  5. Definicije Storitev “Program, s katerim komuniciramo v obliki sporočil.” Odjemalec “Program, ki sporočila pošilja.” Storitvena usmerjenost “Gradimo sisteme, ne aplikacij.”

  6. Objektni ekosistem public class IAmHereToStay{} • Ideja je odlična • Uporabljena najprej na področju strojne opreme • Ni skalabilna • Prehod meje je problem • Heterogenost draži abstrakcijo (COM) • Oddaljenost draži abstrakcijo (DCOM) • Objekti ostajajo • Objekti implementirajo storitve

  7. Storitveni ekosistem Upoštevanje meja • Meje so pomembne tudi v realnem življenju • Čim manj deljenih abstrakcij • Nočem! • Če imam, sem vezan! • Stabilno jedro • Komunikacija s sporočili • Request – response sporočilni vzorec • Obstajajo drugi sporočilni vzorci

  8. Storitev <> Spletna storitev • Storitev • Je avtonomni program • Sprejema sporočila (če želi) • Oddaja sporočila (če želi) • Interna arhitektura je odjemalcem skrita • Spletna storitev • Definira storitveno fasado • Je lahko del storitve • Predstavlja komunikacijsko orodje • Dve storitvi lahko komunicirata preko ene ali več spletnih storitev Storitev Spletna storitev Odjemalci

  9. Trditev 1:Meje morajo biti jasne • Slabo: StockQuotes objRef = new StockQuotes(); objRef.GetLatestStockDailyValue(stock); • Slabo: [WebMethod] public DataSet GetDataSet(string strParams) {} • Zakaj? • Zato: foreach (decimal sub in subTotals) { total = GetLatestStockDailyValue (stock) * sub; } • Razvijalec se mora zavedati, kdaj prečka mejo

  10. Trditev 2:Storitve so avtonomne • Storitev je samozadosten program, ki se: • Samostojno namesti • Samostojno verzionira • Samostojno brani • Samostojno zagotavlja integriteto • Avtonomno obnašanje storitev • Nimamo pojma kdo kliče • Nimamo kontrole koliko časa bo še klical(a) • Nimamo pojma kako pomagati

  11. Trditev 3:Delimo shemo in pogodbo, ne razreda • Delimo: • Pogodbo obnašanja • Definira sporočilne vzorce • Sporočilno shemo • Opisujejo format in ne implementacije • Pogodba: • WSDL • WS-Policy • Opisuje obnašanje • Shema: • Znotraj WSDL, <types>…</types> • Opisuje stanje, instanca

  12. Trditev 4:Polica komunikacije • WSDL je premalo • Potrebujemo metapodatke o sposobnostih in zahtevah • Išče se skupni imenovalec • WS-Policy

  13. Torej • Trditev 1: Meje morajo biti jasne • Trditev 2:Storitve so avtonomne • Trditev 3: Delimo shemo, ne razreda • Trditev 4: Polica komunikacije

  14. Storitve in Microsoft • Imate orodja • .NET Framework 1.1 • MSMQ • Enterprise Services • ASMX (spletne storitve ASP .NET) • WSE 1 (starinarnica) • WSE 2 SP3 (danes) • .NET Framework 2.0 • WSE 3 • ASMX 2.0 • .NET Framework 3.0 • WCF (skoraj, [RC1, September 2006])

  15. Kompatibilnost • Ne obstaja • WSE 1.0 in WSE 2.0 • Žica: Nekompatibilno • Objektni model: Nekompatibilno • WSE 2.0 in WSE 3.0 • Žica: Nekompatibilno • Objektni model: Nekompatibilno • WSE 3.0 in WCF: Slabo kompatibilno • Žica: Kompatibilno • Objektni model: Nekompatibilno

  16. Povzetek • Storitve • Meja se spoštuje • Avtonomnost • Shema, ne razred • Polica komunikacije • WS-* • Metapodatki • Varnost • Zanesljivost • Transakcije • Orodja • ASMX + WSE (Web Services Enhancements) • WCF

  17. ? Matevž Gačnik Vodja področja razvoja aplikacijMicrosoft regionalni direktorMicrosoft MVP – Solution Architect Gama System d.o.o. http://www.gama-system.si matevz.gacnik@gama-system.si

  18. WCF Windows Communication Foundation Matevž Gačnik Microsoft regionalni direktorMicrosoft MVP – Solution ArchitectVodja področja razvoja aplikacijGama System d.o.o.

  19. Agenda • Uvod • Kaj je WCF? • Kako ga lahko primerjamo z obstoječimi tehnologijami • Pomembnost, vpliv tehnologije • Storitve • Definicija storitvenih pogodb • Načini konfiguracije • Varnost, zanesljivost, transakcije • Instanciranje

  20. Kaj je WCF? • Ogrodje za gradnjo povezanih sistemov • Programski model • Komunikacijska infrastruktura • Enoten programski in administracijski model za: • Spletne storitve ASMX • .NET Remoting • .NET Enterprise Services • MSMQ • Polna podpora za standardne protokole • WS-I Basic Profile 1.1 (XML, XSD, SOAP, WSDL, UDDI) • Protokole WS-*

  21. WCF • Poenoti današnje porazdeljene sklade tehnologij • Sestavljiva funkcionalnost • Primerna za uporabo med procesi, med računalniki in čez internet Unifikacija “Enotno ogrodje za gradnjo storitveno usmerjenih rešitev na platformi Windows” • Čez-platformna interoperabilnost • Integracija z Microsoftovimi produkti • Interoperabilnost z današnjimi skladi Interoperabilnost • Storitveno usmerjeni programski model • Podpora vsem SOA funkcionalnostim • Maksimalna produktivnost za gradnjo SOA Storitvenausmerjenost

  22. Napredek abstrakcije Povezovanje Zbirni jezik Doseg Kompleksnost razvoja Aplikacijska funkcionalnost jmp endif endif: Izvajalnadatoteka Sklad klica Objektna usmerjenost public class Trader : iTrade { int ExecuteTrade(); } Modul Aplikacija Komponente public class Calc { int Add(int x, int y); } Vmesnikkomponente Platforma Storitve class TradeApp { [WebMethod] message ExecuteTrade (); } VmesnikWSDL Splet

  23. Porazdeljeni skladi danes StoritveInteroperabilnostASP.NET integracija KomponenteTransakcijeCOM+ integracija Objekti Razširljivost CLR integracija VrsteZanesljivostMSMQ integracija • Vsak sklad ima drugačne prednosti in namene uporabe • Zaradi zahtev večkrat obstaja potreba po mešanju skladov • Zanesljive storitve (WSE) • Transakcije (ES) • Itd...

  24. Unifikacija Storitveno usmerjeno Interoperabilno Sporočilno usmerjeno programiranje Atributivno programiranje Protokoli WS-* Sestavljivost Nadgradljivost

  25. Evolucija storitev WCF Evolucija Enoten sklad tehnologij, polna WS-* podpora Dodaja WS-I BP, System.Transactions .NET Fx 2.0 ASMX Dodaja varnostno podporo in podporo policam, druge transporte ASMX+WSE2/3 ASMX Osnovni SOAP in WSDL čez HTTP

  26. WCF: od mesarja do kirurga • Razvijalci pišejo storitve, ki se odzivajo na sporočila • WCF storitve se izvajajo znotraj CLR • WCF sporočila uporabljajo podatkovni model SOAP • Storitve oddajajo naslovljive končne točke • Storitve implementirajo pogodbe, ki opisujejo izmenjana sporočila • Posamezne pogodbe so strukturne (shema) aliobnašalne (vmesnik) • Pogodbe omejujejo tok sporočil preko kanala, med iniciatorjem in storitvijo

  27. Transport Enkoder Protokol(i) Transport Enkoder Protokol(i) Arhitektura WCFIzvajalno okolje sporočanja Storitev Pogodba in obnašanja Odjemalec Usmerjevalec Vezava Naslov

  28. Data Contract Message Contract Service Contract Policy & Binding Inspection Facilities Activation Behavior MetadataBehavior ErrorBehavior TransactionBehavior Instance Behavior Instance Behavior Throttling Behavior ConcurrencyBehavior Cmd/Control Facilities Text/XML Encoder SOAP Security Channel SOAP Reliability Channel Binary Encoder UDP Channel TCP Channel X-Proc Channel HTTP Channel Queue Channel WAS Avalon .EXE NT Service COM+ WCF arhitektura Aplikacija Pogodbe Izvajalno okolje Sporočanje Aktivacija

  29. Koda storitve Pretvorba Tip -> pogodba Pretvorba Pogodba -> tip TCP prenosni kanal TCP prenosni kanal Instanciranje storitve Varnostni kanal Varnostni kanal Transakcije Transakcije Sporočilni nivo Nivo izvajalnega okolja Spreminja način izvajanja v odvisnosti od vsebine sporočil Prenaša sporočila in dodaja prenosno semantiko Sestavljiva arhitektura Unifikacija se dosega s pomočjo sestavljive arhitekture

  30. Spletne storitve <> Storitve Povezovanje Spletne storitve Doseg [ServiceContract] classEnterpriseTradeApp { [OperationContract] message ExecuteTrade (); } class TradeApp { [WebMethod] message ExecuteTrade(); } HTTP WSDL Storitve WSDL Neomejeno WS-MEX

  31. Gostovanje • Štirje načini • IIS (Internet Information Services) • WAS (Windows Activation Services) • Windows servis • Aplikacija

  32. Code-first <> contract-first • Obstajata dva načina za izdelavo storitvenih pogodb • Začnemo s kodo (code-first) • Začnemo s pogodbo (contract-first) • Code-first • Izdelamo razrede ASMX, anotiramo z atributi • ASMX generira WSDL • Dobimo generirani WSDL • Contract-first • Izdelamo WSDL (in XSD) • Generiramorazrede ASMX z uporabowsdl.exe /server • Možnost kontrole WSDL ASMX 2.0 in WCF podpirata oba načina

  33. Code-first razvoj • Omogoča razvoj v smislu razredov in metod • Uporablja večina ASMX razvijalcev danes • Preprosta uporaba, poudarek na objektih (in ne sporočilih) • Faza prevoda lahko pripelje do problemov z interoperabilnostjo • Kaj DataSet pomeni Java razvijalcu? Faza prevoda Zbir .NET WSDL Generira storitveno pogodbo iz razredov .NET Uporabi WSDL Izdela razrede .NET

  34. Contract-first razvoj • Prisili k razmišljanju o pogodbi v deljenem jeziku (WSDL, XSD) • Načrtovanje se usmerja na format sporočil in njihovo izmenjavo • Prevod iz deljenega jezika v implementacijo • Omogoča delo več sodelujočim hkrati • Generiranje kodeizdela vse potrebne atribute ASMX • Odstranitev prevoda poveča interoperabilnost Izdela WSDL Uporabi WSDL WSDL Obe strani izdelata kodo iz iste definicije WSDL

  35. Contract-first namigi • Upoštevajte naslednje korake: • Uporabite VS.NET ali druga orodja za izdelavo XSD in WSDL • Generirajte razrede ASMX z uporabowsdl.exe /server • Dodajte generirane razrede v projekt • Implementirajte metode v generiranih razredih • Določite lokacijo dokumenta WSDL z uporabo atributa[WebServiceBinding] in lastnosti Location

  36. Kdaj uporabiti contract-first • Uporabite code-first, ko interoperabilnost ni pomembna • Imate kontrolo nad obema stranema žice, .NET na obeh straneh • Uporabite contract-first, ko je interoperabilnost pomembna • Poudarek na izmenjanih sporočilih (npr. BizTalk) • Ko je potrebno implementirati podano pogodbo • Ko z drugimi sodelujete na deljeni pogodbi

  37. Contract-first razvoj v WCF • WCF preferira contract-first • Obstajajo ekvivalentne pogodbe: • V svetu CLR • V svetu WSDL • WCF podpira poljuben začetek • Z interface ali class • Z WSDL, svcutil.exe

  38. WCF pogodbeVrste pogodb • Storitvena pogodba je sestavljena iz: • Pogodbe obnašanja([ServiceContract]) • Definira vhodna in izhodna sporočila • Sporočila so vezana na operacije • Podatkovne pogodbe([DataContract]) • Definira vsebino sporočil • V svetu ASMX je podatkovna pogodba implicitna • Sporočilna pogodba ([MessageContract]) • Namenjena natančnejši granulaciji sporočila v SOAP sporočilu

  39. Ideja storitvene pogodbe • Poenoten opis funkcionalnosti storitve • Svet je heterogen • Objektni svet ne sme omejevati storitvenega sveta • Storitvena pogodba definira obliko sporočil in obnašanje storitve • V svetu SOAP sta opisna jezika WSDL in WS-Policy, transportni protokol WS-MEX

  40. C C C B B B A A A Končna točkaEndpoint = ABC (Address, Binding, Contract) Odjemalec Storitev Sporočilo Address Binding Contract (Kje) (Kako) (Kaj)

  41. Končna točkaEndpoint • Storitev vedno komunicira s pomočjo končne točke • Sestava končne točke: • Naslov (Address) • Kje storitev posluša? • Povezava (Binding) • Kako storitev posluša? • Pogodba (Contract) • Kaj storitev posluša?

  42. NaslovAddress • Odgovarja na: • Kje storitev posluša? • En naslov na končno točko • WCF ne določa protokola • Končna točka lahko posluša na poljubnem protokolu (določa vezava) • TCP • UDP • HTTP • MSMQ • NamedPipe • ... • Več končnih točk na storitev

  43. VezavaBinding • Odgovarja na: • Kako storitev posluša? • Obstajajo standardne: • basicHttpBinding (WS-I 1.1) • wsHttpBinding (WS-*) • netTcpBinding (WCF – WCF) • netPeerTcpBinding (WCF – WCF) • ... • Mogoče jih je nadgraditi s poljubnimi kombinacijami parametrov

  44. PogodbaContract • Odgovarja na: • Kaj storitev posluša? • Objektna pogodba je lahko različna na odjemalcu in strežniku

  45. Storitvene pogodbeVrste pogodb • Storitvena pogodba je sestavljena iz: • Pogodbe obnašanja (behavioral contract) • Definira način obnašanja • Singleton, single call, seja , varnostne karakteristike, transakcijska semantika, metapodatki, ... • Strukturne pogodbe (structural contract) • Definira operacije, definira vsebino sporočil

  46. Strukturna pogodba • Vrste: • Enostavna strukturna pogodba • Predvideva izmenjavo netipiziranih sporočil • WCF: Tip System.ServiceModel.Message • Kompleksna strukturna pogodba, podatkovna pogodba • Izmenjuje tipizirana sporočila • Sem spadajo tudi klici RPC • WCF: [DataContract], [DataMember]

  47. Definicija pogodbe • Dva načina [ServiceContract] public interface IInterfaceContract { [OperationContract] void RequestSomething(Stuff objStuff); } public class StuffRequester : IInterfaceContract { void RequestSomething(Stuff objStuff) { } } // storitev implementira samo eno pogodbo [ServiceContract] public class StuffRequester { [OperationContract] void RequestSomething(Stuff objStuff); }

  48. Enosmerne pogodbeSporočilni vzorci • Operacije sprejemajo vhodna in potencialno vračajo izhodna sporočila • Enosmerno (One-way) • Metode označene z[OperationContract(IsOneWay = true)] • Vhodno sporočilo • Brez izhodnega sporočila • Pogoj: metoda ne sme vračati funkcijske vrednosti in imeti ref ali out parametra • Zahtevek – odgovor (Request – Reply) • Metode označene z [OperationContract] • Vhodno sporočilo • Izhodno sporočilo

  49. Dvosmerne pogodbeSporočilni vzorci • Pogodba lahko določa operacije, ki jih odjemalec mora implementirati • Take operacije so združene v povratni pogodbi(callback contract) [ServiceContract] public interface IEventDestination { [OperationContract(IsOneWay = true)] void ReceiveEvent(Event event); } [ServiceContract( CallbackContract = typeof(IEventDestination))] public interface IEventSource { [OperationContract(IsOneWay = true)] void Register(Client client); }

  50. Podatkovna pogodba • Tipi CLR in podatkovna pogodba nimajo nič skupnega [DataContract(Name = “Person1”)] public class Person2 { [DataMember(Name = “Name”)] public string name; [DataMember(Name = “Age”)] public int age; [DataMember(Name = “Wage”)] float salary; } [DataContract] public class Person1 { [DataMember] public string name; [DataMember] public int age; [DataMember] float salary; }

More Related