1 / 36

WCF szolgáltatások telepítése

WCF szolgáltatások telepítése. Roja Csaba – 2011. Október 17. Amiről szó lesz…. Bevezetés a hostolás szükségességéről A szükséges Windows szolgáltatások bekapcsolása/telepítése Hostolás : IIS web szereveren WAS használatával Managed application-nel Windows szolgáltatáskéntként

agalia
Download Presentation

WCF szolgáltatások telepítése

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. WCF szolgáltatások telepítése Roja Csaba – 2011. Október 17.

  2. Amiről szó lesz… • Bevezetés a hostolás szükségességéről • A szükséges Windows szolgáltatások bekapcsolása/telepítése • Hostolás: • IIS web szereveren • WAS használatával • Managedapplication-nel • Windows szolgáltatáskéntként • Service HostFactory • WCF-providedHost

  3. Bevezetés • Eddig: szolgáltatások készítése és kinyilvánítása • A WCF szolgáltatások nem önálló, futtatható alkalmazások. • Hostolásra van szükség. Ehhez a WCF sok lehetőséggel szolgál. • Host: • Konzol alkalmazás • Windows service • Windows Form alkalmazás • WPF alkalmazás • IIS (Internet InformationServices) • WAS (Windows ProcessActivation Service) • Hostolás után a kliensek elérhetik a szolgáltatást és használhatják azt. Managedapplication-nel Web szerveren

  4. Hostolás Web szerveren • IIS / WAS • Előnye: kevesebb feladat hárul ránk (kevesebbet kell kódolni) • Az ilyen módon hostolt szolgáltatások elindulnak az első fogadott kérés alkalmával. • További előnyök a WAS-nál: • Támogatja a HTTP-n kívül a TCP, MSMQ és namedpipes protokollokat.

  5. Hostolás IIS web szerveren I. • A művelet hasonló egy hagyományos web-szolgáltatás hostolásához. • Előnyei: • Magas rendelkezésre állás • Skálázhatóság • A hostolt szolgáltatások képesek párhuzamosan futni korábbi .NET alkalmazásokkal, így lehetőségünk van már létező web szolgáltatásokba történő integrálásra. • Hátránya: • Megkívánja egy IIS web szerver telepítését és konfigurálását. • A IIS 7.0 előtti verziókon hostolt szolgáltatások csak a HTTP protokollt képesek használni. • Számít a verziószám: • IIS 5.1-el hostolt szolgáltatások csak ugyanazt a portot használhatják  ez korlátozza a párhuzamosan végrehajtható host folyamatok számát.

  6. Hostolás IIS web szerveren II. • Meg kell győződnünk róla, hogy az IIS megfelelően van-e telepítve és konfigurálva. • IIS telepítése: • VezérlőpultProgramokWin. Szolg. Ki és bekapcs.Internet InformationServices/Webkezelésiezközök/IIS-kezelő konzolOK • Ezáltal az IIS 7.0 verziója települ fel. • IIS konfigurálása: • A telepítés egy default konfigurációt is magába foglal, ami nekünk egyelőre elég. • Ha mégis kéne: az IIS kezelő elérése az inetmgrparanccsal a leggyorsabb.

  7. IIS telepítése és kezelő felülete Telepítés Kezelő felület

  8. Hostolás IIS web szerveren III. • Ha az IIS a .NET keretrendszer után lett telepítve, még egy lépés szükséges: • A WCF Activation komponensek telepítése: • VezérlőpultProgramokWin. Szolg. Ki és bekapcs.Microsoft .NET Framework/WCF HTTP & Non-HTTPActivation

  9. Hostolás IIS web szerveren IV. • Új website készítése: • VS2010FileNewWebsiteWCF Service (C#) • Ami kell de a Visual Studio elintézi: • .svc file létrehozása. • Ennek tartalmaznia kell a @ServiceHost direktívát. • <%@ ServiceHostLanguage="C#" Debug="true" Service=„Service" CodeBehind="~/App_Code/Service.cs" %> • App_Codedirectory létrehozása. • Ez tartalmazza a Service osztályt (Service.cs)(és a hozzá tartozó interface-t (IService.cs)). • A Web.config file-ban a szolgáltatás által használt endpointokat kell megadni. • Ami eltér az IIS-nél: • Nem kell baseAddress-t megadni, mert a címet a Website virtuális directory-ja határozza meg. (Ez a WAS-elhostolt szolgáltatásokra is igaz)

  10. HostolásWAS-el (nem-HTTP protokollokon keresztül.) • WAS (Windows ProcessActivation Service) • Az IIS-hez hasonló hostolást tesz lehetővé. • Az IIS 7.0 részét képezi. • A WAS-el való hostoláshoz nem kell feltétlenül az egész IIS 7.0 csomagot feltelepítenünk. • Támogatott protokollok: • HTTP • TCP • Namedpipes • MSMQ • Hasonlóságok: • Service (.svc) file @ServiceHost direktívával név és a kódnyelv megadásához • App_Code alkönyvtár amelyben megtalálhatók a szolgáltatást leíró kódfileok (szerződések) • Web.config file a konfigurációhoz, abc beállításhoz. Minden használni kívánt végpontnak a system.ServiceModel tag-en belül kell szerepelnie. • Ez eddig nagyon ismerős, de mi a különbség?

  11. HostolásWAS-el • A WAS-en keresztüli hostolás annyit tesz, hogy számítunk egy kérés beérkezésére, még mielőtt az szolgáltatást hostolóapplicationdomain létrejönne. • Alapértelmezetten az applicationdomain 29 óránként kerül újra feldolgozásra.  Ez probléma lehet. • Emiatt a WAS PreCall session módú szolgáltatásokhoz előnyös.

  12. HostolásWAS-el • Működése (activation): • Az IIS 7.0 és a WAS Windows NT szolgáltatásokat használ, hogy a nem-HTTP protokollokat kezelni tudják. • Ezek adaptereikkel a portok figyeléséért és a kérések fogadásáért felelősek. • Ha kérés érkezik, azt egy külső process lekezeli (SMSvcHost.exe). • Minden egyes használni kívánt Windows NT szolgáltatásnak futnia kell a host gépen. • Ezek a szolgáltatások:(CPRendszer…Felügyeleti Eszk.Szolgáltatások) (services.msc)

  13. HostolásWAS-el • Ha WAS-elHTTP-től eltérő protokollokat kívánunk használni, A Windows szolgáltatásoknál be kell kapcsolnunk ezt az opciót. • VezérlőpultProgramokWin. Szolg. Ki és bekapcs.Microsoft .NET Framework/WCF HTTP & Non-HTTPActivation

  14. HostolásWAS-el • WAS konfiguráció: • Site binding hozzáadása • %windir%\system32\inetsrv\appcmd.exeset site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*'] • %windir%\system32\inetsrv\appcmd.exesetapp "Default Web Site/<WCF Application>" /enabledProtocols:http,net.tcp • Az első parancs a net.tcpsitebinding-et adja hozzá a %windir%\system32\inetsrv\configdirectory-ban található applicationHost.configfilehoz. • A második parancs az enabledProtocols paraméterben megadott protokollokat engedélyezi a website számára.

  15. HostolásWAS-el

  16. Service HostFactory • Mivel a WAS és az IIS 7.0 támogatja a dinamikus aktiválást, lehetőség van saját Service HostFactory-k létrehozására. • A WCF ServiceHostFactory osztályával dinamikusan tudunk példányosítani hostokat, a bejövő kérések függvényében. • Hasznos amikor • eseménykezelőket kell létrehoznunk a szolgáltatások nyitására és lezárására. • egyszerre sok szolgáltatást kell bekonfigurálni. • Létrehozása: • Implementálni kell a ServiceHostFactory osztály CreateServiceHost metódusát.

  17. HostolásManagedApplication-ben • ManagedApplication mint host: • Konzol alkalmazás • Windows service • Windows Form alkalmazás • WPF alkalmazás • Egyszerűbb, kisebb szolgáltatások hostolásához a WCF egy beépített hostot szolgáltat, amely parancssoron keresztül elérhető. • A választás attól függ, hogy • a hostnak mennyire robosztusnak kell lennie, • valamint, hogy milyen típusú kliens alkalmazások fognak hozzáférni a szolgáltatáshoz.

  18. HostolásManagedApplication-ben • Ezt a fajta hostolást hívják self-hosting-nak. • Előnye: • Ez a legrugalmasabb hostolási lehetőség, mert ez a legegyszerűbb és leggyorsabb módja a telepítésnek. • Hátránya: • Ez a legkevésbé robosztus hostolási lehetőség, mert nem szolgáltat magasabb szintű hostolási és kezelő lehetőségeket.

  19. Hostolás konzol alkalmazással I. • Az IIS vagy WAS használatától eltérően, ebben az esetben szükséges hostolási folyamatot vezérlő kódot írni. (self-hosting) • Ezt a „módszert” általában fejlesztési fázis alatt szokták használni. • Működése: • A konzol alkalmazásnak létre kell hoznia és meg kell nyitnia egy ServiceHost objektum példányát. • Ez nyitva és elérhető marad mindaddig, amíg nincs többé rá szükség. • A példányosítás után nyitjuk meg az objektumot, amely egy „openlistener”-t hoz létre a szolgáltatáshoz, valamint engedélyezi, hogy üzeneteket fogadjon.

  20. Hostolás konzol alkalmazással II. staticvoid Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof(WhiskeyService))) { host.Open(); Console.WriteLine("The WhiskeyService is ready.\nPress a key to exitifyoucan"); Console.ReadKey(true); host.Close(); } }

  21. Hostolás konzol alkalmazással III. • Még nincs vége, mert • Itt is meg kell határozni egy endpoint-ot a szolgáltatásnak. • Ez kóddal is megoldható éppúgy mint a szolgáltatás • vagy egy konfigurációs fileon keresztül, amelyet mi adunk hozzá a projekthez (App.config). • Ha nem határozunk meg endpoint-ot, a szolgáltatás defaultendpoint-okat fog használni. Ez annyit jelent, hogy minden a szolgáltatás által implementált szerződés báziscíméhez automatikusan létre fog jönni egy endpoint. Így nem kell konfigurációs file sem.

  22. WCF szolgáltatás hostolása Windows szolgáltatással I. • A Windows szolgáltatások akkor hasznosak ha felhasználói felület nélküli, hosszan futó (napok++) WCF szolgáltatásokkal van dolgunk. • Hasznos mert: • „Byusing a Windows service, youcan be surethatthe service host is alwaysavailable”  • Egy Windows szolgáltatást be lehet konfigurálni, hogy automatikusan elinduljon, ha az operációs rendszer betölt. • Lehet szüneteltetni, leállítani és újraindítani is a Microsoft Management Console-on (MMC) keresztül.

  23. WCF szolgáltatás hostolása Windows szolgáltatással II. • Azoknak az alkalmazásoknak amelyek, hosszan futó WCF szolgáltatásokat hostolnak, sok közös vonása van a Windows szolgáltatásokkal. • Az ilyen WCF szolgáltatások főleg futtatható szerver állományok, amelyeknek nem érintkeznek közvetlenül a felhasználókkal, ezáltal nincs semmilyen felhasználói felületük. • Ebből kifolyólag, a WCF szolgáltatások Windows service alkalmazásokban történő hostolása egy kézenfekvő módszer, ha hosszan futó, robosztus WCF alkalmazásokat akarunk létrehozni.

  24. WCF szolgáltatás hostolása Windows szolgáltatással III. • A fejlesztők gyakori dilemmája, hogy Windows Service-el, vagy IIS/WAS-en keresztül hostolják a WCF alkalmazásokat. • Windows szolgáltatást akkor érdemes választani, ha: • Explicit aktiválás szükséges. (automatikus, ellentétben az első bejövő üzenet hatására történő dinamikus indítással) • Ha állandóan futó host-ra van szükségünk. (Megbízhatóság) A szolgáltatás csak akkor álljon le, ha azt egy adminisztrátor leállítja a szolgáltatáskezelőn keresztül. (ellentétben a dinamikus indítással, leállítással, amely optimális az erőforrások szempontjából) • Ha használni akarjuk a HTTP-n kívüli protokollokat is (TCP, MSMQ, Namedpipes)

  25. WCF szolgáltatás hostolása Windows szolgáltatással • Windows szolgáltatást éppúgy létrehozhatunk Visual Studioban egy mintával mint egy konzol alkalmazást. • Folyamata: • Projektlétrehozás Windows Service mintával • Referenciák hozzáadása a projekthez: • System.ServiceModel • System.ServiceProcess • System.Configuration.Install (a project telepítőhöz kell)

  26. WCF szolgáltatás hostolása Windows szolgáltatással • Hivatkozások hozzáadása: • usingSystem.ServiceModel; • usingSystem.ComponentModel; • usingSystem.Configuration.Install; • usingSystem.ServiceProcess; (Az OnStart és OnStop metóduskezelők automatikusan létrejönnek a projekt létrehozásakor. Ezenfelül az alkalmazás őse a ServiceBase osztály, amely elengedhetetlen, ha Windows szolgáltatást akarunk létrehozni.)

  27. WCF szolgáltatás hostolása Windows szolgáltatással • ServiceHost változó létrehozása publicServiceHostserviceHost = null; • ServiceNamepropery beállítása és entrypoint megadása (ha eddig nem volt) publicVodkaWindowsService() { ServiceName = "Vodka Windows Service"; } publicstaticvoid Main(string[] args) { ServiceBase.Run(newVodkaWindowsService()); }

  28. WCF szolgáltatás hostolása Windows szolgáltatással • Az OnStart metódus megírása, amely a ServiceHost egy példányát fogja létrehozni. protectedoverridevoidOnStart(string[] args) { if(serviceHost != null) { serviceHost.Close(); } serviceHost = newServiceHost(typeof (VodkaService)); serviceHost.Open(); }

  29. WCF szolgáltatás hostolása Windows szolgáltatással • Az OnStop metódus megírása, amely a ServiceHost példány bezárásáért felel. protectedoverridevoidOnStop() { if(serviceHost != null) { serviceHost.Close(); serviceHost = null; } }

  30. WCF szolgáltatás hostolása Windows szolgáltatással • Ahhoz, hogy a szolgáltatást Windows service-ként tudjuk telepíteni, létre kell hoznunk egy ProjectInstaller osztályt. Ennek le kell származnia az Installer osztályból és meg kell jelölni a RunInstaller attribútummal. [RunInstaller(true)] publicclassProjectInstaller : Installer { privateServiceProcessInstallerprocess; privateServiceInstaller service; publicProjectInstaller() { process = newServiceProcessInstaller(); process.Account = ServiceAccount.LocalSystem; service = newServiceInstaller(); service.ServiceName = "Vodka Windows Service"; Installers.Add(process); Installers.Add(service); } }

  31. WCF szolgáltatás hostolása Windows szolgáltatással • Konfiguráció az App.configfileban (hozzá is kell adni a projekthez). Tartalmaznia kell egy baseaddress-t és minden endpoint-ot amely a WCF szolgáltatáshoz szükséges. • Fordítás • Telepítés command-lineal: • installutil C:\Projectsxyz\bin\Debug\VodkaWindowsService.exe • Telepítés után a szolgáltatás elérhető a Service Control Manager-en keresztül.

  32. Telepítés WCF-providedhostal • Egyszerűbb, kisebb szolgáltatások gyors telepítéséhez a WCF egy beépített hostot szolgáltat, amely parancssoron keresztül elérhető. • Például: • Egy SimpleService nevű szolgáltatást szeretnénk hostolni. • A szerződés és az implementációs osztályok a SimpleService.dll-be lettek lefordítva. • A konfig file neve App.config • Comman-line: • WcfSvcHost.exe /service:C:\Projectxyz\bin\SimpleService.dll /config:C:\Projectxyz\App.config

  33. Telepítés WCF-providedhostal II. • WCF Service Host dialógusablak: információkat jelenít meg a betöltött szolgáltatásról. • Innentől kezdve már hozzáférhetünk a szolgáltatáshoz kliensen keresztül.

  34. Összefoglalás, előnyök, hátrányok

  35. Összefoglalás, előnyök, hátrányok

  36. Köszönöm a figyelmet!

More Related