Webservices dynamisch einbinden

dila71

Mitglied
Hallo,
in meiner Anwendung habe ich eine Stelle an der ich je nach Anwendungsfall unterschiedliche Webservices einbinden muss. Von dieses ist mir die URL und die aufzurufende Methode bekannt.

Wie ich einen Webservice mit einer vorher erzeugten Referenz einbinde weiss ich. Leider google ich mich dumm und dämlich nach einer Möglichkeit den Proxy dynamisch einzubinden oder den Service über einen HTTP-Request mit Parameterübergabe anzusprechen (sicher habe ich nur die falschen Suchbegriffe gewählt aber das Ergebnis ist das Selbe).

Ich verwende c# und VS 2003.

Kann mich da jemand (evtl. mit einem Beispiel) auf den richtigen Weg schubsen?



Danke
Dirk
 
Hi,

warst schon im richtigen Forum, daher hab ich es wieder zurück verschoben.

Du möchtest also auf unterschiedliche WebServices zugreifen, die jedoch zu Beginn schon bekannt sind, richtig?

Nun, du hast ja die Möglichkeit, über die Webressources WebServices einzubinden. Einfach alle die du benötigst einbinden, entsprechende Namen geben und je nach Zustand deiner Software auf das entsprechende Webservice zugreifen. Think easy ;-)
 
Hallo,
zuerst mal vielen Dank für die Antwort. Hier eine ausführlichere Beschreibung.

Es geht bei dem Projekt um ein "single sign on". Ein Partner auf dessen Seite ein Nutzer eingeloggt ist, ruft meine Seite mit einem url-Parameter "ticketnummer" und seiner Kennung auf. Nun muss ich das Ticket validieren.
Die Webservices und die Methoden sind bei allen Partnern gleich. Der Url dahin aber variirt. Anhand der Kennung bekomme ich aus meiner Datenbank den Url wo der Service liegt.

die Partner haben einen Zugang zur DB, so dass sie per Webinterface den URL jederzeit ändern können, solange der Servicenamen und die Methodennamen gleich bleiben.

Somit ist ein "festes" einbinden von mehreren Webreferenzen schlecht möglich.
 
Wenn wirklich alle WebServices gleich sind, dann könntest du einen Ansatz verfolgen. Eventuell führt er dich zum Ziel:

Erstelle eine Web-Referenz, also ein WebService in dein Projekt einbinden. Wenn fertig, stellst du die Eigenschaft "URL Behavior" des eingebundenen WebServices von Static auf Dynamic.

Was bewirkt diese Umstellung? Die URL wird in der app.config der Anwendung abgelegt. Diese kann daher dynamisch geändert werden. Eventuell kannst du dich da zwischen rein hängen, aber wird wohl eher schwieriger werden ausser du änderst die Url und instanzierst dann das Service neu.

Weiterführende Informationen findest du unter http://msdn.microsoft.com/library/d...vbcon/html/vbtskgeneratingwebserviceproxy.asp
 
Nochmal Danke für Deine Hilfe.
Das dynamische Einbinden, wie Du es beschrieben hast, hatte ich auch schon entdeckt. Das Problem ist, dass diese Vorgehensweise an die Wwb.config bindet. Ändert ein Partner seinen Url in der Datenbank, so bekommt ja aber meine web.config keine Event zum neu Auslesen.

Aus diesem Grund habe ich es so gemacht, dass ich alle Webservices angelegt habe.
Zu jedem Partner gibt es eine Klasse PartnerTicket. Diese leiten von eine abstrakten Klasse Ticket ab. Ticket hat eine statische Create Methode, welcher die erwähnte Kennung aus dem Url übergeben wird und welche mir die konkrete instanz einer Unterklasse liefert.

Nicht die Lösung, die ich wollte aber einigermassen sauber würde ich sagen.

Tschau
Dirk
 
Zurück