Megosztás:


Oktatóanyag: Alapszintű Windows Communication Foundation-szolgáltatás futtatása és futtatása

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

  1. Konzolalkalmazás-projekt létrehozása a Visual Studióban:

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

    2. A Nézet menüben válassza a Megoldáskezelő.

    3. Az Megoldáskezelő ablakban válassza a GettingStarted megoldást (felső csomópont), majd a helyi menü Új projekt hozzáadása elemét>.

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

    5. Válassza ki a konzolalkalmazás (.NET-keretrendszer) sablont, és adja meg a GettingStartedHost nevet a névhez. Kattintson az OK gombra.

  2. Adjon hozzá egy hivatkozást a GettingStartedHost projektben a GettingStartedLib projekthez:

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

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

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

  3. Adjon hozzá egy hivatkozást a GettingStartedHost projektben a System.ServiceModel szerelvényhez:

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

    2. A Referencia hozzáadása ablakban, az ablak bal oldalán található Szerelvények csoportban válassza a Keretrendszer lehetőséget.

    3. Válassza a System.ServiceModel lehetőséget, majd kattintson az OK gombra.

    4. 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:

  1. Hozzon létre egy URI-t az alapcímhez.
  2. Hozzon létre egy osztálypéldányt a szolgáltatás üzemeltetéséhez.
  3. Hozzon létre egy szolgáltatásvégpontot.
  4. Metaadatok cseréjének engedélyezése.
  5. 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:

  1. 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 Module
    

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

  2. A projekt tulajdonságainak frissítése:

    1. A Megoldáskezelő ablakban válassza a GettingStartedHost mappát, majd a helyi menü Tulajdonságok elemét.

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

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

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

  2. 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 Uri osztá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ént http://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áttrueHttpGetEnabled, és adja hozzá az ServiceMetadataBehavior objektumot 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.

  1. Válassza Megoldáskezelő a GettingStartedLib projektet, majd a helyi menü Tulajdonságok elemét.
  2. 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.