Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez az oktatóanyag a Windows Communication Foundation (WCF) alapszintű alkalmazás létrehozásához szükséges öt feladat közül a harmadikat ismerteti. Az oktatóanyagok áttekintéséért lásd : Oktatóanyag: Ismerkedés a Windows Communication Foundation-alkalmazásokkal.
A WCF-alkalmazások létrehozásának következő feladata egy WCF-szolgáltatás konzolalkalmazásban való üzemeltetése. A WCF-szolgáltatás egy vagy több végpontot tesz elérhetővé, amelyek mindegyike egy vagy több szolgáltatásműveletet tesz elérhetővé. A szolgáltatásvégpont a következő információkat adja meg:
- Egy cím, ahol megtalálhatja a szolgáltatást.
- Egy kötés, amely azokat az információkat tartalmazza, amelyek azt írják le, hogy az ügyfélnek hogyan kell kommunikálnia a szolgáltatással.
- Egy szerződés, amely meghatározza a szolgáltatás által az ügyfelei számára biztosított funkciókat.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Hozzon létre és konfiguráljon egy konzolalkalmazás-projektet WCF-szolgáltatás üzemeltetéséhez.
- Adjon hozzá kódot a WCF szolgáltatás üzemeltetéséhez.
- Frissítse a konfigurációs fájlt.
- Indítsa el a WCF szolgáltatást, és ellenőrizze, hogy fut-e.
Konzolalkalmazás-projekt létrehozása és konfigurálása a szolgáltatás üzemeltetéséhez
Konzolalkalmazás-projekt létrehozása a Visual Studióban:
A Fájl menüben válassza a Projekt/megoldás megnyitása>lehetőséget, és keresse meg a korábban létrehozott GettingStarted megoldást (GettingStarted.sln). Válassza a Megnyitás lehetőséget.
A Nézet menüben válassza a Megoldáskezelő.
Az Megoldáskezelő ablakban válassza a GettingStarted megoldást (felső csomópont), majd a helyi menü Új projekt hozzáadása elemét>.
Az Új projekt hozzáadása ablak bal oldalán válassza a Windows Desktop kategóriát a Visual C# vagy a Visual Basic alatt.
Válassza ki a konzolalkalmazás (.NET-keretrendszer) sablont, és adja meg a GettingStartedHost nevet a névhez. Kattintson az OK gombra.
Adjon hozzá egy hivatkozást a GettingStartedHost projektben a GettingStartedLib projekthez:
A Megoldáskezelő ablakban válassza a Hivatkozások mappát a GettingStartedHost projekt alatt, majd a helyi menüben válassza a Hivatkozás hozzáadása lehetőséget.
A Hivatkozás hozzáadása párbeszédpanelen, az ablak bal oldalán található Projektek területen válassza a Megoldás lehetőséget.
Válassza a GettingStartedLib lehetőséget az ablak középső részén, majd kattintson az OK gombra.
Ez a művelet elérhetővé teszi a GettingStartedLib projektben definiált típusokat a GettingStartedHost projekt számára.
Adjon hozzá egy hivatkozást a GettingStartedHost projektben a System.ServiceModel szerelvényhez:
A Megoldáskezelő ablakban válassza a Hivatkozások mappát a GettingStartedHost projekt alatt, majd a helyi menüben válassza a Hivatkozás hozzáadása lehetőséget.
A Referencia hozzáadása ablakban, az ablak bal oldalán található Szerelvények csoportban válassza a Keretrendszer lehetőséget.
Válassza a System.ServiceModel lehetőséget, majd kattintson az OK gombra.
Mentse a megoldást az Összes fájl>mentése gombra kattintva.
Kód hozzáadása a szolgáltatás üzemeltetéséhez
A szolgáltatás üzemeltetéséhez kódot kell hozzáadnia a következő lépések végrehajtásához:
- Hozzon létre egy URI-t az alapcímhez.
- Hozzon létre egy osztálypéldányt a szolgáltatás üzemeltetéséhez.
- Hozzon létre egy szolgáltatásvégpontot.
- Metaadatok cseréjének engedélyezése.
- Nyissa meg a szolgáltatás gazdagépét a bejövő üzenetek figyeléséhez.
Végezze el a következő módosításokat a kódon:
Nyissa meg a Program.cs vagy Module1.vb fájlt a GettingStartedHost projektben, és cserélje le a kódját a következő kódra:
using System; using System.ServiceModel; using System.ServiceModel.Description; using GettingStartedLib; namespace GettingStartedHost { class Program { static void Main(string[] args) { // Step 1: Create a URI to serve as the base address. Uri baseAddress = new Uri("http://localhost:8000/GettingStarted/"); // Step 2: Create a ServiceHost instance. ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress); try { // Step 3: Add a service endpoint. selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService"); // Step 4: Enable metadata exchange. ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; selfHost.Description.Behaviors.Add(smb); // Step 5: Start the service. selfHost.Open(); Console.WriteLine("The service is ready."); // Close the ServiceHost to stop the service. Console.WriteLine("Press <Enter> to terminate the service."); Console.WriteLine(); Console.ReadLine(); selfHost.Close(); } catch (CommunicationException ce) { Console.WriteLine("An exception occurred: {0}", ce.Message); selfHost.Abort(); } } } }Imports System.ServiceModel Imports System.ServiceModel.Description Imports GettingStartedLib.GettingStartedLib Module Service Class Program Shared Sub Main() ' Step 1: Create a URI to serve as the base address. Dim baseAddress As New Uri("http://localhost:8000/GettingStarted/") ' Step 2: Create a ServiceHost instance. Dim selfHost As New ServiceHost(GetType(CalculatorService), baseAddress) Try ' Step 3: Add a service endpoint. selfHost.AddServiceEndpoint( _ GetType(ICalculator), _ New WSHttpBinding(), _ "CalculatorService") ' Step 4: Enable metadata exchange. Dim smb As New ServiceMetadataBehavior() smb.HttpGetEnabled = True selfHost.Description.Behaviors.Add(smb) ' Step 5: Start the service. selfHost.Open() Console.WriteLine("The service is ready.") ' Close the ServiceHost to stop the service. Console.WriteLine("Press <Enter> to terminate the service.") Console.WriteLine() Console.ReadLine() selfHost.Close() Catch ce As CommunicationException Console.WriteLine("An exception occurred: {0}", ce.Message) selfHost.Abort() End Try End Sub End Class End ModuleA kód működésével kapcsolatos további információkért tekintse meg a szolgáltatás üzemeltetési programjának lépéseit.
A projekt tulajdonságainak frissítése:
A Megoldáskezelő ablakban válassza a GettingStartedHost mappát, majd a helyi menü Tulajdonságok elemét.
A GettingStartedHost tulajdonságok lapján válassza az Alkalmazás lapot:
C#-projektek esetén válassza a GettingStartedHost.Program lehetőséget az Indítási objektum listából.
Visual Basic-projektek esetén válassza a Service.Program lehetőséget az Indítási objektum listából.
A Fájl menüben válassza az Összes mentése lehetőséget.
A szolgáltatás működésének ellenőrzése
Hozza létre a megoldást, majd futtassa a GettingStartedHost konzolalkalmazást a Visual Studióban.
A szolgáltatást rendszergazdai jogosultságokkal kell futtatni. Mivel rendszergazdai jogosultságokkal nyitotta meg a Visual Studiót, a GettingStartedHost visual Studióban való futtatásakor az alkalmazás rendszergazdai jogosultságokkal is fut. Másik lehetőségként megnyithat egy új parancssort rendszergazdaként (a helyi menüben válassza a További>futtatás rendszergazdaként lehetőséget), és futtassa a GettingStartedHost.exe.
Nyisson meg egy webböngészőt, és keresse meg a szolgáltatás lapját a következő helyen
http://localhost:8000/GettingStarted/: .Feljegyzés
Az ilyen szolgáltatásokhoz megfelelő engedélyre van szükség a HTTP-címek a számítógépen való figyeléshez való regisztrálásához. Rendszergazda istrator-fiókok rendelkeznek ezzel az engedéllyel, de a nem rendszergazdai fiókoknak engedélyt kell adni a HTTP-névterekhez. A névtérfoglalások konfigurálásáról további információt a HTTP és a HTTPS konfigurálása című témakörben talál.
Szolgáltatás-üzemeltetési program lépései
A szolgáltatás üzemeltetéséhez hozzáadott kód lépései a következők:
1. lépés: Hozzon létre egy példányt az
Uriosztályból a szolgáltatás alapcímének tárolásához. Az alapcímet tartalmazó URL-cím rendelkezik egy nem kötelező URI-val, amely azonosít egy szolgáltatást. Az alapcím a következőképpen van formázva:<transport>://<machine-name or domain><:optional port #>/<optional URI segment>. A számológép szolgáltatás alapcíme a HTTP-átvitelt, a localhostot, a 8000-es portot és a GettingStarted URI-szegmenst használja.2. lépés: Hozza létre az ServiceHost osztály egy példányát, amelyet a szolgáltatás üzemeltetéséhez használ. A konstruktor két paramétert vesz fel: a szolgáltatási szerződést megvalósító osztály típusát és a szolgáltatás alapcímét.
3. lépés: Példány létrehozása ServiceEndpoint . A szolgáltatásvégpont egy címből, egy kötésből és egy szolgáltatási szerződésből áll. A ServiceEndpoint konstruktor a szolgáltatási szerződés felületének típusából, egy kötésből és egy címből áll. A szolgáltatási szerződés a
ICalculatorszolgáltatástípusban definiált és implementálható. A minta kötése WSHttpBindingegy beépített kötés, és olyan végpontokhoz csatlakozik, amelyek megfelelnek a WS-* specifikációinak. A WCF-kötésekről további információt a WCF-kötések áttekintésében talál. A végpont azonosításához hozzáfűzi a címet az alapcímhez. A kód a calculatorService címet és a végpont teljes címét a következőkénthttp://localhost:8000/GettingStarted/CalculatorServiceadja meg: .Fontos
A .NET-keretrendszer 4-es és újabb verziójához nem kötelező hozzáadni egy szolgáltatásvégpontot. Ezekben a verziókban, ha nem adja hozzá a kódot vagy a konfigurációt, a WCF egy alapértelmezett végpontot ad hozzá a szolgáltatás által implementált alapcímek és szerződések minden kombinációjához. Az alapértelmezett végpontokról további információt a végpontcím megadása című témakörben talál. Az alapértelmezett végpontokkal, kötésekkel és viselkedésekkel kapcsolatos további információkért lásd a WCF-szolgáltatások egyszerűsített konfigurációját és egyszerűsített konfigurációját.
4. lépés: Metaadatok cseréjének engedélyezése. Az ügyfelek metaadat-csere használatával proxákat hoznak létre a szolgáltatásműveletek meghívásához. A metaadatok cseréjének engedélyezéséhez hozzon létre egy példánytServiceMetadataBehavior, állítsa be a tulajdonságát
trueHttpGetEnabled, és adja hozzá azServiceMetadataBehaviorobjektumot a Behaviors ServiceHost példány gyűjteményéhez.5. lépés: Nyissa meg ServiceHost a bejövő üzenetek figyeléséhez. Az alkalmazás megvárja, amíg lenyomja az Enter billentyűt. Az alkalmazás példányosítása ServiceHostután végrehajt egy próba/fogási blokkot. További információ a WCF-ügyfélerőforrások biztonságos fogásáról: A WCF-ügyfélerőforrások felszabadítása ServiceHosta Bezárás és megszakítás használatával.
Fontos
WCF-szolgáltatáskódtár hozzáadásakor a Visual Studio üzemelteti, ha hibakeresést hajt végre egy szolgáltatásgazda elindításával. Az ütközések elkerülése érdekében megakadályozhatja, hogy a Visual Studio a WCF szolgáltatástárat üzemeltetje.
- Válassza Megoldáskezelő a GettingStartedLib projektet, majd a helyi menü Tulajdonságok elemét.
- Válassza a WCF-beállítások lehetőséget , és törölje a jelet a WCF-szolgáltatásgazda indítása jelölőnégyzetből , amikor egy másik projektet hibakereséskor ugyanabban a megoldásban hibakeresésre alkalmaz.
Következő lépések
Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:
- Hozzon létre és konfiguráljon egy konzolalkalmazás-projektet WCF-szolgáltatás üzemeltetéséhez.
- Adjon hozzá kódot a WCF szolgáltatás üzemeltetéséhez.
- Frissítse a konfigurációs fájlt.
- Indítsa el a WCF szolgáltatást, és ellenőrizze, hogy fut-e.
Lépjen tovább a következő oktatóanyagra, amelyből megtudhatja, hogyan hozhat létre WCF-ügyfelet.