Ich muss einen WCF-Server (im Grunde ein Webdienst, der eventuell in IIS ausgeführt wird) und eine Clientanwendung entwickeln, die auf den Dienst zugreift. Ich habe sowohl den Client als auch den Server in der gleichen Visual Studio (2008) -Lösung.
Was ist die empfohlene Methode, um den Client während der Entwicklung mit dem Server zu verbinden?
Zwei mögliche Lösungen kommen mir sofort in den Sinn: Erstens muss das Serverprojekt nach jeder Änderung auf einigen IIS bereitgestellt werden, und zweitens müssen zwei Instanzen von Visual Studio gestartet und ein fester TCP-Port für das Visual Studio verwendet werden -integrierten) Webserver des Serverprojekts.
Da keine dieser Optionen mir besonders elegant erscheint, habe ich mich gefragt, ob ich vielleicht den offensichtlichen "richtigen Weg" übersehen habe ...
So wie ich es mache:
- Klicken Sie mit der rechten Maustaste auf Ihre Lösungsdatei, und wählen Sie Startprojekte festlegen ...
- Wählen Sie Mehrere Startprojekte und wählen Sie Start für Ihr Client- und Serverprojekt, lassen Sie die anderen auf none gesetzt.
Jetzt werden beide Projekte beim Start ausgeführt und Sie können beide debuggen.
Da viele WCF-Dienste von meinem Projekt verwendet werden und ich nicht zu viele Instanzen von VS zum Debuggen ausführen möchte, mache ich Folgendes: -
Wenn Sie mit einem lokalen IIS arbeiten, können Sie dies berücksichtigen.
Für jeden WCF-Dienst habe ich ein Website-Projekt erstellt.
Diese Website-Projekte werden auch als Webordner im lokalen IIS freigegeben. zB http: \ mylocalmachine \ WCFService1 \ servicedatei.svc
In meinen WCF-Clients web.config wird die URL für den Dienst wie oben angegeben angegeben. zB (http: \ mylocalmachine \ WCFService1 \ servicedatei.svc)
Da ich nicht jedes Mal, wenn ich den Service ändere, manuell bereitstellen möchte, habe ich im Post-Build jedes WCF-Service-Projekts eine postbuild-Aufgabe, die den Inhalt des bin-Verzeichnisses in das bin-Verzeichnis der Website kopiert für diesen entsprechenden WCF-Dienst (einmalige Einrichtung für den Postbuild)
Meine Ordnerstruktur ist so, dass es für jedes Service-Projekt ein Service-Host (Website) -Projekt auf derselben Ebene gibt, so dass auch das Postbuild sehr einfach ist.
Wenn ich meinen WCF-Client (F5) ausführe, werden die Service-Projekte kompiliert, ihre Inhalte werden auf die Websites bin kopiert (dh automatisch in IIS implementiert) und ich kann jeden Dienst debuggen, indem ich einfach in den Code gehe Meine Dienste sind in der gleichen Lösung wie mein WCF-Client
Ein zusätzlicher Vorteil dieses Ansatzes ist, dass mein Debugging (zumindest bei den Diensten) auch IIS verwendet, ähnlich wie meine Produktionseinstellungen aussehen.
Bearbeiten: Ich stelle die Service-Host-Projekte (Websites) nicht in meine Lösung, da sonst bei der Ausführung meines WCF-Clients VS eine cassini-Instanz für jeden von ihnen öffnet, was irritierend ist und ich sowieso nicht brauche oder
Tags und Links wcf .net visual-studio debugging web-services