You are on page 1of 101

Microsoft .

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

Program, s katerim komuniciramo


v obliki sporoil.
Odjemalec

Program, ki sporoila poilja.


Storitvena usmerjenost

Gradimo sisteme, ne aplikacij.


Objektni ekosistem
public class IAmHereToStay {}

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

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
Povzetek
Storitve
Meja se spotuje
Avtonomnost
Shema, ne razred
Polica komunikacije
WS-*
Metapodatki
Varnost
Zanesljivost
Transakcije
Orodja
ASMX + WSE (Web Services
Enhancements)
WCF
?
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
WCF, aka. Indigo
Windows Communication
Foundation

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

Storitveno usmerjeni programski model


Storitvena Podpora vsem SOA funkcionalnostim
usmerjenost Maksimalna produktivnost za gradnjo
SOA
Napredek abstrakcije
Zbirni jezik Povezovanje Doseg
jmp endif
Izvajalna Sklad klica

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

Vsak sklad ima drugane prednosti in namene


uporabe
Zaradi zahtev vekrat obstaja potreba po meanju
skladov
Zanesljive storitve (WSE)
Transakcije (ES)
Itd...
Unifikacija

Sporoilno Storitveno Atributivno


Protokoli Sestavljivost
usmerjeno usmerjeno programiranje
WS-* Nadgradljivost
programiranje Interoperabilno
Evolucija storitev
Enoten sklad tehnologij,
WCF
polna WS-* podpora

Dodaja WS-I BP,


System.Transactions .NET Fx 2.0 ASMX

Evolucija
Dodaja varnostno
podporo in podporo
ASMX+WSE2/3
policam, druge
transporte

Osnovni SOAP in WSDL


ez HTTP ASMX
WCF: od mesarja do kirurga
Razvijalci piejo storitve, ki se
odzivajo na sporoila
WCF storitve se izvajajo znotraj CLR
WCF sporoila uporabljajo podatkovni
model SOAP
Storitve oddajajo naslovljive konne
toke
Storitve implementirajo pogodbe, ki
opisujejo izmenjana sporoila
Posamezne pogodbe so strukturne
(shema) ali obnaalne (vmesnik)
Pogodbe omejujejo tok sporoil preko
kanala, med iniciatorjem in storitvijo
Arhitektura WCF
Izvajalno okolje sporoanja

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

Izvajalno okolje Error


Behavior
Metadata
Behavior
Instance
Behavior
Inspection
Facilities

Throttling Transaction Activation Concurrency Cmd/Control


Behavior Behavior Behavior Behavior Facilities

Sporoanje SOAP Security


Channel
SOAP Reliability
Channel
Text/XML
Encoder

HTTP TCP UDP X-Proc Queue Binary


Channel Channel Channel Channel Channel Encoder

Aktivacija WAS Avalon .EXE NT Service COM+


Sestavljiva arhitektura
nifikacija se dosega s pomojo sestavljive arhitekture

Pretvorba TCP
Transakcije Varnostni
Tip -> prenosni
kanal
pogodba kanal
Koda
storitve
Pretvorba Varnostni TCP
Instanciranje
Pogodba -> Transakcije kanal prenosni
storitve
tip kanal

Nivo izvajalnega okolja Sporoilni nivo

Spreminja nain izvajanja v Prenaa sporoila in dodaja


odvisnosti od vsebine sporoil prenosno semantiko
Spletne storitve <> Storitve
Spletne storitve Povezovanje Doseg
class TradeApp
{
[WebMethod]
WSDL HTTP
message ExecuteTrade();
}

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

1. Izdelamo razrede ASMX, 1. Izdelamo WSDL (in XSD)


anotiramo z atributi 2. Generiramo razrede ASMX z
2. ASMX generira WSDL uporabo wsdl.exe /server
3. Dobimo generirani WSDL 3. Monost kontrole WSDL

