Ich habe einen einfachen WCF-Webdienst geschrieben, der programmatisch konfiguriert ist. Es stellt drei Endpunkte zur Verfügung, die verschiedene Bindungen an denselben Vertrag binden:
Der Konfigurationscode ist im Moment ziemlich einfach:
%Vor%Nun möchte ich diese Konfiguration in eine Konfigurationsdatei exportieren, da ich sie ändern möchte, ohne sie neu kompilieren zu müssen.
Meine Fragen in diesem Moment sind:
OK, also sind die wichtigsten Dinge:
und dann ein paar zusätzliche Sachen geworfen.
1) Adresse:
Holen Sie das von hier:
%Vor%und hier:
%Vor%Sie brauchen also etwas wie:
%Vor%in Ihrem Service.
2) Bindung:
Der erste Endpunkt ist ein webHttpBinding, der zweite verwendet eine benutzerdefinierte Bindung ("MyBinding") - Sie haben also:
%Vor%und Sie müssen Ihre benutzerdefinierte Bindung definieren:
%Vor% oder erstellen Sie einen Abschnitt <extensions>
für Ihre Bindung in Code in einer separaten Assembly gespeichert.
3) Verträge
Ich sehe keinen Vertrag eindeutig irgendwo - Sie verwenden immer nur den Typ (MyService), aber normalerweise ist dies der konkrete Service Instanz , nicht der Service Vertrag was sollte eine Schnittstelle (etwas wie IMyService
) sein. Warum haben Sie keinen ausdrücklichen Servicevertrag?
Wenn Ihre Service-Implementierung gleichzeitig der Vertrag ist (nicht Best Practice, aber möglich), dann haben Sie Ihre zwei Endpunkte wie folgt:
%Vor%Sie müssen dann hier und da ein paar Streusel hinzufügen (definieren Sie die "Basisadresse" des Dienstes, geben Sie dem Dienst einen Namen usw.), und sollte etwa so enden:
%Vor%Jetzt fehlt nur noch das definierte Verhalten - das lasse ich als Übung für das Poster: -)
Hilft das irgendetwas?
Wie für Referenzen - hmmm ..... schwer zu sagen .... Ich denke die üblichen Bücher ("Learning WCF" von MLBustamante für Anfänger / Fortgeschrittene, "Programmierung WCF" von Juval Lowy für Fortgeschrittene / Fortgeschrittene) sind meine beste Wette und viel Erfahrung, wirklich. Ich kenne keine Quelle, die explizit zeigt und lehrt, wie man zwischen Einstellungen in Code und Config umwandelt - die beiden erwähnten Bücher zeigen normalerweise beide Wege, und daraus können Sie selbst herausfinden.
Marc
Das Prolem mit der Konfigurationsdatei konnte nicht korrekt erkannt werden.
musste nur hinzufügen
%Vor%zu meinem Code, ich habe gedacht, dass das ServiceModel den Dienst automatisch startet, da es alle Informationen kennt. Es ist irgendwie komisch, dass Sie Informationen über "MyService" in die Konfigurationsdatei einfügen und anschließend auch im Code angeben müssen.
Die wirkliche Antwort auf mein Problem wurde jedoch von marc_s gegeben, der den gesamten Prozess der Konvertierung von der programmatischen Vorgehensweise in die Konfigurationsdatei sehr gut beschrieben hat.
Tags und Links wcf configuration web-services app-config