IEndpointBehavior Interface
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Implementeert methoden die kunnen worden gebruikt om runtimegedrag voor een eindpunt in een service of clienttoepassing uit te breiden.
public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
- Afgeleid
Voorbeelden
In het volgende codevoorbeeld ziet u de implementatie van een eindpuntgedrag waarmee een System.ServiceModel.Dispatcher.IDispatchMessageInspector object in een servicetoepassing wordt toegevoegd. In dit geval wordt de EndpointBehaviorMessageInspector klasse geïmplementeerd System.ServiceModel.Dispatcher.IDispatchMessageInspector om het inkomende en uitgaande bericht te inspecteren, de IEndpointBehavior interface om de inspectorklasse in te voegen in het inspectiesysteem voor alle eindpunten waarop het gedrag van toepassing is en het System.ServiceModel.Configuration.BehaviorExtensionElement gedrag van de berichtcontrole in te schakelen met behulp van een toepassingsconfiguratiebestand.
De eerste stap is het implementeren van de berichtcontrole.
// 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.");
}
In het volgende codevoorbeeld ziet u het gebruik van de ApplyDispatchBehavior methode om de berichtcontrole toe te voegen aan de DispatchRuntime.MessageInspectors eigenschap.
// 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;
}
In het volgende codevoorbeeld ziet u de implementatie om System.ServiceModel.Configuration.BehaviorExtensionElement het gebruik van het gedrag van de berichtcontrole vanuit een configuratiebestand in te schakelen.
// BehaviorExtensionElement members
public override Type BehaviorType
{
get { return typeof(EndpointBehaviorMessageInspector); }
}
protected override object CreateBehavior()
{
return new EndpointBehaviorMessageInspector();
}
Ten slotte ziet u in het volgende configuratiebestand hoe het voorgaande voorbeeld kan worden gebruikt vanuit de configuratie.
<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>
Opmerkingen
Implementeer de IEndpointBehavior interface om een bepaald aspect van de uitvoering van eindpunten op toepassingsniveau te wijzigen, te onderzoeken of uit te breiden voor client- of servicetoepassingen.
Gebruik de AddBindingParameters methode om aangepaste gegevens tijdens runtime door te geven om bindingen in te schakelen om aangepast gedrag te ondersteunen.
Gebruik de ApplyClientBehavior methode om extensies te wijzigen, te onderzoeken of in te voegen aan een eindpunt in een clienttoepassing.
Gebruik de ApplyDispatchBehavior methode om extensies te wijzigen, te onderzoeken of in te voegen voor de uitvoering van eindpunten in een servicetoepassing.
Gebruik de Validate methode om te controleren of een ServiceEndpoint voldoet aan specifieke vereisten. Dit kan worden gebruikt om ervoor te zorgen dat een eindpunt een bepaalde configuratie-instelling heeft ingeschakeld, ondersteuning biedt voor een bepaalde functie en andere vereisten.
IEndpointBehavior objecten kunnen gebruikmaken van een van deze methoden, maar vaak is slechts één belangrijk; in dergelijke gevallen kunnen de ongebruikte methoden retourneren en geen actie uitvoeren.
Note
IEndpointBehavior Alle methoden geven een ServiceEndpoint object door als parameter. Deze parameter is alleen bedoeld voor onderzoek; als u het ServiceEndpoint object wijzigt, is het uitvoeringsgedrag niet gedefinieerd.
IEndpointBehaviorobjecten worden doorgaans gebruikt voor toegang tot de verschillende eigenschappen van de System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperationen System.ServiceModel.Dispatcher.EndpointDispatcherSystem.ServiceModel.Dispatcher.ChannelDispatcher objecten in een servicetoepassing en de System.ServiceModel.Dispatcher.ClientRuntime en System.ServiceModel.Dispatcher.ClientOperation in een clienttoepassing. Daarnaast hebt u toegang tot de eigenschappen van duplex-clients en -services met behulp van respectievelijk de ClientRuntime.CallbackDispatchRuntime en DispatchRuntime.CallbackClientRuntime eigenschappen.
Zie Uitbreiden van ServiceHost en de servicemodellaag voor een beschrijving van de verschillende beschikbare eigenschappen en aanpassingen.
Zodra een aanpassing is besloten (en de aanpassingsinterface die indien nodig is geïmplementeerd) en de IEndpointBehavior is besloten, is het juiste aanpassingsbereik, moet de aanpassing worden ingevoegd in de WCF-runtime (Windows Communication Foundation) door IEndpointBehavior te implementeren en het eindpuntgedrag toe te voegen aan de runtime.
Er zijn twee manieren om het gedrag toe te voegen aan de runtime:
Voeg programmatisch het aangepaste eindpuntgedrag toe aan de Behaviors eigenschap vóór het openen van de servicehost (in een servicetoepassing) of de kanaalfactory (in een clienttoepassing).
Configureer het gedrag met behulp van een toepassingsconfiguratiebestand. Zie behaviorExtensions> voor meer informatie<.
Als u de serviceaanpassingstaak wilt uitvoeren waarvoor het is bedoeld, moet het IEndpointBehavior object worden toegevoegd aan de ServiceEndpoint.Behaviors eigenschap vóór de bouw van de serviceruntime, die optreedt wanneer ICommunicationObject.Open de methode wordt aangeroepen System.ServiceModel.ServiceHost. Als u een clientaanpassingstaak wilt uitvoeren, moet het IEndpointBehavior object worden toegevoegd aan de ServiceEndpoint.Behaviors eigenschap voordat u de ChannelFactory<TChannel>.CreateChannel methode of de ICommunicationObject.Open methode aanroept.ChannelFactory<TChannel>
Methoden
| Name | Description |
|---|---|
| AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Implementeer om gegevens tijdens runtime door te geven aan bindingen ter ondersteuning van aangepast gedrag. |
| ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Implementeert een wijziging of uitbreiding van de client in een eindpunt. |
| ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementeert een wijziging of uitbreiding van de service in een eindpunt. |
| Validate(ServiceEndpoint) |
Implementeer om te bevestigen dat het eindpunt voldoet aan een aantal beoogde criteria. |