2013-03-12 141 views
1

我有一個C#/WCF服務。我是havingproblems添加了一個服務引用,所以我的一位同事建議我簡單地使用一個庫添加一個引用。「添加引用」和「添加服務引用」有什麼區別?

第二個答案here表明這樣做我失去了服務的可用性。
這是正確的嗎?這些選擇之間還有其他區別嗎?

編輯
我沒有WCF的經驗。我正在按照this教程進行工作,請在答案中提供一些解釋(或指向他們的鏈接)。

編輯2
我想這將是我的運行主應用程序的每臺計算機上運行Windows的託管WCF服務。我的應用程序(和另一個)將僅在本地使用此服務。
我還可以通過「添加參考」來實現嗎?

編輯3
我需要一個服務,因爲我有在做同樣的事情,兩個不同的應用程序,他們需要爲硬件資源。目前,其中一個使用另一個的dll,因此不會複製和粘貼代碼(至少),但無法阻止對這些資源的併發訪問。 Windows服務可以解決這個問題。
綁定不是太重要。我會進一步閱讀有關命名管道。

回答

0

Add reference是添加引用的DLL,EXE等

Add service reference是創建代理類以一些服務

+0

我明白,但我仍然可以訪問我的服務通過它的接口,如果他們」重新定義在一個單獨的DLL中,我不能嗎? – Noich 2013-03-12 09:32:15

+0

可能是訪問修飾符? – 2013-03-12 09:33:38

+0

我不確定你的意思,請參閱編輯,謝謝。 – Noich 2013-03-12 09:45:22

0

當您使用添加服務引用時,Visual Studio使用svcutil.exe的,以創造客戶代理(和另外web.config或app.config文件) - 特殊類,描述服務器端的方法(服務契約)。當你知道這個合約並且你有配置時 - 你可以從服務器服務遠程調用這些方法。

當您使用添加引用時 - 您只需添加一個新庫,您可以使用它來處理在那裏實現的類,接口和方法。如果你在dll中有一個服務契約類,你可以使用它,而不是用svcutil.exe創建它。但你必須配置它的設置(綁定和地址)

編輯1有很多創建WFC服務的例子。見http://www.codeproject.com/Articles/42643/Creating-and-Consuming-Your-First-WCF-Servicehttp://www.codeproject.com/Articles/412363/How-to-Use-a-WCF-Service-without-Adding-a-Service。和你想要的解釋?你只需要讓合同(你有方法的類),將其鏈接到您的客戶端和服務器應用程序,並確定適當的結合,其中介紹瞭如何你給他們之間的合同數據

編輯2這是很難說的,不知道您的應用程序的目標,您必須使用什麼。因此,是的,您可以使用本地Windows服務在那裏託管wcf服務。存在一種特殊類型的WCF服務,稱爲NamedPipe - localy託管服務。請參閱http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx的描述和http://msdn.microsoft.com/en-us/library/ms733069.aspx的實現

+0

請看編輯,我希望我現在更好地解釋自己。 – Noich 2013-03-12 09:45:03

+0

@Noich我更新我的回答 – Alex 2013-03-12 10:13:33

0

添加引用用於消耗項目中的dll或exe文件,其中添加服務引用用於添加使用服務。添加服務引用將在項目

0

每一個客戶機上您的主要應用程序運行創建代理 ,而你的WCF服務的服務器上運行。您不會在每個客戶端上運行WCF服務,這是沒有道理的。

所以你通常會:

  • 創建客戶端應用程序
  • 創建一個WCF服務
  • 從客戶端應用程序添加到您的WCF服務

部署服務引用:

  • deplo Y在您的客戶端應用程序想要使用它
  • 部署WCF服務的一個或多個服務器機器每臺客戶端計算機
+0

爲什麼它沒有SENCE。那麼NamedPipe綁定呢? http://stackoverflow.com/questions/7353670/wcf-named-pipe-minimal-example – Alex 2013-03-12 10:07:34

+0

你在哪裏看到的是TS需要命名管道? – 2013-03-12 10:17:37

+0

「我希望有一個Windows的託管WCF服務將運行我的主要應用我的應用程序(另有一)每一臺機器上運行將只在本地使用這項服務。」 - 沒有它適合用於了NamedPipes? – Alex 2013-03-12 10:23:30