“添加引用”和“添加服务引用”之间有什么区别?

时间:2013-03-12 09:22:24

标签: wcf visual-studio service-reference

我有C#/WCF服务。我是having problems添加服务引用,因此我的一位同事建议我只使用库添加对它的引用。

第二个答案here表明,通过这样做,我失去了服务的可用性 那是对的吗?这些选项之间是否还有其他差异?

修改
我没有使用WCF的经验。我正在根据this教程工作,请在您的答案中提供一些解释(或链接)。

编辑2
我想要一个Windows托管的WCF服务,它将在运行我的主应用程序的每台机器上运行。我的应用程序(和另一个)将仅在本地使用此服务 我仍然可以通过“添加参考”实现这一目标吗?

编辑3
我需要一个服务,因为我有两个不同的应用程序正在做同样的事情,他们需要硬件资源。目前,其中一个正在使用另一个dll,因此代码不会被复制和粘贴(至少),但是没有办法阻止对这些资源的并发访问。 Windows服务可以解决这个问题 绑定不是太重要。我会进一步阅读有关命名管道的内容。

4 个答案:

答案 0 :(得分:0)

Add reference是对dll,exe等的添加引用

Add service reference是为某些服务创建代理类

答案 1 :(得分:0)

使用添加服务引用时,Visual Studio使用svcutil.exe创建客户端代理(以及另外的web.config或app.config文件) - 描述服务器端(服务合同)上的方法的特殊类。当您知道此合同并且您有propper配置时 - 您可以从服务器服务远程调用这些方法。

当您使用Add reference时 - 您只需添加一个新库,您可以使用它来处理在那里实现的类,接口和方法。如果您在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

答案 2 :(得分:0)

添加引用用于使用项目中的dll或exe文件,其中添加服务引用用于添加使用服务。添加服务引用将创建代理 在项目中

答案 3 :(得分:0)

您的主应用程序在每台客户端计算机上运行,​​而您的WCF服务在服务器上运行。您没有在每个客户端上运行WCF服务,这是没有意义的。

所以你通常会这样做:

  • 创建客户端应用程序
  • 创建WCF服务
  • 从客户端应用程序向WCF服务添加服务引用

部署:

  • 将您的客户端应用程序部署到每个想要使用它的客户端计算机
  • 将您的WCF服务部署到一台或多台服务器计算机