1

我有C#/WCF服务。我在为其添加服务引用时遇到 问题,因此我的一位同事建议我只需使用库添加对它的引用。

这里的第二个答案表明,这样做我失去了服务的可重用性。
那是对的吗?这些选项之间还有其他区别吗?

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

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

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

4

4 回答 4

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 - 本地托管服务。有关说明,请参阅http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx ,有关实施,请参阅http://msdn.microsoft.com/en-us/library/ms733069.aspx

于 2013-03-12T09:39:24.673 回答
0

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

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

于 2013-03-12T09:31:03.650 回答
0

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

于 2013-03-12T09:45:56.460 回答
0

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

所以你通常会:

  • 创建客户端应用程序
  • 创建 WCF 服务
  • 将客户端应用程序中的服务引用添加到 WCF 服务

部署:

  • 将您的客户端应用程序部署到每台想要使用它的客户端计算机
  • 将您的 WCF 服务部署到一台或多台服务器计算机
于 2013-03-12T09:51:48.357 回答