ASMX 2.0 in WCF podpirata oba naina


Code-first razvoj
Omogoa razvoj v smislu razredov in
metod
Uporablja veina ASMX razvijalcev danes
Preprosta uporaba, poudarek na objektih
(in ne sporoilih)
Faza prevoda lahko pripelje do
problemov z interoperabilnostjo
Kaj DataSet pomeni Java razvijalcu?
Faza prevoda

Zbir .NET WSDL

Izdela razrede .NET Generira storitveno Uporabi WSDL


pogodbo iz razredov .NET
Contract-first razvoj
Prisili k razmiljanju o pogodbi v deljenem
jeziku (WSDL, XSD)
Nartovanje se usmerja na format sporoil in
njihovo izmenjavo
Prevod iz deljenega jezika v implementacijo
Omogoa delo ve sodelujoim hkrati
Generiranje kode izdela vse potrebne atribute
ASMX
Odstranitev prevoda povea
interoperabilnost
Izdela WSDL Uporabi WSDL
WSDL

Obe strani izdelata kodo iz iste definicije WSDL


Contract-first namigi
Upotevajte naslednje korake:
Uporabite VS.NET ali druga orodja za
izdelavo XSD in WSDL
Generirajte razrede ASMX z uporabo
wsdl.exe /server
Dodajte generirane razrede v projekt
Implementirajte metode v generiranih
razredih
Doloite lokacijo dokumenta WSDL z
uporabo atributa [WebServiceBinding] in
lastnosti Location
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 sporoilih (npr.
BizTalk)
Ko je potrebno implementirati podano
pogodbo
Ko z drugimi sodelujete na deljeni pogodbi
Contract-first razvoj v WCF
WCF preferira contract-first
Obstajajo ekvivalentne pogodbe:
V svetu CLR
V svetu WSDL
WCF podpira poljuben zaetek
Z interface ali class
Z WSDL, svcutil.exe
WCF pogodbe
Vrste pogodb
Storitvena pogodba je sestavljena iz:
Pogodbe obnaanja ([ServiceContract])
Definira vhodna in izhodna sporoila
Sporoila so vezana na operacije
Podatkovne pogodbe ([DataContract])
Definira vsebino sporoil
V svetu ASMX je podatkovna pogodba
implicitna
Sporoilna pogodba
([MessageContract])
Namenjena natanneji granulaciji
sporoila v SOAP sporoilu
Ideja storitvene
pogodbe
Poenoten opis funkcionalnosti
storitve
Svet je heterogen
Objektni svet ne sme omejevati
storitvenega sveta
Storitvena pogodba definira
obliko sporoil in obnaanje
storitve
V svetu SOAP sta opisna jezika
WSDL in WS-Policy, transportni
protokol WS-MEX
Konna toka
Endpoint = ABC (Address, Binding, Contract)

Odjemalec Storitev
A B C

C B A Sporoilo A B C

Address Binding Contract


(Kje) (Kako) (Kaj)
Konna toka
Endpoint

Storitev vedno komunicira s


pomojo konne toke
Sestava konne toke:
Naslov (Address)
Kje storitev poslua?
Povezava (Binding)
Kako storitev poslua?
Pogodba (Contract)
Kaj storitev poslua?
Naslov
Address
Odgovarja na:
Kje storitev poslua?
En naslov na konno toko
WCF ne doloa protokola
Konna toka lahko poslua na poljubnem
protokolu (doloa vezava)
TCP
UDP
HTTP
MSMQ
NamedPipe
...
Ve konnih tok na storitev
Vezava
Binding
Odgovarja na:
Kako storitev poslua?
Obstajajo standardne:
basicHttpBinding (WS-I 1.1)
wsHttpBinding (WS-*)
netTcpBinding (WCF WCF)
netPeerTcpBinding (WCF WCF)
...
Mogoe jih je nadgraditi s poljubnimi
kombinacijami parametrov
Pogodba
Contract

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);
}

