Verwenden eines Dienstverhaltens zum Eingeben von Anmeldeinformationen mit dem WCF LOB Adapter SDK
Häufig müssen Adapterverbraucher Anmeldeinformationen an das Zielunternehmenssystem übergeben. Um diese Funktionalität bereitzustellen, müssen Sie ein WCF-Dienstverhalten angeben.
Der folgende Beispielcode veranschaulicht, wie ein Dienstverhalten abgeleitet wird. Die vom Consumer des Adapters abgerufenen Anmeldeinformationen werden an den Adapter delegiert. Der Adapter muss dann Branchenprotokolle verwenden, um die Anmeldeinformationen zu authentifizieren. Nachdem die Anmeldeinformationen authentifiziert wurden, kann der Dienst damit beginnen, auf eingehende Ereignisse aus der Branchenanwendung zu lauschen.
/// <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);
}
}
Der folgende Beispielcode zeigt, wie Sie das Dienstverhalten verwenden, um Anmeldeinformationen an den Adapter zu übergeben.
// 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();
Weitere Informationen
Bewährte Methoden für die Entwicklung mithilfe des WCF LOB Adapter SDK