"Verwendung" von zwei verschiedenen Bibliotheken mit fast identischen Funktionen

8

Ich verwende einen SOAP-Webdienst. Der Webservice bezeichnet für jeden Kunden eine separate Service-URL. Ich weiß nicht, warum sie das tun. Alle ihre Funktionen und Parameter sind technisch identisch. Aber wenn ich ein Programm für den Dienst schreiben möchte, muss ich für jedes Unternehmen wissen, dass es beabsichtigt ist. Das bedeutet, dass ich für eine Firma namens "apple" folgende using-Anweisung verwenden muss:

%Vor%

und für die anderen "orange"

genannt %Vor%

Aber ich möchte gerne mein Programm für alle arbeiten und habe den Namen der Firma oder des Service-Referenzpunktes als Parameter.

Update : Wenn ich für jeden Kunden eine separate Anwendung schreiben muss, müsste ich alle mit jeder kleinen Änderung auf den neuesten Stand bringen, und das wäre ein ineffizienter Job wie die Anzahl der Kunden steigt.

Kann jemand an eine Lösung denken? Ich werde dankbar sein.

    
Disasterkid 06.05.2013, 07:16
quelle

3 Antworten

3

Wenn Sie einen Basisvertrag (Schnittstelle) für alle Ihre Dienste haben, können Sie eine Art factory um Ihren konkreten Service zu instanziieren und nur einen Verweis auf Ihre Schnittstelle in Ihrem Client-Code (Aufrufcode) zu haben.

%Vor%

Zum Beispiel eine Art von Factory-Klasse (Sie können Ihre using -Anweisungen hier einfügen)

%Vor%

Und in Ihrem aufrufenden Code (fügen Sie einfach eine using -Anweisung für den Namespace hinzu, der Ihre Schnittstelle enthält):

%Vor%

Sie können auch das Prinzip Dependency Injection verwenden.

    
polkduran 06.05.2013, 10:02
quelle
0

Wenn alles gleich ist und nur die Endpunktadresse unterschiedlich ist, können Sie möglicherweise versuchen, nur das zu ändern, bevor Sie die Web-Service-Methoden aufrufen.

%Vor%     
Ranhiru Cooray 06.05.2013 07:57
quelle
0
  1. Verwenden Sie einen beliebigen Client in Ihrer Implementierung. Ex. Apple
  2. Schreiben Sie einen Nachrichteninspektor und hängen Sie ihn an den ausgehenden Punkt an
  3. Ersetzen Sie im Nachrichteninspektor den Namensbereich des Typs durch den entsprechenden Clientnamenraum. EX: Vor dem Nachrichteninspektor: MyClinet.Apple.Type
    Nach Message Inspector: MyClient.Orange.Type, wenn der Provider Orange ist.
Senthil Kumar NH 06.05.2013 09:33
quelle

Tags und Links