public class StuffRequester : IInterfaceContract


{
void RequestSomething(Stuff objStuff) { }
}

// storitev implementira samo eno pogodbo


[ServiceContract]
public class StuffRequester
{
[OperationContract]
void RequestSomething(Stuff objStuff);
}
Enosmerne pogodbe
Sporoilni vzorci
Operacije sprejemajo vhodna in potencialno
vraajo izhodna sporoila
Enosmerno (One-way)
Metode oznaene z
[OperationContract(IsOneWay = true)]
Vhodno sporoilo
Brez izhodnega sporoila
Pogoj: metoda ne sme vraati funkcijske
vrednosti in imeti ref ali out parametra
Zahtevek odgovor (Request Reply)
Metode oznaene z [OperationContract]
Vhodno sporoilo
Izhodno sporoilo
Dvosmerne pogodbe
Sporoilni vzorci
Pogodba lahko doloa operacije, ki jih
odjemalec mora implementirati
Take operacije so zdruene 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);
}
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;

[DataMember] [DataMember(Name = Age)]


public int age; public int age;

[DataMember] [DataMember(Name = Wage)]


float salary; float salary;
} }
WCF pogodbe
[DataContra [ServiceContrac
[MessageContra
ct] ct] t]
Tip definira Oznai tip/operacijo v Tip definira pogodbo
podatkovno obliki sporoila SOAP obnaanja
pogodbo

[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);
}

svcutil.exe /useXmlSerializer (/uxs)


