IEndpointBehavior Gränssnitt
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Implementerar metoder som kan användas för att utöka körningsbeteendet för en slutpunkt i antingen en tjänst eller ett klientprogram.
public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
- Härledda
Exempel
I följande kodexempel visas implementeringen av ett slutpunktsbeteende som lägger till ett System.ServiceModel.Dispatcher.IDispatchMessageInspector objekt i ett tjänstprogram. I det här fallet EndpointBehaviorMessageInspector implementerar System.ServiceModel.Dispatcher.IDispatchMessageInspector klassen för att inspektera det inkommande och utgående meddelandet, IEndpointBehavior gränssnittet för att infoga inspector-klassen i inspektionssystemet för alla slutpunkter som beteendet gäller för och System.ServiceModel.Configuration.BehaviorExtensionElement för att aktivera beteendet för meddelandekontroll med hjälp av en programkonfigurationsfil.
Det första steget är att implementera meddelandekontrollen.
// 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.");
}
I nästa kodexempel visas hur metoden används ApplyDispatchBehavior för att lägga till meddelandekontrollen i DispatchRuntime.MessageInspectors egenskapen.
// 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;
}
I följande kodexempel visas implementeringen av System.ServiceModel.Configuration.BehaviorExtensionElement för att aktivera användning av beteendet för meddelandekontroll från en konfigurationsfil.
// BehaviorExtensionElement members
public override Type BehaviorType
{
get { return typeof(EndpointBehaviorMessageInspector); }
}
protected override object CreateBehavior()
{
return new EndpointBehaviorMessageInspector();
}
Slutligen visar följande konfigurationsfil hur föregående exempel kan användas från konfigurationen.
<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>
Kommentarer
IEndpointBehavior Implementera gränssnittet för att ändra, undersöka eller utöka någon aspekt av slutpunktsomfattande körning på programnivå för antingen klient- eller tjänstprogram.
AddBindingParameters Använd metoden för att skicka anpassade data vid körning för att aktivera bindningar för att stödja anpassat beteende.
ApplyClientBehavior Använd metoden för att ändra, undersöka eller infoga tillägg till en slutpunkt i ett klientprogram.
ApplyDispatchBehavior Använd metoden för att ändra, undersöka eller infoga tillägg till slutpunktsomfattande körning i ett tjänstprogram.
Validate Använd metoden för att bekräfta att en ServiceEndpoint uppfyller specifika krav. Detta kan användas för att säkerställa att en slutpunkt har en viss konfigurationsinställning aktiverad, stöder en viss funktion och andra krav.
IEndpointBehavior objekt kan använda någon av dessa metoder, men ofta är bara en viktig; I sådana fall kan de oanvända metoderna returnera och inte utföra någon åtgärd.
Note
IEndpointBehavior Alla metoder skickar ett ServiceEndpoint objekt som en parameter. Den här parametern är endast avsedd för undersökning. om du ändrar ServiceEndpoint objektet är körningsbeteendet odefinierat.
IEndpointBehavior objekt används vanligtvis för att komma åt de olika egenskaperna för objekten System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcheroch System.ServiceModel.Dispatcher.ChannelDispatcher i ett tjänstprogram och System.ServiceModel.Dispatcher.ClientRuntime och System.ServiceModel.Dispatcher.ClientOperation i ett klientprogram. Dessutom kan du komma åt egenskaperna för duplex-klienter och -tjänster med hjälp av ClientRuntime.CallbackDispatchRuntime egenskaperna och DispatchRuntime.CallbackClientRuntime .
En beskrivning av de olika egenskaper och anpassningar som är tillgängliga finns i Utöka ServiceHost och Service Model Layer.
När en anpassning har beslutats (och anpassningsgränssnittet implementerats om det behövs) och IEndpointBehavior har beslutats är lämpligt omfång för anpassning, måste anpassningen infogas i Windows Communication Foundation (WCF) körning genom att implementera IEndpointBehavior och lägga till slutpunktsbeteendet i körningen.
Det finns två sätt att lägga till beteendet i körningen:
Lägg programmatiskt till det anpassade slutpunktsbeteendet i Behaviors egenskapen innan tjänstvärden öppnas (i ett tjänstprogram) eller kanalfabriken (i ett klientprogram).
Konfigurera beteendet med hjälp av en programkonfigurationsfil. Mer information finns i <behaviorExtensions>.
För att kunna utföra den tjänstanpassningsuppgift som det är avsett IEndpointBehavior för måste objektet läggas till i ServiceEndpoint.Behaviors egenskapen innan servicekörningen byggs, vilket inträffar när ICommunicationObject.Open metoden anropas på System.ServiceModel.ServiceHost. Om du vill utföra en klientanpassningsaktivitet IEndpointBehavior måste objektet läggas till i ServiceEndpoint.Behaviors egenskapen innan metoden eller metoden anropas ChannelFactory<TChannel>.CreateChannel på ICommunicationObject.OpenChannelFactory<TChannel>.
Metoder
| Name | Description |
|---|---|
| AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Implementera för att skicka data vid körning till bindningar för att stödja anpassat beteende. |
| ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Implementerar en ändring eller ett tillägg av klienten över en slutpunkt. |
| ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementerar en ändring eller ett tillägg av tjänsten över en slutpunkt. |
| Validate(ServiceEndpoint) |
Implementera för att bekräfta att slutpunkten uppfyller vissa avsedda kriterier. |