Obținerea de date în aplicație prin intermediul serviciilor devine din ce în ce mai populară. Pe Windows, aceasta înseamnă cel mai adesea implementarea unor astfel de servicii bazate pe Windows Communication Foundation (WCF). Și în legătură cu faptul că logica acestor servicii poate fi foarte des reprezentată sub formă de fluxuri de lucru, este posibilă implementarea serviciilor WCF folosind Windows Workflow Foundation (WF).
Dar se pune întrebarea, unde ar trebui lansate toate aceste servicii? Nici WCF, nici WF nu necesită un anumit proces gazdă, astfel încât dezvoltatorii să le poată folosi așa cum consideră de cuviință. Cu toate acestea, crearea unei gazde eficiente și gestionate nu este o sarcină atât de ușoară. Ar fi mult mai ușor dacă Windows Server va oferi mai mult sprijin pentru găzduirea și gestionarea acestor servicii.
Și acesta este exact ceea ce oferă AppFabric Hosting Services. Pentru a înțelege mai bine această parte a Windows Server AppFabric, ar fi util să treci rapid prin tehnologiile de bază ale WCF și WF.
Bazele tehnologiei
WCF oferă o modalitate comună de a crea și de a consuma servicii. WF oferă suport pentru crearea logicii de afaceri sub formă de fluxuri de lucru. Deoarece fluxurile de lucru WF folosesc în mod obișnuit servicii pentru a interacționa cu lumea exterioară, vom începe cu WCF pentru a descrie aceste două tehnologii.
Crearea de servicii: Windows Communication Foundation
WCF permite dezvoltatorului să creeze și să utilizeze diverse tipuri de servicii - SOAP, RESTful și altele - printr-un model comun de software. Figura 1 prezintă elementele de bază:
Fig.1. Schema serviciilor WCF
Utilizând Visual Studio (sau un alt instrument), un dezvoltator poate implementa un serviciu pe care orice funcționalitate îl poate oferi. Acest serviciu devine disponibil clienților prin unul sau mai multe puncte finale. fiecare dintre acestea oferind o interfață specifică (cunoscută și ca contract).
Serviciul își împarte de obicei funcțiile într-o serie de operațiuni, fiecare dintre acestea răspunzând de acest aspect al logicii de afaceri. De exemplu, un serviciu care implementează o aplicație de comerț electronic poate avea operațiuni pentru a crea un coș de cumpărături, a adăuga un element la coșul de cumpărături, a șterge un element, plătește pentru o achiziție și așa mai departe. Clientul acestui serviciu solicită fiecare dintre operațiuni după cum este necesar.
Crearea fluxurilor de lucru: Windows Workflow Foundation
Cum ar trebui dezvoltatorii să implementeze serviciul? În unele cazuri, operațiunile de serviciu pot fi independente unele de altele, de exemplu, într-un serviciu care oferă acces la diferite tipuri de seturi de date. În alte cazuri, operațiunile de serviciu se pot urmări reciproc sub forma unui proces, ceea ce înseamnă că ele trebuie să fie chemate într-o anumită ordine pentru o anumită perioadă de timp.
Potențial, toate acestea pot lua mult timp. Imaginați-vă, de exemplu, că un utilizator a creat un coș de cumpărături, a adăugat câteva produse și apoi a întrerupt de ceva timp lucrul cu serviciul. Se poate întoarce în câteva ore sau zile și se va aștepta ca coșul și mărfurile să îl aștepte încă.
Cum ar trebui să se realizeze această logică? De fapt, aceasta este o serie de pași cu reguli care definesc ordinea în care trebuie făcuți acești pași. De asemenea, implementarea trebuie să mențină starea - coșul - pe tot parcursul procesului, care poate dura ore, zile sau chiar mai mult. Mai ales în cazurile în care obiectivul este de a construi o aplicație scalabilă, implementarea unei astfel de logici sub formă de fluxuri de lucru construite pe baza WF va fi mai preferabilă. Fluxurile de lucru WF sunt concepute pentru a simplifica crearea proceselor și pot fi o alegere bună pentru dezvoltarea anumitor tipuri de servicii.
WF este alcătuit din părți simple de bază: un designer pentru construirea blocurilor logice de afaceri și un mediu de execuție pentru implementarea logicii bazate pe fluxul de lucru. Figura 2 ilustrează activitatea WF:
Fig.2. WF - baza pentru crearea unei logici de afaceri orientate spre procesoare
Fiecare flux de lucru WF este creat pe baza unor activități, fiecare realizând o parte din logica de afaceri a procesului. WF oferă o bază standard de bibliotecă de activități (BAL) cu un set de activități care implementează funcții de bază cum ar fi dacă sau În timp ce. Dezvoltatorii își pot crea liber activitățile proprii pentru a răspunde nevoilor logicii lor de afaceri. Pentru a crea un flux de lucru, dezvoltatorul poate folosi proiectantul fluxului de lucru WF, care face parte din Visual Studio, pentru a distribui activitatea. Indiferent de ce activități sunt utilizate, toate sunt executate folosind timpul de rulare WF runtime.
Fluxul de lucru oferă un set de lucruri utile dezvoltatorului care implementează procesul. De exemplu, atunci când un flux de lucru așteaptă introducerea, cum ar fi solicitarea adăugării sau eliminării unui element de coș de gunoi, runtime-ul WF poate salva automat starea fluxului de lucru și îl poate descărca din memorie. Când se primește o nouă solicitare, mediul reîncarcă starea și lansează firul lucrătorului pentru a procesa solicitarea. Acest lucru facilitează dezvoltarea unor aplicații scalabile, deoarece fluxurile de lucru nu consumă memorie, fire de sistem sau alte resurse atunci când acestea nu sunt executate. Runtime-ul poate stoca o înregistrare a fiecărei execuții a fluxului de lucru cunoscut sub numele de urmărire, permițând dezvoltatorului să vadă diferite lucruri utile, de exemplu atunci când fiecare activitate este activată și dezactivată în fluxul de lucru.
Creați un serviciu bazat pe fluxul de lucru
Fluxurile de lucru WF pot fi utilizate pentru a implementa un număr destul de mare de diferite tipuri de procese de afaceri - nu se limitează la crearea de servicii. Cu toate acestea, serviciul WCF, logica căruia a fost creat pe baza WF, merită propriul său nume - un serviciu bazat pe fluxul de lucru. Figura 3 demonstrează această abordare:
Figura 3. Fluxuri de lucru bazate pe servicii
Imaginați-vă un dezvoltator care creează un serviciu bazat pe fluxuri de lucru sau un simplu serviciu WCF care nu utilizează WF. Nici WCF, nici WF nu definesc în mod explicit gazda procesului în care serviciul ar trebui să fie pornit. Cel mai bun lucru este că dezvoltatorul este liber să aleagă ce proces va folosi - WCF și WF nu o limitează în acest sens. Acest lucru este deosebit de important pentru dezvoltarea industrială, atunci când scopul principal este de a crea logica de afaceri, iar construirea unui proces gazdă pentru acest serviciu este o muncă inutilă. La urma urmei, acest proces face parte din infrastructură, iar problemele legate de infrastructură sunt responsabilitatea Windows Server. Rezolvarea tuturor solicitărilor de servicii de găzduire în infrastructură este ceea ce ajută AppFabric Hosting Services.
Introducere în serviciile de gazduire AppFabric
Serviciile de găzduire AppFabric (codificate "Dublin") nu vizează crearea unei infrastructuri noi. Dimpotrivă, acesta se bazează pe ceea ce este deja oferit de serverul IIS și de mecanismul Windows Service Activation Service (WAS). Pe baza acestei fundații, AppFabric Hosting Services adaugă noi capabilități pentru a rula și gestiona serviciile WCF, inclusiv servicii bazate pe fluxul de lucru. Figura 4 ilustrează acest lucru:
Figura 4. Serviciile de găzduire AppFabric facilitează pornirea și gestionarea serviciilor
După cum se arată în figură, serviciile WCF și serviciile bazate pe fluxul de lucru sunt inițiate în fluxurile de lucru deservite de IIS - aceasta înseamnă că AppFabric Hosting Services nu creează propriile procese. Această tehnologie utilizează, de asemenea, capabilitățile WAS, care vă permit să porniți serviciul când primiți un mesaj prin HTTP sau un alt protocol. Serviciile de găzduire AppFabric sunt construite pe infrastructura existentă, adăugând abilitatea de a rula anumite servicii imediat după înregistrare, fără a aștepta mesaje. Acest lucru permite serviciului să fie mai receptiv la clienți. care sunt primii care o accesează, deoarece nu trebuie să aștepte începerea serviciului.
După cum se arată în Figura 4, AppFabric Hosting Services extinde, de asemenea, Managerul IIS cu noi instrumente de gestionare a serviciilor. Utilizând aceste extensii, administratorul poate gestiona configurația WCF, poate porni sau opri serviciile, poate investiga puncte finale ale serviciului, suspenda, relua sau opri anumite instanțe de servicii bazate pe fluxuri de lucru. Cu toate acestea, AppFabric Hosting Services oferă un set de cmdleturi PowerShell pentru gestionarea serviciilor, permițând administratorilor să își creeze propriile scripturi.
Pentru a simplifica viața dezvoltatorilor, Visual Studio oferă șabloane de proiect încorporate pentru crearea atât a serviciilor WCF cât și a serviciilor WF. Serviciile create pe baza acestor template-uri pot fi plasate imediat în AppFabric Hosting Services - dezvoltatorii nu au nevoie să facă nimic inutil. Iar după ce serviciul este pus în funcțiune, acesta poate fi disponibil pentru consum în multe moduri diferite. Luați-le în considerare în scripturi.
Scenariu: serviciu de găzduire bazat pe fluxurile de lucru
Deși AppFabric Hosting Services poate fi folosit pentru a lucra cu orice serviciu WCF, acesta oferă suport suplimentar pentru pornirea și gestionarea serviciilor bazate pe fluxurile de lucru. Figura 5 prezintă unele dintre cele mai importante caracteristici:
Figura 5. Serviciile de găzduire AppFabric conțin instrumente suplimentare
După cum sa menționat mai devreme, runtime-ul WF salvează automat starea firului lucrător care așteaptă introducerea datelor și apoi îl restaurează atunci când sosesc datele. Dar de unde persistă condiția? Dacă utilizați WF ca mecanism separat, dezvoltatorul trebuie să creeze și să configureze independent o bază de date pentru salvarea stării. Cu toate acestea, după cum se arată în Figura 5, AppFabric Hosting Services oferă stocare preconfigurată de stat. De asemenea, WF vă permite să monitorizați executarea fluxului de lucru, permițând în mod automat dezvoltatorului să obțină informații detaliate despre performanță. Din nou, WF nu specifică exact unde să stocheze informațiile de urmărire. După cum se arată în Figura 5, AppFabric Hosting Services oferă o bază de date integrată pentru monitorizare. Ar trebui clarificat faptul că bazele de date de stocare și monitorizare de stat sunt separate de oricare dintre bazele de date ale aplicațiilor care pot fi utilizate de fluxul de lucru.
În ceea ce privește orice alt serviciu WLF, există mecanisme de monitorizare și gestionare a fluxurilor de lucru. Împreună cu comenzile de service descrise anterior, AppFabric extinde Managerul IIS cu funcții suplimentare care se aplică numai serviciilor bazate pe fluxul de lucru. Pentru un exemplu, aruncăm o privire la una dintre extensiile numite Tabloul de bord AppFabric prezentat în Figura 6.
Figura 6. Panoul de control din tabloul de bord AppFabric
După cum se arată în figură, Tabloul de bord AppFabric oferă panoul de control AppFabric Hosting Services. Din partea de sus puteți vedea starea serviciilor WF actuale, în care este afișat numărul de servicii în diferite stări. Un pic mai jos în fereastra afișează istoricul apelurilor recente, excepții și așa mai departe. Microsoft oferă, de asemenea, un pachet opțional de administrare pentru System Center Operations Manager, care vă permite să urmăriți evenimentele AppFabric Hosting Services folosind instrumente de management Windows standard. Scopul acestor instrumente este de a furniza informații clare despre ceea ce se întâmplă în mediul serviciilor de găzduire la momentul actual.
Scenariu: îmbunătățirea serviciilor scalabile a fluxului de lucru
Abilitatea WF de a salva automat și de a restabili starea fluxurilor de lucru permite dezvoltatorilor să creeze o logică de afaceri scalabilă. AppFabric Hosting Services permite dezvoltatorilor să creeze servicii bazate pe fluxul de lucru și mai scalabile. Figura 7 demonstrează acest lucru:
Figura 7. O arhitectură de flux de lucru scalabilă bazată pe servicii
În acest scenariu, trei servere web rulează o copie a aceluiași load balancing aplicații ASP.NET. ASP.NET este folosit doar pentru a genera interfața cu utilizatorul. Logica de afaceri a aplicației, poate fi acest magazin coș, realizat sub forma unui flux de lucru bazată pe servicii (și pentru a evita confuzia: chiar dacă nu este prezentat, de regulă, fiecare serviciu bazat pe fluxul de lucru se execută ca procesul de lucrător IIS) .
Prima solicitare a utilizatorului a fost trimisă pe serverul web de top (pasul 1). Pagina ASP.NET care primește această interogare cheamă prima operație din serviciu bazată pe fluxul de lucru, de exemplu crearea coșului de reciclare. Această solicitare este trimisă instanței serviciului care rulează pe un server separat (pasul 2). Odată ce operația este efectuată și rezultatul este returnat, runtime-ul WF scrie automat starea serviciului la magazinul furnizat de AppFabric Hosting Services (pasul 3).
Pe lângă cererea de utilizator a fost trimis la sarcină la un alt balancer server de web (etapa 4). La această pagină ASP.NET timp care procesează cererea, cum ar fi adăugarea unui element în coș, acesta trimite o cerere către serviciul pe care ruleaza pe un server diferit de primul (etapa 5). În ciuda faptului că această a doua solicitare de serviciu este executat pe un alt server, stare WF de rulare permite sarcini s exemplu fluxul de lucru de depozitare și pentru a procesa cererea (Figura 6).
După cum arată exemplul, AppFabric Hosting Services permite ca aceleași servicii bazate pe fluxul de lucru să ruleze la momente diferite pe diferite servere fizice. Acest lucru face ca serviciile să fie mai scalabile, deoarece acum putem găzdui mai multe servere intermediare pentru a rezolva orice număr de solicitări. La fel cum o aplicație ASP.NET poate fi redimensionată pur și simplu prin adăugarea de servere Web, logica de afaceri implementată ca fluxuri de lucru poate fi scalată folosind servere suplimentare.