Szolgáltatások telepítése

Download Report

Transcript Szolgáltatások telepítése

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
Managed application-nel
Windows szolgáltatáskéntként
• Service Host Factory
• WCF-provided Host
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
Managed
Windows service
application-nel
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.
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
named pipes 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 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.
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-HTTP Activation
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.

<%@ ServiceHost Language="C#" Debug="true" Service=„Service"
CodeBehind="~/App_Code/Service.cs" %>
▫ 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)
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) 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á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.
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)
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
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/<WCF Application>" /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.
15
Hostolás WAS-el
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 Factoryk 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á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.
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.
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.
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();
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.
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.
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 Serviceel, 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)
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)
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.)
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());
}
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();
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;
}
}
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);
}
}
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.
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
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.
34
Összefoglalás, előnyök, hátrányok
Hosting
Environment
IIS 5.1, IIS 6.0
Windows Process Activation Service
(WAS)
IIS 7.0
Common Scenarios
•Running a WCF service side-by-side
with ASP.NET content on the
Internet using the HTTP protocol.
•Running a WCF service without
installing IIS on the Internet using
various transport protocols.
•Running a WCF service with
ASP.NET content.
•Running a WCF service on the
Internet using various transport
protocols.
Key Benefits and
Limitations
•Process recycling.
•Idle shutdown.
•Process health monitoring.
•Message-based activation.
•HTTP only.
•IIS is not required.
•Process recycling.
•Idle shutdown.
•Process health monitoring.
•Message-based activation.
•Works with HTTP, TCP, named
pipes, and MSMQ.
•WAS benefits.
•Integrated with ASP.NET and IIS
content.
35
Összefoglalás, előnyök, hátrányok
Hosting Environment Common Scenarios
•Console applications used during
development.
Managed Application ("Self-Hosted")
Key Benefits and
Limitations
•Flexible.
•Easy to deploy.
•Rich WinForm and WPF client
applications accessing services.
•Not an enterprise solution for
services.
•Service process lifetime controlled by
the operating system, not messageactivated.
Windows Services (formerly known
as NT services)
•A long-running WCF service hosted
outside of IIS.
•Supported by all versions of
Windows.
•Secure environment.
36
Köszönöm a figyelmet!