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.
A konfigurációs minta egy konfigurációs fájl használatát mutatja be egy szolgáltatás felderíthetővé tétele érdekében.
Szolgáltatáskonfiguráció
A minta konfigurációs fájlja két funkciót mutat be:
A szolgáltatás felderíthetővé tétele egy standard UdpDiscoveryEndpointrendszeren keresztül.
A szolgáltatás alkalmazásvégpontjának felderítéssel kapcsolatos információinak módosítása és a felderítéssel kapcsolatos beállítások egy részének módosítása a standard végponton.
A felderítés engedélyezéséhez néhány módosítást kell végrehajtani a szolgáltatás alkalmazáskonfigurációs fájljában:
A felderítési végpontot hozzá kell adni az
<service>elemhez. Ez egy standard UdpDiscoveryEndpoint végpont. Ez egy rendszervégpont, amelyet a futtatókörnyezet a felderítési szolgáltatáshoz társít. A felderítési szolgáltatás figyeli a végponton lévő üzeneteket.A rendszer hozzáad egy
<serviceDiscovery>viselkedést a<serviceBehaviors>szakaszhoz. Ez lehetővé teszi a szolgáltatás futásidőben történő felderítését, és a korábban említett felderítési végpont használatával figyeli a felderítésiProbeésResolveüzeneteket. Ezzel a két kiegészítéssel a szolgáltatás felderíthető a megadott felderítési végponton.
A következő konfigurációs kódrészlet egy alkalmazásvégponttal és egy felderítési végponttal rendelkező szolgáltatást jelenít meg:
<services>
<service name="Microsoft.Samples.Discovery.CalculatorService"
behaviorConfiguration="calculatorServiceBehavior">
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.Samples.Discovery.ICalculatorService"
behaviorConfiguration="endpointBehaviorConfiguration" />
<endpoint name="udpDiscovery"
kind="udpDiscoveryEndpoint"
endpointConfiguration="adhocDiscoveryEndpointConfiguration"/> </service>
</services>
A bejelentések előnyeinek kihasználásához hozzá kell adnia egy bejelentési végpontot. Ehhez módosítsa a konfigurációs fájlt az alábbi kódban látható módon.
<serviceDiscovery>
<announcementEndpoints>
<endpoint kind="udpAnnouncementEndpoint"/>
</announcementEndpoints>
</serviceDiscovery>
Ha egy bejelentési végpontot hozzáad a felderítési szolgáltatás viselkedéséhez, létrehoz egy alapértelmezett bejelentési ügyfelet a szolgáltatáshoz. Ez garantálja, hogy a szolgáltatás online és offline bejelentést küld a szolgáltatás megnyitásakor és bezárásakor.
Ez a konfigurációs fájl a további viselkedések módosításával túllép ezen egyszerű lépéseken. A felderítéssel kapcsolatos információk meghatározott végpontok használatával szabályozhatók. Vagyis a felhasználó szabályozhatja, hogy felfedezhető-e egy végpont, és a felhasználó megjelölheti a végpontot egyéni XML-metaadatokkal Scopes is. Ehhez a felhasználónak hozzá kell adnia egy tulajdonságot behaviorConfiguration az alkalmazásvégponthoz. Ebben az esetben a következő tulajdonság lesz hozzáadva az alkalmazásvégponthoz.
behaviorConfiguration="endpointBehaviorConfiguration"
Most a viselkedéskonfigurációs elemen keresztül szabályozhatja a felderítéssel kapcsolatos attribútumokat. Ebben az esetben a rendszer két hatókört ad hozzá az alkalmazásvégponthoz.
<endpointBehaviors>
<behavior name="endpointBehaviorConfiguration">
<endpointDiscovery>
<scopes>
<add scope="http://www.example.com/calculator"/>
<add scope="ldap:///ou=engineering,o=examplecom,c=us"/>
</scopes>
</endpointDiscovery>
</behavior>
</endpointBehaviors>
A hatókörökről további információt a Discovery Find és a FindCriteria című témakörben talál.
A felderítési végpont konkrét részleteit is szabályozhatja. Ezt a StandardEndpointsSection-on keresztül hajtják végre. Ebben a mintában a használt protokoll verziója módosul, valamint hozzáad egy maxResponseDelay attribútumot az alábbi kód példájában látható módon.
<standardEndpoints>
<udpDiscoveryEndpoint>
<standardEndpoint name="adhocDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11" maxResponseDelay="00:00:00.600" />
</udpDiscoveryEndpoint>
</standardEndpoints>
A példában használt teljes konfigurációs fájl a következő:
<configuration>
<system.serviceModel>
<services>
<service name="Microsoft.Samples.Discovery.CalculatorService"
behaviorConfiguration="calculatorServiceBehavior">
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.Samples.Discovery.ICalculatorService"
behaviorConfiguration="endpointBehaviorConfiguration" />
<!-- Define the discovery endpoint -->
<endpoint name="udpDiscovery" kind="udpDiscoveryEndpoint" endpointConfiguration="adhocDiscoveryEndpointConfiguration"/> </service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="calculatorServiceBehavior">
<!-- Add an announcement endpoint -->
<serviceDiscovery>
<announcementEndpoints>
<endpoint kind="udpAnnouncementEndpoint"/>
</announcementEndpoints>
</serviceDiscovery>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="endpointBehaviorConfiguration">
<!-- Add scopes used to identify the service -->
<endpointDiscovery>
<scopes>
<add scope="http://www.example.com/calculator"/>
<add scope="ldap:///ou=engineering,o=examplecom,c=us"/>
</scopes>
</endpointDiscovery>
</behavior>
</endpointBehaviors>
</behaviors>
<standardEndpoints>
<udpDiscoveryEndpoint>
<!-- Configure the UDP discovery endpoint -->
<standardEndpoint name="adhocDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11" maxResponseDelay="00:00:00.600" />
</udpDiscoveryEndpoint>
</standardEndpoints>
</system.serviceModel>
</configuration>
Ügyfélkonfiguráció
Az ügyfél alkalmazáskonfigurációs fájljában egy standardEndpoint típusú dynamicEndpoint van használatban a felfedezéshez az alábbi konfigurációs részlet szerint.
<client>
<!-- Create an endpoint, make kind="dynamicEndpoint" and use the endpointConfiguration to change settings of DynamicEndpoint -->
<endpoint name="calculatorEndpoint"
binding="wsHttpBinding"
contract="ICalculatorService"
kind ="dynamicEndpoint"
endpointConfiguration="dynamicEndpointConfiguration">
</endpoint>
</client>
Amikor egy ügyfél használ egy modult dynamicEndpoint, a futtatókörnyezet automatikusan elvégzi a felderítést. A felderítés során különböző beállításokat használnak, például a discoveryClientSettings szakaszban definiált beállításokat, amelyek meghatározzák a használni kívánt felderítési végpont típusát:
<endpoint kind="udpDiscoveryEndpoint" endpointConfiguration="adhocDiscoveryEndpointConfiguration" />
A szolgáltatások kereséséhez használt keresési feltételek:
<!-- Add Scopes, ScopeMatchBy, Extensions and termination criteria in FindCriteria -->
<findCriteria scopeMatchBy="http://schemas.microsoft.com/ws/2008/06/discovery/rfc" duration="00:00:10" maxResults="1">
<scopes>
<add scope="http://www.microsoft.com/building42/floor1"/>
</scopes>
<!-- These extensions are sent from the client to the service as part of the probe message -->
<extensions>
<CustomMetadata>This is custom metadata that is sent to the service along with the client's find request.</CustomMetadata>
</extensions>
</findCriteria>
Ez a minta kibővíti ezt a funkciót, és módosítja az FindCriteria ügyfél által használt elemét, valamint a felderítéshez használt szabvány updDiscoveryEndpoint néhány tulajdonságát. A FindCriteria módosítva van, hogy hatókört és adott scopeMatchBy algoritmust, valamint egyéni megszüntetési feltételeket használjon. A minta emellett azt is bemutatja, hogyan küldhet az ügyfél XML-elemeket üzenetek használatával Probe . Végül néhány módosítás történik a UdpDiscoveryEndpointprotokollon, például a használt protokoll verzióján és az UDP-specifikus beállításokon az alábbi konfigurációs fájlban látható módon.
<udpDiscoveryEndpoint>
<!-- Specify the discovery protocol version and UDP transport settings. -->
<standardEndpoint name="adhocDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11">
<transportSettings duplicateMessageHistoryLength="2048"
maxPendingMessageCount="5"
maxReceivedMessageSize="8192"
maxBufferPoolSize="262144"/>
</standardEndpoint>
</udpDiscoveryEndpoint>
A következő a mintában használt teljes ügyfélkonfiguráció.
<configuration>
<system.serviceModel>
<client>
<!-- Create an endpoint, make kind="dynamicEndpoint" and use the endpointConfiguration to change settings of DynamicEndpoint -->
<endpoint name="calculatorEndpoint"
binding="wsHttpBinding"
contract="ICalculatorService"
kind ="dynamicEndpoint"
endpointConfiguration="dynamicEndpointConfiguration">
</endpoint>
</client>
<standardEndpoints>
<dynamicEndpoint>
<standardEndpoint name="dynamicEndpointConfiguration">
<discoveryClientSettings>
<!-- Controls where the discovery happens. In this case, Probe message is sent over UdpDiscoveryEndpoint. -->
<endpoint kind="udpDiscoveryEndpoint" endpointConfiguration="adhocDiscoveryEndpointConfiguration" />
<!-- Add Scopes, ScopeMatchBy, Extensions and termination criteria in FindCriteria -->
<findCriteria scopeMatchBy="http://schemas.microsoft.com/ws/2008/06/discovery/rfc" duration="00:00:10" maxResults="1">
<scopes>
<add scope="http://www.microsoft.com/building42/floor1"/>
</scopes>
<!-- These extensions are sent from the client to the service as part of the probe message -->
<extensions>
<CustomMetadata>This is custom metadata that is sent to the service along with the client's find request.</CustomMetadata>
</extensions>
</findCriteria>
</discoveryClientSettings>
</standardEndpoint>
</dynamicEndpoint>
<udpDiscoveryEndpoint>
<!-- Specify the discovery protocol version and UDP transport settings. -->
<standardEndpoint name="adhocDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11">
<transportSettings duplicateMessageHistoryLength="2048"
maxPendingMessageCount="5"
maxReceivedMessageSize="8192"
maxBufferPoolSize="262144"/>
</standardEndpoint>
</udpDiscoveryEndpoint>
</standardEndpoints>
</system.serviceModel>
</configuration>
A minta használata
Ez a minta HTTP-végpontokat használ, és a minta futtatásához hozzá kell adni a megfelelő URL-hozzáférés-vezérlési listákat. További információ: HTTP és HTTPS konfigurálása. Ha a következő parancsot emelt szintű jogosultsággal hajtja végre, hozzá kell adnia a megfelelő ACL-eket. Ha a parancs nem működik, érdemes lehet a Domain és a felhasználónév helyett a következő argumentumokat használni.
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%Hozza létre a megoldást.
Futtassa a végrehajtható szolgáltatást a buildkönyvtárból.
Futtassa az ügyfél-végrehajtható fájlt. Vegye figyelembe, hogy az ügyfél képes megtalálni a szolgáltatást.