Usar un comportamiento de servicio para escribir credenciales con el SDK del adaptador de LOB de WCF
Muchas veces, los consumidores de adaptadores tendrán que pasar credenciales al sistema de línea de negocio de destino. Para proporcionar esta funcionalidad, deberá proporcionar un comportamiento de servicio WCF.
En el código de ejemplo siguiente se muestra cómo derivar un comportamiento de servicio. Delega las credenciales obtenidas del consumidor del adaptador al adaptador. A continuación, el adaptador debe usar protocolos de línea de negocio para autenticar las credenciales. Una vez autenticadas las credenciales, el servicio puede empezar a escuchar eventos entrantes desde la aplicación de línea de negocio.
/// <summary>
/// This class derives from a WCF service behavior. It is used in the inbound scenario
/// for the Inbound Service to pass the line-of-business credentials to the adapter using
/// WCF ClientCredentials class.
/// </summary>
public class InboundClientCredentialsServiceBehavior : ClientCredentials, IServiceBehavior
{
public InboundClientCredentialsServiceBehavior() { }
public InboundClientCredentialsServiceBehavior(InboundClientCredentialsServiceBehavior other)
: base(other)
{
}
#region IServiceBehavior Members
public void AddBindingParameters(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase, System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
bindingParameters.Add(this);
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
}
public void Validate(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
}
#endregion
protected override ClientCredentials CloneCore()
{
return new InboundClientCredentialsServiceBehavior(this);
}
}
En el código de ejemplo siguiente se muestra cómo usar el comportamiento del servicio para pasar credenciales al adaptador.
// Create a ServiceHost for the EchoServiceImpl type
// and use the base address from app.config
ServiceHost host = new ServiceHost(typeof(EchoServiceImpl));
// Set service behavior to pass the line-of-business credentials.
InboundClientCredentialsServiceBehavior credentialsBehavior = new InboundClientCredentialsServiceBehavior();
credentialsBehavior.UserName.UserName = "username";
credentialsBehavior.UserName.Password = "****";
host.Description.Behaviors.Add(credentialsBehavior);
// Open the ServiceHost to start listening for messages
host.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
// Close the ServiceHost
host.Close();
Consulte también
Procedimientos recomendados de desarrollo mediante el SDK del adaptador de LOB de WCF