2012-04-09 22 views
0

Wenn mein MVC-Projekt referenziert (reguläre Projektreferenz, nicht Service-Referenz) ein WCF-Service-Projekt, kommuniziere ich nicht über HTTP richtig?Wenn ein Projekt auf demselben Server auf ein WCF-Projekt verweist, um auf seine Methoden zuzugreifen, wird nicht über HTTP gesprochen, oder?

Ich möchte meinen WCF-Service über HTTP über das Internet für mehrere mobile und 3rd-Party-Clients verfügbar machen, aber meine eigene Anwendung möchte ich aufgrund der höheren Leistung ohne HTTP verwenden.

Was mache ich gerade, um das zu erreichen?

Antwort

1

Wenn Sie eine Projektreferenz verwenden (d. H. Sie erscheint unter dem Ordner "Reference" nicht im Ordner "Service Reference"), verwenden Sie nicht HTTP. Sie rufen in diesem Fall direkt eine Assembly/DLL auf. Ich entwickle meine Anwendungen im Allgemeinen so, dass es eine Service Layer (manchmal als die Anwendungsschicht bezeichnet) gibt, die im Grunde die API nachahmt, die der Webdienst präsentiert. Dies ist eine Assembly, auf die direkt verwiesen werden kann, wenn ich diesen Dienst nicht verteilen möchte. Dann ist der eigentliche Web-Service nur eine dünne Schicht über der Service-Schicht, die die WCF-Bindung und die Verträge für verteilte Clients bereitstellt.

+0

Ah das ist sehr schlau Ich mag es sehr. Vielen Dank! Ich dachte über all diese Designs in meinem Kopf nach der besten Lösung nach, aber das klingt sehr logisch und großartig! –

0

Es hängt davon ab, wie Sie es hinzugefügt haben. Wenn Sie dies über "Add Service Reference" getan haben und Ihre app/web.config mit WCF-Client-Einstellungen übersät ist, geht es wahrscheinlich über HTTP. Sie sollten die Transport- und Adresseinstellungen mit Ihrer Konfiguration überprüfen. Wenn Sie HTTP sehen, verwenden Sie HTTP.

Auch wenn Sie zu Named Pipes wechseln, gibt es immer noch einen Overhead. Der schnellste Transport für die lokale Kommunikation ist wahrscheinlich das NullTransport Sample Roman Kiss entwickelt.