Work in Progress
Diese Seite ist aktuell im Review! Die Seite wurde noch nicht qualitätsgesichert und kann Fehler enthalten.
Die verlinkten Seiten sind ggf. nur für Schleupen-Mitarbeiter sichtbar.

Kommunikation mit CS 2.0-WCF-Diensten

Dieses Muster beschreibt, wie ein CS 2.0-Webservice aufgerufen werden kann.

Design

Der Aufruf eines synchronen Service erfolgt wie folgt: Generiert wird ein ServiceClient und alle Datenverträge durch Hinzufügen eines "Dienstverweises" mit dem Visual Studio. Unter Zuhilfenahme der Endpunktverwaltung wird der Host ermittelt, auf dem CS 2.0 gehostet ist.

Implementierung

  1. Zunächst muss die WSDL von einem Schleupen.CS 3.0-System heruntergeladen werden: Hierzu im IIS der Service auswählen und die vollständige URL bestimmen: http://localhost/Schleupen/CS.VA/Vertrag/VertragService.svc

    Dann diese per Browser aufrufen und die WSDL herunterladen:
  2. Diese WSDL nun in der Solution im Projekt "Gateways.Contracts" ablegen.
  3. Sigento.Pure als benutzerdefiniertes Tool der WSDL anschließen:
  4.  Implementierung einer ServiceClientFactory:
    public interface IVAVertragServiceClientFactory
    {
        IVAVertragServiceClient CreateClient();
    }
    public class VAVertragServiceClientFactory : IVAVertragServiceClientFactory
    {
        private readonly IBrokerClientConfiguration brokerClientConfiguration;
        private readonly IResolveEndpointActivityServiceGateway resolveEndpointActivityServiceGateway;
    
        public VAVertragServiceClientFactory(
            IBrokerClientConfiguration brokerClientConfiguration, 
            IResolveEndpointActivityServiceGateway resolveEndpointActivityServiceGateway)
        {
            this.brokerClientConfiguration = brokerClientConfiguration
                ?? throw new ArgumentNullException(nameof(brokerClientConfiguration));
            this.resolveEndpointActivityServiceGateway = resolveEndpointActivityServiceGateway 
                ?? throw new ArgumentNullException(nameof(resolveEndpointActivityServiceGateway));
        }
    
        public IVAVertragServiceClient CreateClient()
        {
            EndpointAddress applikationServerAdresse = 
                resolveEndpointActivityServiceGateway.ErmittleApplikationsserverAdresse();
            string uri = $"{applikationServerAdresse}/CS.VA/Vertrag/VertragService.svc";
            
            return new VAVertragServiceClient(
                brokerClientConfiguration.GetBinding(Uri.UriSchemeHttp),
                new EndpointAddress(uri));
        }
    }
    

    Das IResolveEndpointActivityServiceGateway wird wie gewohnt implementiert, siehe Gateway zu entfernten Objekten.

  5.  Aufruf im Gateway:
    string sessionXml = legacySessionXmlFactory.CreateSessionXml(sessionTokenProvider.Token);
    
    QueryVertragResponse response;
    using IVAVertragServiceClient client = clientFactory.CreateClient();
    QueryVertragRequest request = ...
        request.SessionXml = sessionXml;
    response = client.QueryVertrag(request);
Cookie Consent mit Real Cookie Banner