Professional Documents
Culture Documents
WCF WF
WCF WF
NET
Framework 3.0
Razvojne tehnologije srednjega
sloja
Matev Ganik
Microsoft regionalni direktor
Microsoft MVP Solution Architect
Vodja podroja razvoja aplikacij
Gama System d.o.o.
Namen
Zakaj .NET Framework 3.0?
Zgodovina
WPF, WCF, WF
Srednji sloj:
Podpora storitveni usmerjenosti
Prezentacijski sloj:
Podpora naprednim grafinim
vmesnikom
SOA != spletne storitve
Storitveno usmerjene arhitekture
Matev Ganik
Microsoft regionalni direktor
Microsoft MVP Solution Architect
Vodja podroja razvoja aplikacij
Gama System d.o.o.
Agenda
Objektni in storitveni ekosistem
Storitve
Obstojee tehnologije
WCF
Definicije
Storitev
Ideja je odlina
Uporabljena najprej na podroju strojne
opreme
Ni skalabilna
Prehod meje je problem
Heterogenost drai abstrakcijo (COM)
Oddaljenost drai abstrakcijo (DCOM)
Objekti ostajajo
Objekti implementirajo storitve
Storitveni
Upotevanje meja
ekosistem
Meje so pomembne tudi v realnem
ivljenju
im manj deljenih abstrakcij
Noem!
e imam, sem vezan!
Stabilno jedro
Komunikacija s sporoili
Request response sporoilni vzorec
Obstajajo drugi sporoilni vzorci
Storitev <> Spletna
storitev
Storitev
Je avtonomni program
Sprejema sporoila (e
eli)
Oddaja sporoila (e Storitev
eli)
Interna arhitektura je
odjemalcem skrita
Spletna storitev Spletna storitev
Definira storitveno
fasado
Je lahko del storitve
Predstavlja
komunikacijsko orodje
Odjemalci
Dve storitvi lahko
komunicirata preko ene
ali ve spletnih storitev
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 preka
mejo
Trditev 2:
Storitve so avtonomne
Storitev je samozadosten program, ki
se:
Samostojno namesti
Samostojno verzionira
Samostojno brani
Samostojno zagotavlja integriteto
Avtonomno obnaanje storitev
Nimamo pojma kdo klie
Nimamo kontrole koliko asa bo e
klical(a)
Nimamo pojma kako pomagati
Trditev 3:
Delimo shemo in pogodbo, ne
razreda
Delimo:
Pogodbo obnaanja
Definira sporoilne vzorce
Sporoilno shemo
Opisujejo format in ne implementacije
Pogodba:
WSDL
WS-Policy
Opisuje obnaanje
Shema:
Znotraj WSDL, <types></types>
Opisuje stanje, instanca
Trditev 4:
Polica komunikacije
WSDL je premalo
Potrebujemo metapodatke o
sposobnostih in zahtevah
Ie se skupni imenovalec
WS-Policy + WS-
MetadataExchange
Torej
Trditev 1: Meje morajo biti jasne
Trditev 2: Storitve so avtonomne
Trditev 3: Delimo shemo, ne
razreda
Trditev 4: Polica komunikacije
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 (RTM, November 2006])
Kompatibilnost
Ne obstaja
Matev Ganik
Microsoft regionalni direktor
Microsoft MVP Solution Architect
Vodja podroja razvoja aplikacij
Gama System d.o.o.
Agenda
Uvod
Kaj je WCF?
Kako ga lahko primerjamo z
obstojeimi tehnologijami
Pomembnost, vpliv tehnologije
Storitve
Definicija storitvenih pogodb
Naini konfiguracije
Varnost, zanesljivost, transakcije
Instanciranje
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-*
WCF
Enotno ogrodje za gradnjo storitveno
usmerjenih reitev na platformi Windows
Poenoti dananje porazdeljene sklade
tehnologij
Unifikacija Sestavljiva funkcionalnost
Primerna za uporabo med procesi, med
raunalniki in ez internet
ez-platformna interoperabilnost
Interoperabilnost Integracija z Microsoftovimi produkti
Interoperabilnost z dananjimi skladi
Aplikacijska funkcionalnost
endif:
datoteka
Objektna usmerjenost
Kompleksnost razvoja
public class Trader : iTrade
{ Modul Aplikacija
int ExecuteTrade();
}
Komponente
public class Calc { Vmesnik
int Add(int x, int y); Platforma
komponente
}
Storitve
class TradeApp {
Vmesnik
[WebMethod] Splet
message ExecuteTrade (); WSDL
}
Porazdeljeni skladi
danes
Storitve Vrste Komponente Objekti
Interoperabilnost Zanesljivost Transakcije Razirljivost
ASP.NET integracija MSMQ integracija COM+ integracija CLR integracija
Evolucija
Dodaja varnostno
podporo in podporo
ASMX+WSE2/3
policam, druge
transporte
Storitev Pogodba
Odjemalec in
Usmerjevalec
obnaanja
Protokol(i) Protokol(i)
Vezava
Enkoder Enkoder
Transport Transport
Naslov
WCF arhitektura
Aplikacija
Pogodbe
Data Message Service Policy &
Contract Contract Contract Binding
Pretvorba TCP
Transakcije Varnostni
Tip -> prenosni
kanal
pogodba kanal
Koda
storitve
Pretvorba Varnostni TCP
Instanciranje
Pogodba -> Transakcije kanal prenosni
storitve
tip kanal
Storitve
[ServiceContract]
class EnterpriseTradeApp WSDL
{ Neomejeno
WS-MEX
[OperationContract]
message ExecuteTrade ();
}
Gostovanje
tirje naini
IIS (Internet Information
Services)
WAS (Windows Activation
Services)
Windows servis
Aplikacija
Code-first <> contract-first
Obstajata dva naina za izdelavo
storitvenih pogodb
Zanemo s kodo (code-first)
Zanemo s pogodbo (contract-first)
Code-first Contract-first
Odjemalec Storitev
A B C
C B A Sporoilo A B C
Odgovarja na:
Kaj storitev poslua?
Objektna pogodba je lahko
razlina na odjemalcu in
streniku
Storitvene pogodbe
Vrste pogodb
Storitvena pogodba je
sestavljena iz:
Pogodbe obnaanja (behavioral
contract)
Definira nain obnaanja
Singleton, single call, seja , varnostne
karakteristike, transakcijska semantika,
metapodatki, ...
Strukturne pogodbe (structural
contract)
Definira operacije, definira vsebino
sporoil
Strukturna pogodba
Vrste:
Enostavna strukturna pogodba
Predvideva izmenjavo netipiziranih
sporoil
WCF: Tip System.ServiceModel.Message
Kompleksna strukturna pogodba,
podatkovna pogodba
Izmenjuje tipizirana sporoila
Sem spadajo tudi klici RPC
WCF: [DataContract], [DataMember]
Definicija pogodbe
Dva naina
[ServiceContract]
public interface IInterfaceContract
{
[OperationContract]
void RequestSomething(Stuff objStuff);
}
[ServiceContract(
CallbackContract = typeof(IEventDestination))]
public interface IEventSource
{
[OperationContract(IsOneWay = true)]
void Register(Client client);
}
Podatkovna pogodba
Tipi CLR in podatkovna pogodba
nimajo ni skupnega
[DataContract] [DataContract(Name = Person1)]
public class Person1 public class Person2
{ {
[DataMember] [DataMember(Name = Name)]
public string name; public string name;
[DataMembe
[MessageHeade
r] r]
[ServiceOperati
Polje/lastnost Oznai on]
definira del polje/lastnost/param Operacija definira del
podatkovne kot glavo SOAP pogodbe obnaanja
pogodbe
[MessageBody]
Oznai
polje/lastnost/param
kot telo SOAP
Ime in imenski
prostor
Vsaka pogodba ima:
Ime, privzeto enaka imenu
vmesnika/razreda
Imenski prostor, privzeto
http://tempuri.org
Imena morajo biti razlina za vse
pogodbe iste storitve
[ServiceContract(
Name = MyContract,
Namespace = http://www.gama-system.com/WCFservices)]
public interface IInterfaceContract
{
[OperationContract]
void RequestSomething(Stuff objStuff);
}
Povzetek pogodb
Pogodba doloa nain komunikacije s
konno toko
Storitvena pogodba (ServiceContract,
OperationContract)
Sestavljena iz:
Pogodbe obnaanja
Strukturne pogodbe
Vloge:
Definira vhodna in izhodna sporoila
Povezuje sporoila v operacije
Definira dovoljeni sporoilni vzorec
Definira nain obnaanja storitve
Pogodba je del konne toke
Uporaba
XmlSerializer-ja
Uporabno za doseganje
kompatibilnosti z ASMX
Mogoe je uporabljati stari
serializator
[ServiceContract]
[XmlSerializerFormat]
public interface IEventSource
{
[OperationContract(IsOneWay = true)]
void Register(Client client);
}
[MessageBodyMember]
string Data;
}
Sporoilna pogodba
Obstajata dva naina uporabe
[ServiceContract]
interface IMyContract
{
[OperationContract]
[return:MessageHeader]
string StrangeMethod(
[MessageBodyMember] int Number,
[MessageHeader] string Data,
[MessageHeaderArray] string MoreData);
[OperationContract] [MessageContract]
void DoWork(InMessage m); public class InMessage
} {
[MessageHeader]
public int Number;
[MessageBodyMember]
string Data;
}
Izjeme
Ujamemo po naslednjem vrstnem redu:
TimeoutException
FaultException<T>
FaultException
CommunicationException
FaultException je dedovan iz
CommunicationException
FaultException<T> je dedovan iz
FaultException
CommunicationException in
TimeoutException sta dedovana iz
SystemException
SystemException je dedovan iz Exception
Nartovanje za jutri
Gradite storitve z uporabo ASMX ez in
znotraj servisne meje
Obdrite komponente ZNOTRAJ meja storitev
Uporabljajte System.Messaging za asinhrono,
vrstno sporoanje
Uporabljajte WSE za podporo WS-* &
napredne spletne storitve
Uporabljajte Enterprise Services,
ko so zahtevane transakcije
ali aktivacija
Uporabljajte Remoting
samo za
znotraj procesno,
ez domensko
(AppDomain)
komunikacijo
Kako naprej?
Bodite inkrementalni
Plazite se, hodite, tecite
WCF je ena najpomembnejih
tehnologij, sploh za gradnjo
poslovnega nivoja
Spremljali smo razvoj
Beta 1: H2 2005
Beta 2: Q1 2006
RC1: September 2006
RTM: November 2006, skupaj z Windows
Vista
?
Matev Ganik
Vodja podroja razvoja aplikacij
Microsoft regionalni direktor
Microsoft MVP Solution Architect
Gama System d.o.o.
http://www.gama-system.si
matevz.gacnik@gama-system.si
Transakcije
Transakcijska semantika v ibko
sklopljenih, porazdeljenih sistemih
Matev Ganik
Microsoft regionalni direktor
Microsoft MVP Solution Architect
Vodja podroja razvoja aplikacij
Gama System d.o.o.
Vsebina
Motivacija transakcij
Transakcijski scenariji
Problemi s ibko sklopljenimi
sistemi
Idempotenca, kompenzacija in
sage
Motivacija transakcij
Prevladujoa tehnologija za gradnjo
ibko sklopljenih sistemov so spletne
storitve in SOAP
Grajenje in integriranje spletnih
storitev je preprosto
Poslovni procesi so tipino
transakcijski
Spletna storitev je sama lahko
preprosto transakcijska
Dokler je transakcija lokalna
Kako je lahko e-poslovni sistem
transakcijski?
V igri je ve spletnih mest
Po monosti na razlinih platformah
Scenarij e-
poslovanja
Rezervacija letalske Rezervacija hotela
karte
Letalsko karto
rabim le, e
uspem dobiti
tudi hotelsko
sobo!
Turistina agencija
Kdaj rabimo transakcije?
Osnovna definicija transakcije:
Dve ali ve trajni operaciji
Vse morajo uspeti ali ni ne sme uspeti
Kdo upravlja s transakcijami?
Ena operacija / en ponor
Navadno implicitne
Ve operacij / en ponor
Ponor sam upravlja s transakcijo
Tipien scenarij DBMS
Eksplicitna transakcija
Ve operacij / ve ponorov
Porazdeljeni transakcijski operater
Transakcijski monitor (MS DTC, JTS, Atomikos,
TUXEDO, ACMS, ...)
Centralizirana transakcija
Transakcijski
Spletna koordinator Transakcijs
aplikacija /
ki kontekst
storitev
Operacija 1
Operacija 2
Operacija 3
Gnezdena Zunanji
transakcija Transakcijski
transakcijs
ki kontekst
Spletna koordinator A
aplikacija /
storitev
Operacija 1
A Operacija 2
Operacija 1
B Gnezdeni
Operacija 2 transakcijs
ki kontekst
B
Porazdeljena, gnezdena
transakcija Zunanji
Transakcijski transakcijs
koordinator ki kontekst
Spletna
aplikacija /
storitev Operacija 1
Operacija 1
Tx 2
Transakcijski
koordinator
Operacija 1
Lokalni
transakcijs
Operacija 2
ki kontekst
Transakcije za
spletne storitve
Posebna podpora za transakcije je
potrebna ko:
Morata dve ali ve spletnih storitev
uspeti skupaj
Lokalna transakcija potrebuje oddaljeno
spletno storitev, ki je transakcijska
Spletna storitev trajno persistira
esa ne moremo?
Dodati spletne reference v razvojno
okolje in upati, da bo delovalo.
Uporabiti kaknega drugega SOAP
odjemalca in upati, da bo delovalo.
Upati, da bo delovalo.
Kaj potrebujemo za
ACID?
A(tomicity)
A(tomicity)
Zanesljivost transportnih poti
C(onsistency)
Zanesljivost transakcijskih virov
I(solation)
Zaklepanje podatkov na
transakcijskih virih
D(urability)
Zanesljivost transakcijskih virov
Zakaj spletne storitve ne
podpirajo transakcij?
Tipino gre za HTTP+SOAP
HTTP je brez povezavni protokol (connection-less)
HTTP ni zanesljiv
Oba kriterija sta potrebna za transakcije
Spletne storitve za prenosni medij
uporabljajo internet
Problem t. 1: Internet je nezanesljivo omreje
Internet ima visoko latenco
Spletne storitve so ibko sklopljene
Vse to je potrebno za transakcije kakrne poznamo
Kaj narediti?
Analiza
Veliko potencialnih tok napake
LAN Internet
Verjetnost padca povezave
(satelit, kabel, povezana linija) nizka visoka
Verjetnost nedelovanja mrenih
naprav (switch, router) nizka visoka
Verjetnost napak zaradi
nastavitev, sprememb poti, nizka visoka
prevezav
Verjetno napak zaradi
zasedenosti omreja, izgube nizka visoka
paketov
Problemi TCP/IP
TCP/IP je nartovan, da naredi najbolje kot
lahko
Dostava ni vedno garantirana
TCP/IP deluje na paketnem nivoju
Integriteta toka ga ne zanima
Ohrani se samo vrstni red paketov
Padec povezave med prenosom toka se ne reuje
Stvar aplikacijskih protokolov
TCP/IP je verjetno najbolji protokol za slaba
omreja
Tudi to ni dovolj, da bi transakcije delovale na res
slabih omrejih
Problemi HTTP
HTTP je preprost tokovni protokol
Tuneliran ez TCP/IP
Dodajo osnovno tokovno integriteto
Glava Content-Length
Dovoljuje validacijo toka na sprejemni
strani
Kljuni problem HTTP: Odgovori
Tisti, ki odgovori ne ve:
Ali je prejemnik dobil vse bite
HTTP Response je fire and forget
Prejemnik lahko naredi procesiranje odgovora
Povezava se prekine preden se procesiranje zane
Tisti, ki zahteva ne ve:
Ali je zahtevek priel
Povezava se lahko prekine pred ali v asu odgovora
Kako naprej?
Kaj e odjemalec ne prejme
odgovora v doloenem asu?
Zakaj ne bi samo ponovno
poskusili?
Potrebujemo sage
Potrebujemo idempotentnost
Potrebujemo kompenzacijo
Kaj je saga?
Rezervacija leta
Saga prekinjena
Start Rezervacija
Rezervacija hotela
drugega hotela
Stanje 1
Rezervacija avtomobila
Rezervacija neuspena
Kompenzacija leta Konec2
Stanje
Saga uspena
Kaj je idempotenca?
Definicija
Idempotenten = ponovljene
operacije imajo isti uinek kot prva
Povpraevanja po bazi so
idempotentna
Dodajanje v bazo ni idempotentno
Matev Ganik
Microsoft regionalni direktor
Microsoft MVP Solution Architect
Vodja podroja razvoja aplikacij
Gama System d.o.o.
Izzivi delovnih tokov
Realni svet Izzivi programske opreme
Primer
znotraj poslovne
razvijalskega logike lastne
ogrodja na aplikacije
platformi Windows
Ponuditi napredne Preprosta modulacija
aplikacije, ki poslovnih procesov z
Primer
uporabljajo uporabo intuitivnih
nartovalcev
Windows Workflow Windows Workflow
Foundation za Foundation
specifine scenarije
Windows Workflow Foundation
Ponuja platformo delovnih tokov in
orodja za celotno Microsoftovo
platformo
Ena tehnologija delovnih tokov za platformo
Windows
Na voljo vsem uporabnikom platforme
Uporabna v irokem naboru scenarijev
Redefinicija delovnih tokov
Razirljiva platforma in API za gradnjo produktov, ki
uporabljajo delovne tokove
Ena tehnologija za sodelovalne in programske delovne
tokove
Hitra penetracija
Hitra krivulja uenja za obstojeega razvijalca .NET
Pomembni del 2007 Office System
Moan ekosistem partnerjev
Kaj je delovni tok?
Nabor aktivnosti, ki koordinirajo ljudi in /ali
programsko opremo...
Primeri aktivnosti. EscalateToManager CheckInventory
Poslovne
Poslovne aplikacije
aplikacije
CRM
Stanja
ERP Stanja procesa,
procesa, avtomatizacija
avtomatizacija prodaje
prodaje
IT
IT Management
Management
New
New H
Hire
ire Provisioning,
Provisioning, Trouble
Trouble Ticket,
Ticket,
Razvijalci
Razvijalci .NET
.NET
Tok
Tok dokumentov,
dokumentov, koordinacija
koordinacija storitev
storitev
<SequentialWorkflow x:Class="MyWorkflow"
xmlns="Activities" xmlns:x="Definition">
</SequentialWorkflow>
Naini gradnje
Oznaevalno Oznaevalno Samo koda Aplikacijska
deklarativno In koda gradnja
Aplikacija zgradi
XAML XAML C#/V C#/V drevo aktivnosti in
B B
Koda kreira
serializira
XML definira XML definira Koda kreira
strukturo delovnega delovni tok delovni tok
toka in podatkovni Koda definira v konstruktorju XAML C#/V
tok dodatno logiko
B
V1
Toke razvoja B1 B2 RTM