Sporoilna pogodba
Namenjena neposrednemu
oblikovanju sporoila SOAP
Sporna implementacija, lokacijo bi
lahko podajali v podatkovni pogodbi
[MessageContract(WrapperName = SpecialMessage)]
public class InMessage
{
[MessageHeader]
public int Number;

[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

Kompenzacija hotela Konec

Saga uspena
Kaj je idempotenca?
Definicija
Idempotenten = ponovljene
operacije imajo isti uinek kot prva
Povpraevanja po bazi so
idempotentna
Dodajanje v bazo ni idempotentno

Dvigovanje 10^6 SIT


Dvigovanje 10^6 SIT
v primeru, e e nismo dvignili,
ni idempotentna operacija
je idempotentna operacija
Kaj je kompenzacija?
Druga transakcija razveljavi kar je uveljavila
prva transakcija
Pogojujejo jo transakcijski poslovni procesi
Trenutno ni standardnega protokola
Podpora bo v implementaciji WS-BusinessActivity
Zanaa se na koordinatorja, ki mora stvar
izpeljati pravilno
Kompleksni scenariji
Zahteve:
Varna komunikacija
HTTPR, Message Queuing
Idempotentnost
Problemi
kompenzacije
Kompenzacija ne pomeni vraanje na
osnovno stanje!
Vse operacije niso reverzibilne
Nekatere so prepreene z denarjem, druge
z zakonom
Ne nudijo izolacije
Ostale transakcije lahko berejo
uveljavljene spremembe
Spletna storitev naj bi podpirala
kompenzacijsko metodo
Action
CancelAction
Torej...
Zagotoviti moramo, da:
So idempotentni klici narejeni vsaj
enkrat
So neidempotentni klici narejeni
najve enkrat
Imamo operacije, ki imajo
ustreznen nain kompenzacije
Oblikujemo pravilne sage
Povzetek transakcij
Transakcije za podporo e-poslovanja
so navadno gnezdene in porazdeljene
ACID transakcije ne delujejo kadar
prekamo mejo spletne storitve
Slaba skalabilnost
Zaklepanje podatkovne baze ne bo
dovoljeno
Delovale bi na zanesljivem in neskonno
hitrem omreju
Trenutno ni tehnologije, ki bi uspela
zagotoviti ACID ez internet
Torej
Idempotenca je odgovor na
nezanesljivost transportnih
protokolov (omreja)
Kompenzacija je odgovor na
nezmonost zaklepanja
Transakcijski protokoli bodo
osnovani na:
WS-Coordination
WS-BusinessActivity
WS-AtomicTransaction
?
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
WF
Windows Workflow Foundation

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

Naroila so potrjena v Dolgo trajajoi in stanjski


48 urah in oddana v 30 Delovni tokovi teejo do
dneh 30 dni in morajo ohranjati
stanje
Veina dobaviteljev
Prilagodljiv kontrolni tok
potrdi nae naroilo,
nekateri vseeno Prilagodljivost za
pozabijo preskok ali preusmeritev
korakov delovnega toka

Kaken je status Tranparentnost


naroila in kaj je Prikaz stanja delovnega
naslednji korak? toka
Zakaj tehnologija delovnih
tokov?
Produktivnost razvijalcev
Tehnologija omogoa abstrakcijo nad
resninim svetom

Izzivi tehnologije delovnih tokov


Delovni tokovi so dolgo trajajoi in stanjski

Delovni tokovi zahtevajo prilagodljiv


kontrolni tok
Delovni tokovi morajo biti transparentni
Cilji tehnologije WF
Ponuditi Windows
Workflow ISV uporabi Windows
Foundation kot del Workflow Foundation

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

organiziranih v neko obliko delovnega toka.


Diagram stanja. Ali konni avtomat...
Scenariji delovnih tokov
Uporabniki Sistem

Sodelujoi: uporabniki, vloge Sodelujoi: apikacije, storitve


Stil: prilagodljiv, dinamien Stil: predefiniran, protokoli
Podatki: nestrukturirani, Podatki: strukturirani,
dokumenti transakcijski
IT
IT uporabnik
uporabnik B2B
B2B
Pregled
Pregled dokumenta
dokumenta
Dobavna
Dobavna veriga
veriga

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

Windows Workflow Foundation


Windows Workflow Foundation
Grafini nartovalec
Osnovni koncepti
Delovni tok je nabor aktivnosti
Delovni tok
Delovni tok se izvaja v
gostujoem procesu: poljubna
aplikacija ali strenik
Monost gradnje lastnih
Aktivnost
knjinic aktivnosti
Uporabnike aktivnosti
Komponente Windows
Base Activity Library:
Prihajajo z WF Workflow Foundation
Runtime Engine: Base Activity Library
Izvajanje delovnih tokov in
upravljanje stanja Runtime Engine
Runtime Services:
Prilagodljivost gostovanja in Runtime Services
komunikacija
Grafini nartovalec:
Monost grafine in programske Gostujoi proces
konstrukcije
Osnove delovnih
tokov
Delovni tok je razred
public sealed partial class Workflow1 :
SequentialWorkflowActivity
{
...
}

Razred lahko definiramo v


oznaevalnem jeziku
<?Mapping XmlNamespace="Activities"
ClrNamespace="System.Workflow.Activities"
Assembly="System.Workflow.Activities" ?>

<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

Prevajalnik delovnih tokov


wfc.exe
Zbir .NET
C#/VB Compiler .ctor definira
delovni tok
Izvajanje delovnega
Aplikacija
toka Izdelava instance
rt.CreateWorkflow(typeof(WF1));
Instanca WF1
Sequence
1 Aplikacija klie Start()
2 Upravljalnik instanc:
OnEvent1 Naloi tip delovnega toka
WF1 Kreira instanco
Execute
Uvrsti WF1 v urnik izvajanja
MyWF.dll Invoke1 Izvajanje do mirovanja
3 Upravljalnik odstrani WF1 iz vrste
in klie Execute (SequentialWorkflow
SequentialWorkflow Execute
Osnovna 4 Ostrani Sequence in klie Execute,
knjinica Sequence Execute kar uvrsti OnEvent1
aktivnosti
Activity Save 5 Odstrani OnEvent1 in klie Execute,
kar sproi dogodek

Izvajalno Upravljalnik instanc Persistiranje


okolje Upravljalnik instanc klie Save()
6 na WF1, serializira instanco in dobi
Urnik Sequence
WF1
OnEvent1 podatkovni tok
7 Upravljalnik instanc klie storitev
persistiranja in poda serializirani tok
Storitve izv. Persistiranje WF1
okolja
Osnove aktivnosti
Aktivnosti so sestavni deli delovnih
tokov
Predstavljajo enoto izvajanja, ponovne uporabe in
kompozicije
Osnovne aktivnosti predstavljajo korake znotraj
delovnega toka
Sestavljene aktivnosti vsebujejo druge aktivnosti,
primer: SequenceActivity
Osnovna knjinica aktivnosti podaja moan nabor
aktivnosti
Razvijalci razvijajo nove aktivnosti, na primer:
ApproveOrder
Aktivnosti so razredi:
Lastnosti in dogodke definira avtor aktivnosti, mogoe
jih je uporabiti znotraj delovnega toka
Aktivnost ime metode, ki jih razvije avtor, klie pa
Prilagodljiv kontrolni tok
Sekvenni delovni tok Konni avtomat
Sekvenna struktura Vrstni red
Korak1
doloa vrstni red Dogodek Stanje1 procesiranja
procesiranja doloajo
Korak2 Dogodek Stanje2 zunanji dogodki
Doloena, formalna Reaktiven, dogodkovno voden
Scenariji avtomatizacije Preskoki/ponovitve, izjeme
Metafora flowchart-a Metafora konnega avtomata

Pravilno vodene aktivnosti


Pravilo1 Korak1
Pravila in podatki
Podatki doloajo vrstni
Pravilo2 Korak2 red procesiranja
Pravilno vodene
Preprosti pogoji
Omejena skupina podaktivnosti
Delovni tokovi povsod: Nartovalci
Nartovalci delovnih tokov
( Kot ASP.NET nartovalec )
Izdelava novih delovnih tokov
Grafino (/koda) nartovanje
Integracija kode .NET
Grafino razhroevanje
Podpora temam
Sekvenni Gostovanje nartovalca
nartovalec Nartovalec konnih
avtomatov
Nartovalec aktivnosti
( Kot UserControl nartovalec )
Izdelava novih aktivnosti
Grafino (/koda) nartovanje
Dedovanje iz osnovnih
aktivnosti ali popolnoma nove
Princip rne/sive katle
Nartovalec
aktivnosti

Konsistenten in znan nain razvoja delovnih tokov


Stanja aktivnosti
Initialized
Executing
Canceling
Closed
Faulting
Compensating
Dostopnost, podpora
2005 2006 2007
Q1 Q2 Q3 Q4 Q1 Q2

V1
Toke razvoja B1 B2 RTM

Tretja tehnologija .NET Framework 3.0


Windows Communication Foundation
(Indigo)
Windows Presentation Foundation
(Avalon)
Windows Workflow Foundation
(WinWS)
Podpora: Vista, Server 2003, XP
Licenciranje je del Windows brez dodatnih
licenc
Povzetek
Enotna gradnja delovnih tokov za platformo
Windows
Ogrodje delovnih tokov za celotno platformo
Uporabljeno v naslednjem BizTalk serverju,
Office 2007 in Microsoft Dynamics
Na voljo vsem Windows strankam
Redefiniranje delovnih tokov
Enotna tehnologija za sistemske in sodelujoe
delovne tokove
Stili: sekvenni, pravilno-vodeni, konni avtomati
Podpira dinamino interakcijo, nadgradljivo
Delovni tokovi bodo povsod
Konsistenten in znan programski model za razvijalca
.NET
Na voljo milijonom konnih uporabnikov z Office 2007
Razirljiva platforma
?
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

You might also like