2013-03-12 139 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