Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows Communication Foundation (WCF) szolgáltatásainak konfigurálása összetett feladat lehet. Számos különböző lehetőség létezik, és nem mindig könnyű meghatározni, hogy milyen beállításokra van szükség. Bár a konfigurációs fájlok növelik a WCF-szolgáltatások rugalmasságát, sok nehezen kereshető probléma forrása is. .NET-keretrendszer 4.6.1 kezeli ezeket a problémákat, és módot kínál a szolgáltatáskonfiguráció méretének és összetettségének csökkentésére.
Egyszerűsített konfiguráció
A WCF szolgáltatáskonfigurációs fájljaiban a <system.serviceModel> szakasz minden üzemeltetett szolgáltatáshoz tartalmaz egy <service> elemet. Az <service> elem olyan elemek gyűjteményét <endpoint> tartalmazza, amelyek meghatározzák az egyes szolgáltatásokhoz közzétett végpontokat, és opcionálisan a szolgáltatás viselkedését. Az <endpoint> elemek meghatározzák a végpont által közzétett címet, kötést és szerződést, valamint opcionálisan a kötés konfigurációját és a végpont viselkedését. A <system.serviceModel> szakasz tartalmaz egy <behaviors> elemet is, amely lehetővé teszi a szolgáltatás vagy a végpont viselkedésének megadását. Az alábbi példa egy <system.serviceModel> konfigurációs fájl szakaszát mutatja be.
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name=MyBindingConfig"
maxBufferSize="100"
maxReceiveBufferSize="100" />
</basicHttpBinding>
</bindings> <services>
<service behaviorConfiguration="MyServiceBehavior"
name="MyService">
<endpoint address=""
binding="basicHttpBinding"
contract="ICalculator"
bindingConfiguration="MyBindingConfig" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
.NET-keretrendszer 4.6.1 megkönnyíti a WCF-szolgáltatások konfigurálását azáltal, hogy eltávolítja az elemre vonatkozó követelményt<service>. Ha nem ad hozzá szakaszt <service> vagy nem ad hozzá végpontokat egy <service> szakaszban, és a szolgáltatás programozott módon nem határoz meg végpontokat, akkor a rendszer automatikusan hozzáad egy alapértelmezett végpontot a szolgáltatáshoz, egyet az egyes szolgáltatási alapcímekhez és a szolgáltatás által implementált szerződésekhez. Ezen végpontok mindegyikében a végpont címe az alapcímnek felel meg, a kötést az alapcímséma határozza meg, a szerződés pedig a szolgáltatás által implementált. Ha nem kell semmilyen végpontot vagy szolgáltatás viselkedést megadnia, vagy nem kell módosítania a kötési beállításokat, akkor egyáltalán nem kell megadnia egy szolgáltatáskonfigurációs fájlt. Ha egy szolgáltatás két szerződést valósít meg, és a gazdagép http- és TCP-átvitelt is engedélyez, a szolgáltatás gazdagépe négy alapértelmezett végpontot hoz létre, egyet minden egyes átvitelt használó szerződéshez. Az alapértelmezett végpontok létrehozásához a szolgáltatás gazdagépének tudnia kell, hogy milyen kötéseket kell használnia. Ezek a beállítások egy <protocolMappings> alszakaszban vannak megadva a <system.serviceModel> szakaszban. A <protocolMappings> szakasz a kötéstípusokra leképezett átviteli protokoll-sémák listáját tartalmazza. A szolgáltatás hosztja a neki átadott alapcímeket használja annak meghatározására, hogy melyik kapcsolatot kell alkalmaznia. Az alábbi példa az <protocolMappings> elemet használja.
Figyelmeztetés
Az alapértelmezett konfigurációelemek( például kötések vagy viselkedések) módosítása hatással lehet a konfigurációs hierarchia alacsonyabb szintjein definiált szolgáltatásokra, mivel ezek az alapértelmezett kötéseket és viselkedéseket használják. Ezért aki módosítja az alapértelmezett kötéseket és viselkedéseket, tisztában kell lennie azzal, hogy ezek a módosítások hatással lehetnek a hierarchia más szolgáltatásaira is.
Megjegyzés
Az Internet Information Services (IIS) vagy a Windows Folyamataktiválási szolgáltatás (WAS) keretében üzemeltetett szolgáltatások alapcímként a virtuális könyvtárat használják.
<protocolMapping>
<add scheme="http" binding="basicHttpBinding" bindingConfiguration="MyBindingConfig"/>
<add scheme="net.tcp" binding="netTcpBinding"/>
<add scheme="net.pipe" binding="netNamedPipeBinding"/>
<add scheme="net.msmq" binding="netMSMQBinding"/>
</protocolMapping>
Az előző példában a "http" sémával kezdődő alapcímmel rendelkező végpont a BasicHttpBinding. A "net.tcp" sémával kezdődő alapcímmel rendelkező végpont a(z) NetTcpBinding-t használja. Felülbírálhatja a beállításokat egy helyi App.config vagy Web.config fájlban.
A <protocolMappings> szakasz minden elemének meg kell adnia egy séma és egy kötés. Esetleg megadhat egy olyan bindingConfiguration attribútumot, amely a <bindings> konfigurációs fájl szakaszában egy kötéskonfigurációt határoz meg. Ha nincs bindingConfiguration megadva, a rendszer a megfelelő kötéstípus névtelen kötéskonfigurációját használja.
A szolgáltatás viselkedése az alapértelmezett végpontokhoz van konfigurálva <serviceBehaviors> szakaszokon belüli névtelen <behavior> szakaszok használatával. A szolgáltatás viselkedésének konfigurálása során minden névtelen <behavior> elem a <serviceBehaviors> elemen belül kerül felhasználásra. Az alábbi konfigurációs fájl például lehetővé teszi a szolgáltatás metaadatainak közzétételét a gazdagépen belüli összes szolgáltatás esetében.
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors> <!-- No <service> tag is necessary. Default endpoints are added to the service -->
<!-- The service behavior with name="" is picked up by the service -->
</system.serviceModel>
A végpont viselkedése névtelen <behavior> szakaszok segítségével <serviceBehaviors> szakaszokon belül van konfigurálva.
Az alábbi példa egy olyan konfigurációs fájl, amely egyenértékű a jelen témakör elején található konfigurációs fájllal, amely az egyszerűsített konfigurációs modellt használja.
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding maxBufferSize="100"
maxReceiveBufferSize="100" />
</basicHttpBinding>
</bindings>
<!-- No <service> tag is necessary. Default endpoints will be added to the service -->
<!-- The service behavior with name="" will be picked up by the service -->
<protocolMapping>
<add scheme="http" binding="basicHttpBinding" />
</protocolMapping>
</system.serviceModel>
Fontos
Ez a funkció csak a WCF szolgáltatáskonfigurációhoz kapcsolódik, nem az ügyfélkonfigurációhoz. A WCF-ügyfélkonfigurációt legtöbbször egy olyan eszköz hozza létre, mint például a svcutil.exe vagy a Visual Studióból származó szolgáltatáshivatkozás hozzáadása. Ha manuálisan konfigurál egy WCF-ügyfelet, hozzá kell adnia egy <ügyfélelemet> a konfigurációhoz, és meg kell adnia a meghívni kívánt végpontokat.