Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

WCF szolgáltatások telepítése Roja Csaba – 2011. Október 17.

Hasonló előadás


Az előadások a következő témára: "WCF szolgáltatások telepítése Roja Csaba – 2011. Október 17."— Előadás másolata:

1 WCF szolgáltatások telepítése Roja Csaba – 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 ▫Managed application-nel ▫Windows szolgáltatáskéntként •Service Host Factory •WCF-provided Host 2

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 Information Services) ▫WAS (Windows Process Activation Service) •Hostolás után a kliensek elérhetik a szolgáltatást és használhatják azt. Managed application-nel Web szerveren 3

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 named pipes protokollokat. 4

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. 5

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 Information Services/Webkezelési ezkö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 inetmgr paranccsal a leggyorsabb. 6

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

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-HTTP Activation 8

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 direktívát.  ▫App_Code directory 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-el hostolt szolgáltatásokra is igaz) 9

10 Hostolás WAS-el (nem-HTTP protokollokon keresztül.) •WAS (Windows Process Activation 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 ▫Named pipes ▫MSMQ •Hasonlóságok: ▫Service (.svc) 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? 10

11 Hostolás WAS-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ó application domain létrejönne. •Alapértelmezetten az application domain 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. 11

12 Hostolás WAS-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) 12

13 Hostolás WAS-el •Ha WAS-el HTTP-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-HTTP Activation 13

14 Hostolás WAS-el •WAS konfiguráció: ▫Site binding hozzáadása  %windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" - +bindings.[protocol='net.tcp',bindingInformation='808:*']  %windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/ " /enabledProtocols:http,net.tcp ▫Az első parancs a net.tcp sitebinding-et adja hozzá a %windir%\system32\inetsrv\config directory-ban található applicationHost.config filehoz. ▫A második parancs az enabledProtocols paraméterben megadott protokollokat engedélyezi a website számára. 14

15 Hostolás WAS-el 15

16 Service Host Factory •Mivel a WAS és az IIS 7.0 támogatja a dinamikus aktiválást, lehetőség van saját Service Host Factory- 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. 16

17 Hostolás Managed Application-ben •Managed Application 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. 17

18 Hostolás Managed Application-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. 18

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 „open listener”-t hoz létre a szolgáltatáshoz, valamint engedélyezi, hogy üzeneteket fogadjon. 19

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

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 default endpoint-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. 21

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: ▫„By using a Windows service, you can be sure that the service host is always available”   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. 22

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. 23

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, Named pipes) 24

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: 1.Projektlétrehozás Windows Service mintával 2.Referenciák hozzáadása a projekthez:  System.ServiceModel  System.ServiceProcess  System.Configuration.Install (a project telepítőhöz kell) 25

26 WCF szolgáltatás hostolása Windows szolgáltatással 3.Hivatkozások hozzáadása:  using System.ServiceModel;  using System.ComponentModel;  using System.Configuration.Install;  using System.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.) 26

27 WCF szolgáltatás hostolása Windows szolgáltatással 4.ServiceHost változó létrehozása public ServiceHost serviceHost = null; 5.ServiceName propery beállítása és entrypoint megadása (ha eddig nem volt) public VodkaWindowsService() { ServiceName = "Vodka Windows Service"; } public static void Main(string[] args) { ServiceBase.Run(new VodkaWindowsService()); } 27

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

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

30 WCF szolgáltatás hostolása Windows szolgáltatással 8.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)] public class ProjectInstaller : Installer { private ServiceProcessInstaller process; private ServiceInstaller service; public ProjectInstaller() { process = new ServiceProcessInstaller(); process.Account = ServiceAccount.LocalSystem; service = new ServiceInstaller(); service.ServiceName = "Vodka Windows Service"; Installers.Add(process); Installers.Add(service); } 30

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

32 Telepítés WCF-provided hostal •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 32

33 Telepítés WCF-provided hostal 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. 33

34 Összefoglalás, előnyök, hátrányok Hosting Environment Common Scenarios Key Benefits and Limitations IIS 5.1, IIS 6.0 • Running a WCF service side-by-side with ASP.NET content on the Internet using the HTTP protocol. • Process recycling. • Idle shutdown. • Process health monitoring. • Message-based activation. • HTTP only. Windows Process Activation Service (WAS) • Running a WCF service without installing IIS on the Internet using various transport protocols. • IIS is not required. • Process recycling. • Idle shutdown. • Process health monitoring. • Message-based activation. • Works with HTTP, TCP, named pipes, and MSMQ. IIS 7.0 • Running a WCF service with ASP.NET content. • Running a WCF service on the Internet using various transport protocols. • WAS benefits. • Integrated with ASP.NET and IIS content. 34

35 Összefoglalás, előnyök, hátrányok 35 Hosting EnvironmentCommon Scenarios Key Benefits and Limitations Managed Application ("Self-Hosted") • Console applications used during development. • Rich WinForm and WPF client applications accessing services. • Flexible. • Easy to deploy. • Not an enterprise solution for services. Windows Services (formerly known as NT services) • A long-running WCF service hosted outside of IIS. • Service process lifetime controlled by the operating system, not message- activated. • Supported by all versions of Windows. • Secure environment.

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


Letölteni ppt "WCF szolgáltatások telepítése Roja Csaba – 2011. Október 17."

Hasonló előadás


Google Hirdetések