簡體   English   中英

將WCF服務引用添加到多個項目

[英]Adding WCF Service References to multiple projects

幾個非常基本的問題。 我是WCF的新手,我正在構建一個應用程序,它有一個服務項目,一個Web應用程序項目和一些我用於業務邏輯的類庫項目等。

我在我的IIS上本地托管WCF並嘗試向項目添加服務引用。

問題1.在添加引用時,是否應該單獨為每個項目添加服務引用,還是可以在項目中共享相同的Service引用?

我問的原因是因為如果我添加單獨的引用,每個引用都會獲得它自己的命名空間,當我必須在項目之間傳遞相同的對象時,我得到一個InvalidCastException,因為每個ServiceClient都有一個不同的命名空間。

示例 - Site.Business.XDataService.XDataServiceClient()。GetItem()與Site.Web.XDataService.XDataServiceClient()不同.GetItem()

問題2.我在實現Service接口的類中指定了本地服務的地址,如下所示 -

[ServiceBehavior(Namespace =“http:// localhost:801 / XDataService.svc”,IncludeExceptionDetailInFaults = true)]

這似乎不對。 如果我將我的代碼移動到另一個/ live環境,我顯然必須再次更改此部分並重新編譯。 我在哪里可以指定(Web.Config?),以便我可以更改此地址而無需重建我的應用程序?

欣賞任何形式的洞察力。 謝謝!

在回答第一個問題時,您可以將服務引用放在自己的項目中,並在需要訪問該服務的所有其他項目中引用該項目。

基本上所有的服務引用都是一堆.NET代碼 - 命名空間,類等。

更好的是(!)對於WCF服務,您還可以免費獲得一個接口(或多或少是您為服務定義的相同接口),因此您可以在依賴注入方面做得很好,使測試等更容易。

第一個問題 - 服務就像任何其他代碼一樣。 例如,數據庫訪問代碼。 你應該把它放在需要訪問你的數據庫的每個項目中嗎? 不 - 你應該把它放在其他項目可以參考的項目中。

至於你的第二個問題,你正在指定命名空間,但我希望你認為你正在指定一個服務端點地址。 命名空間就像一個C#代碼命名空間 - 如果你有多個具有相同名稱的對象,它實質上提供了進一步的識別和清晰度。 通常,您使用的命名空間如http://mywebsite.com/MyService/VersionNumberIfRequired或類似名稱。

地址本身在配置中指定。 地址將根據環境/部署位置而改變 - 命名空間不應該。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM