2009-12-07 20 views
0

我想暴露我的服務層(目前寫作標準類庫與POCOs)爲外部以及內部消耗。外部客戶端將通過REST風格API使用它,而在內部,我的MVC應用程序將通過net.tcp綁定使用它,以獲得更好的性能。WCF - 在一個服務庫上使用多個綁定(包括REST(WebHttpBinding))?

我該如何優雅地做這件事?我可以使用VS2010 Beta 2 REST功能和其他使用標準WCF綁定的REST爲REST編寫2個包裝器。

我可以在一個包裝中做到這一點?或更好的只是我的重構現有的服務,WCF和暴露在使用不同的綁定喜歡的WebHttpBinding,WsHttpBinding的等各個端點

問候,

阿賈伊

回答

1

你的服務庫只包含服務的實現 - 你的服務(和數據)合同應該在他們自己單獨的「合同」程序集中。

託管和使用什麼協議的問題由您的服務處理主機 - 這可以是IIS或單獨的NT服務或控制檯應用程序或其他東西。這是完全獨立於您的服務類和您的服務庫。

所以是的 - 您可以輕鬆創建服務庫,然後通過服務主機中的多個端點來公開該服務 - 這兩件事應該完全分開。

+0

「這完全與您的服務類別和服務庫無關。」在實踐中,這不一定是整個故事。例如。如果你想通過兩個不同的SVC文件公開一個服務。這將需要您提供專用的實現,即使這些實現只是從共享實現派生的實現。沒有它,沒有辦法引用一個服務配置。你會同意嗎? – Alex 2009-12-07 22:07:44

+0

@亞歷克斯:同意了,但對我來說,這看起來有點像一個邊緣案例。爲什麼你會想要通過兩個獨立的* .svc文件公開相同的服務?另外:生產中的任何東西,我都會自行託管.... – 2009-12-08 05:39:49

+0

我需要在由各種不同技術堆棧(PHP,Java,.NET)實現的客戶端使用的幾個IIS託管服務中使用此功能。 – Alex 2009-12-08 23:42:39

0

當然,你可以只需添加更多的人來配置文件或使用代碼。

0

VS 2010 Beta 2的REST功能本身是建立在WCF之上的,所以如果你想使用它們,你必須將你的服務重構爲WCF服務。就在那時,正如Dani和marc_s所說,通過配置文件,您可以非常輕鬆地將其他終端添加到服務中。