IEndpointBehavior Interfész
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Olyan módszereket implementál, amelyek segítségével kiterjeszthető a futásidejű viselkedés egy végpont esetében egy szolgáltatásban vagy ügyfélalkalmazásban.
public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
- Származtatott
Példák
Az alábbi példakód egy olyan végponti viselkedés implementálását mutatja be, amely egy objektumot System.ServiceModel.Dispatcher.IDispatchMessageInspector ad hozzá egy szolgáltatásalkalmazáshoz. Ebben az esetben az osztály végrehajtja EndpointBehaviorMessageInspector a System.ServiceModel.Dispatcher.IDispatchMessageInspector bejövő és kimenő üzenet vizsgálatát, a IEndpointBehavior felügyelő osztálynak a felügyeleti rendszerbe való beszúrásának felületét minden olyan végpont esetében, amelyre a viselkedés vonatkozik, valamint az System.ServiceModel.Configuration.BehaviorExtensionElement üzenetfelügyelő viselkedésének engedélyezésére egy alkalmazáskonfigurációs fájl használatával.
Az első lépés az üzenetfelügyelő implementálása.
// IDispatchMessageInspector Members
public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
Console.WriteLine("AfterReceiveRequest called.");
return null;
}
public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
Console.WriteLine("BeforeSendReply called.");
}
A következő példakód az üzenetfelügyelő ApplyDispatchBehavior tulajdonsághoz való hozzáadására szolgáló metódus használatát DispatchRuntime.MessageInspectors mutatja be.
// IEndpointBehavior Members
public void AddBindingParameters(ServiceEndpoint serviceEndpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
return;
}
public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior)
{
behavior.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}
public void ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher)
{
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}
public void Validate(ServiceEndpoint serviceEndpoint)
{
return;
}
Az alábbi példakód az üzenetfelügyelő viselkedésének konfigurációs fájlból való használatának engedélyezéséhez mutatja be a megvalósítást System.ServiceModel.Configuration.BehaviorExtensionElement .
// BehaviorExtensionElement members
public override Type BehaviorType
{
get { return typeof(EndpointBehaviorMessageInspector); }
}
protected override object CreateBehavior()
{
return new EndpointBehaviorMessageInspector();
}
Végül az alábbi konfigurációs fájl bemutatja, hogyan használható az előző példa a konfigurációból.
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.WCF.Documentation.SampleService"
behaviorConfiguration="metadataSupport"
>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/ServiceMetadata" />
</baseAddresses>
</host>
<endpoint
address="/SampleService"
binding="wsHttpBinding"
behaviorConfiguration="withMessageInspector"
contract="Microsoft.WCF.Documentation.ISampleService"
/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="withMessageInspector">
<endpointMessageInspector />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add
name="endpointMessageInspector"
type="Microsoft.WCF.Documentation.EndpointBehaviorMessageInspector, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
/>
</behaviorExtensions>
</extensions>
</system.serviceModel>
</configuration>
Megjegyzések
Implementálja az interfészt az IEndpointBehavior ügyfél- vagy szolgáltatásalkalmazások végpontszintű végrehajtásának egy részének módosításához, vizsgálatához vagy kiterjesztéséhez.
Ezzel a AddBindingParameters módszerrel egyéni adatokat továbbíthat futtatókörnyezetben, hogy lehetővé tegye a kötések használatát az egyéni viselkedés támogatásához.
Ezzel a ApplyClientBehavior módszerrel módosíthatja, megvizsgálhatja vagy beszúrhatja a bővítményeket egy ügyfélalkalmazás végpontjaira.
Ezzel a ApplyDispatchBehavior módszerrel módosíthatja, megvizsgálhatja vagy beszúrhatja a bővítményeket egy szolgáltatásalkalmazás végpontszintű végrehajtásához.
Ezzel a Validate módszerrel ellenőrizheti, hogy egy adott megfelel-e bizonyos ServiceEndpoint követelményeknek. Ez annak biztosítására használható, hogy egy végpont engedélyezve legyen egy bizonyos konfigurációs beállítással, támogatja az adott funkciót és egyéb követelményeket.
IEndpointBehavior az objektumok bármelyik módszert használhatják, de gyakran csak egy fontos; ilyen esetekben a fel nem használt metódusok visszatérhetnek, és nem hajthatnak végre semmilyen műveletet.
Note
IEndpointBehavior Az összes metódus paraméterként ad át egy ServiceEndpoint objektumot. Ez a paraméter csak vizsgálatra vonatkozik; ha módosítja az ServiceEndpoint objektumot, a végrehajtási viselkedés nincs meghatározva.
IEndpointBehavioraz objektumokat általában a szolgáltatásalkalmazások, System.ServiceModel.Dispatcher.DispatchRuntime valamint az System.ServiceModel.Dispatcher.DispatchOperationSystem.ServiceModel.Dispatcher.EndpointDispatcherSystem.ServiceModel.Dispatcher.ChannelDispatcherügyfélalkalmazások System.ServiceModel.Dispatcher.ClientRuntimeSystem.ServiceModel.Dispatcher.ClientOperation különböző tulajdonságainak eléréséhez használják. Emellett a kétoldalas ügyfelek és szolgáltatások tulajdonságait is elérheti a ClientRuntime.CallbackDispatchRuntimeDispatchRuntime.CallbackClientRuntime tulajdonságok használatával.
A különböző elérhető tulajdonságok és testreszabások leírását a ServiceHost kiterjesztése és a szolgáltatásmodell-réteg ismerteti.
Miután eldöntött egy testreszabást (és szükség esetén implementálta a testreszabási felületet), és a IEndpointBehavior a testreszabás megfelelő hatóköre, a testreszabást be kell szúrni a Windows kommunikációs alaprendszer (WCF) futtatókörnyezetbe a IEndpointBehavior implementálásával és a végpont viselkedésének a futtatókörnyezethez való hozzáadásával.
A viselkedést kétféleképpen lehet hozzáadni a futtatókörnyezethez:
Programozott módon adja hozzá az egyéni végpont viselkedését a tulajdonsághoz a Behaviors szolgáltatásgazda (szolgáltatásalkalmazásban) vagy a channel factory (ügyfélalkalmazásban) megnyitása előtt.
Konfigurálja a viselkedést egy alkalmazáskonfigurációs fájl használatával. További részletekért lásd: <behaviorExtensions>.
Annak a szolgáltatás-testreszabási feladatnak a végrehajtásához, amelyre a szolgáltatást szánják, az IEndpointBehavior objektumot hozzá kell adni a tulajdonsághoz ServiceEndpoint.Behaviors a szolgáltatás futtatókörnyezetének létrehozása előtt, amely akkor fordul elő, amikor ICommunicationObject.Open a metódus be System.ServiceModel.ServiceHostvan kapcsolva. Ügyfél-testreszabási feladat végrehajtásához az IEndpointBehavior objektumot hozzá kell adni a tulajdonsághoz, ServiceEndpoint.Behaviors mielőtt meghívja a ChannelFactory<TChannel>.CreateChannel metódust vagy a metódust ICommunicationObject.OpenChannelFactory<TChannel>.
Metódusok
| Name | Description |
|---|---|
| AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Implementálás az adatok futásidőben történő továbbításához kötésekhez az egyéni viselkedés támogatása érdekében. |
| ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Implementálja az ügyfél módosítását vagy kiterjesztését egy végponton keresztül. |
| ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementálja a szolgáltatás módosítását vagy kiterjesztését egy végponton keresztül. |
| Validate(ServiceEndpoint) |
Implementálás annak ellenőrzéséhez, hogy a végpont megfelel-e a kívánt feltételeknek. |