Kennt jemand ein gutes Beispiel dafür, wie ein WCF-Dienst programmgesteuert ohne Verwendung einer Konfigurationsdatei verfügbar gemacht werden kann? Ich weiß, dass das Serviceobjektmodell jetzt mit WCF viel umfangreicher ist, daher weiß ich, dass es möglich ist. Ich habe nur kein Beispiel dafür gesehen. Umgekehrt würde ich gerne sehen, wie viel Aufwand auch ohne Konfigurationsdatei gemacht wird.
Bevor jemand fragt, muss ich dies ganz speziell ohne Konfigurationsdateien tun. Normalerweise würde ich eine solche Praxis nicht empfehlen, aber wie gesagt, in diesem Fall besteht ein sehr spezifischer Bedarf.
wcf
configuration
configuration-files
Kilhoffer
quelle
quelle
Antworten:
Wie ich festgestellt habe, ist es sehr einfach, einen Webdienst ohne Konfigurationsdatei zu verwenden. Sie müssen lediglich ein Bindungsobjekt und ein Adressobjekt erstellen und diese entweder an den Konstruktor des Client-Proxys oder an eine generische ChannelFactory-Instanz übergeben. Sie können in der Standardeinstellung app.config nachsehen, welche Einstellungen verwendet werden sollen, und dann irgendwo eine statische Hilfsmethode erstellen, die Ihren Proxy instanziiert:
quelle
Security.Mode
standardmäßigNone
.)Wenn Sie daran interessiert sind, die Verwendung des Abschnitts System.ServiceModel in der Datei web.config für IIS-Hosting zu vermeiden, habe ich hier ein Beispiel veröffentlicht ( http://bejabbers2.blogspot.com/2010/02/wcf) -zero-config-in-net-35-part-ii.html ). Ich zeige, wie Sie einen ServiceHost anpassen, um sowohl Metadaten als auch wshttpbinding-Endpunkte zu erstellen. Ich mache es auf eine allgemeine Art und Weise, die keine zusätzliche Codierung erfordert. Für diejenigen, die nicht sofort auf .NET 4.0 aktualisieren, kann dies sehr praktisch sein.
quelle
Hier ist dies vollständiger und funktionierender Code. Ich denke, es wird dir sehr helfen. Ich habe gesucht und nie einen vollständigen Code gefunden, deshalb habe ich versucht, vollständigen und funktionierenden Code einzufügen. Viel Glück.
quelle
Es ist auf dem Server nicht leicht Seite ..
Für die Clientseite können Sie ChannelFactory verwenden
quelle
Alle WCF-Konfigurationen können programmgesteuert durchgeführt werden. So ist es möglich, sowohl Server als auch Clients ohne Konfigurationsdatei zu erstellen.
Ich empfehle das Buch "Programming WCF Services" von Juval Lowy, das viele Beispiele für die programmatische Konfiguration enthält.
quelle
Dies ist sowohl auf Client- als auch auf Serverseite sehr einfach. Juval Lowys Buch enthält hervorragende Beispiele.
In Bezug auf Ihren Kommentar zu den Konfigurationsdateien würde ich sagen, dass die Konfigurationsdateien die zweite sind, die ein armer Mann im Code macht. Konfigurationsdateien eignen sich hervorragend, wenn Sie jeden Client steuern, der eine Verbindung zu Ihrem Server herstellt, und sicherstellen, dass sie aktualisiert werden und dass Benutzer sie nicht finden und nichts ändern können. Ich finde das WCF-Konfigurationsdateimodell einschränkend, leicht schwierig zu entwerfen und ein Wartungsalptraum. Alles in allem war es meiner Meinung nach eine sehr schlechte Entscheidung von MS, die Konfigurationsdateien zur Standardmethode zu machen.
BEARBEITEN: Mit der Konfigurationsdatei können Sie unter anderem keine Dienste mit nicht standardmäßigen Konstruktoren erstellen. Dies führt zu statischen / globalen Variablen und Singletons und anderen Arten von Unsinn in WCF.
quelle
Ich fand den Blog-Beitrag unter dem folgenden Link zu diesem Thema sehr interessant.
Eine Idee, die mir gefällt, ist die, einfach einen Bindungs- oder Verhaltens- oder Adress-XML-Abschnitt aus der Konfiguration an das entsprechende WCF-Objekt übergeben und die Zuweisung der Eigenschaften übernehmen zu lassen - derzeit ist dies nicht möglich.
Wie andere im Web habe ich Probleme damit, dass meine WCF-Implementierung eine andere Konfigurationsdatei als die meiner Hosting-Anwendung (bei der es sich um einen .NET 2.0-Windows-Dienst handelt) verwenden muss.
http://salvoz.com/blog/2007/12/09/programmatic-setting-wcf-configuration/
quelle