Eelmine nädal esinesin niisugusel üritusel nagu .Net -i liivakast. Ürituse organiseeris ENETA ja eesmärgiks oli ühe päevaga (4h) anda ülevaade .Net 3.0 -i tehnoloogiatest (WPF, WCF, WF, CardSpace) ning luua valmis rakendus, mis kõikki neid tehnoloogiaid kasutab. Minu ülesandeks oli rääkida WCF -st ja täiendada demo rakendust nii, et see publitseeriks WCF abil teenuseid.
Antud üritus leidis aset Tartus (28 veebruaril) ja Tallinnas (1 märtsil). Mõlemad üritused võib lugeda õnnestunuks, kuigi Tartu -s läks nii mõndagi nihusti (minul vähemasti).
Kõigepealt veetsime hulga aega demo kokku panemise peale, nii et aega keskenduda ja valmistuda esinemiseks otseselt ei jäänudki. Lisaks, kuna slaidid ja demo tehti minu läpaka peal, siis ei saanud ma ka esimese esineja ajal mõtiskleda. Ja kui lisada nüüd kirss tordi peale, siis nii ebaõnnestunud demo, kui seal ei ole ma varem teinud. Paras õppetund ja kogemus.
Tallinnas see eest õnnestus esinemine suurepäraselt, rohkem läbimõeldud demo ja parandatud slaidid. Tartu esinemine andis palju mõtteid, mida kohendada (Tänud!). Ka oli Tallinnas ohtralt küsimusi kogu esitluse vältel ja väga aktiivne publik.
Nüüd mõningased segadused, mis Tartus tekkisid.
Nimelt võimaldab "Reliable Sessions" kergelt realiseerida teenust, mis tagab pakkettide (sõnumite) kohale jõudmise ja ka õiges järjekorras kohale jõudmise üle muude bindingute, kui TCP (ehk siis on võimalik kasutada wsHttpBindingut, millega suhtlus toimib samamoodi kui TCP -ga). TCP bindingu puhul ei ole antud konfiguratsioonist kasu, TCP ise tagab juba pakketide korrektse saabumise.
Ja lühidalt WCF -i (ning üldse teenuste) kasumlikkusest.
WCF ja üldse igasugused teenused toovad benefiti, kus erinevatel platvormidel aga samu standardeid toetavad lahendused saavad omavahel rääkida (WS-* standardid). Miks üldse teha teenuseid? Kuna andmete hoidmine kümnes kohas on ebapraktiline ja kulukas (just andmete sünkroniseerimine). Kõik riigiinfosüsteemid liiguvad teenuste pakkumise suunas, ja proovivad hoida ühte tüüpi andmeid ainult ühes kohas, et tagada andmete kvaliteeti ning kättesaadavust (põhjuseid on veel kindlasti!).
WCF sai loodud selleks, et Microsoft ei peaks enam haldama viite erinevat hajusrakenduste tehnoloogiat, mille oli loonud. Need sai koondatud ühte platvormi (WCF). Ka ei pea antud platvormi kasutaja õppima iga erineva tehnoloogia jaoks uut kirjelduse viisi, vaid kõik käib ühte moodi. ÜKS TUTTAV API, PALJU VÄLJUNDEID, KERGE LAIENDATAVUS!
WCF võimaldab lahus hoida teenuse implementatsiooni ja seda kuidas teenust kasutama hakatakse (või publitseeritud on). On võimalik publitseerida ühte ja sama teenust mitut endpointi kasutades täiesti erineva suunitlusega (näiteks netTcpBinding, sisevõrgu jaoks. wsHttpBinding välisvõrgu jaoks). Ning kui panna kirss jällegi tordi peale, siis ei ole probleem sama teenus panna implementeerima kahte interface -i,millest üks on mõeldud adminidele ja teine tavakasutajatele. Luua üks endpoint adminnidele, teine tavakasutajatele ja on samast teenusest (implementatsioonist) kaks erinevat väljundit. Üks interface lihtsalt on piiratud rohkem.
Enpointide loomine ning käitumiste konfigureerimine ei nõua teenuse implementatsiooni uuesti kompileerimist (tegu on ju *.config failiga, tehtud muudatused toimuvad koheselt)!
Materjalid
Demo, mis ma tegin Tallinnas on siin.
Slaidid, millega esinesin Tallinnas on siin (need on muutunud võrreldes Tartuga).
Slaide ja demo koodi võib kasutada vabalt oma esinemistes.
Tagasi ürituse eesmärgi juurde. Selleks oli ka kõikki tehnoloogiaid haarav lahendus valmis teha. Sellega me saime hakkama, aga kuni kood pole kommenteeritud ja puhastatud ning väike juhend kasutamiseks loodud, seni seda üles ei pane. Plaanis on see ära teha mõne nädala jooksul. Varuge kannatust!
Igasugune lisatagasiside antud üritustelt on teretulnud [:)]