首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF服务与WCF服务对话

WCF服务与WCF服务对话
EN

Stack Overflow用户
提问于 2013-09-11 21:17:51
回答 2查看 389关注 0票数 0

我有三个项目的解决方案

  1. Winform客户端
  2. 托管在windows服务中的WCF服务
  3. 托管在windows服务中的WCF代理

客户端(项目1)通过服务(第2项)与代理(第3项)交谈--所有这些都使用WCF。客户端(项目1)通过服务(项目2)从SQL数据库获取信息--使用WCF。

所以我就是这样设计的。项目1包含一个WCF客户端,可以通过WCF项目2与第2项对话,而WCF项目2包含一个WCF服务,因此它可以为项目1请求提供服务。它还包含一个WCF客户端(与3对话),第3项包含一个WCF服务,因此它可以为第2项请求提供服务。

我在第1项的项目中添加了对第2项的服务引用,在第2项的项目中添加了对第3项的服务引用。

是否应该这样做,使一切都在一个解决方案中?

因为第2项和第3项是自托管在2个窗口服务中,所以每次我重新编译我的代码时,我必须在Services.MSC中手动停止第2项和第3项服务,编译、启动第1项和第2项服务,最后通过在visual studio中按play来运行Winform客户端。有更好的方法来做这一切吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-11 21:37:26

考虑到您的WCF服务和代理都托管在windows服务中,并且运行在某些计算机上(我想),.You只能为wcf代理和wcf服务使用一个windows服务,您只能启动和停止一个服务。

票数 1
EN

Stack Overflow用户

发布于 2013-09-12 04:02:19

项目2和3( Windows服务)是否从其项目位置(可能是bin\debug文件夹)安装?如果是这样的话,我猜您遇到了一个问题,编译器无法编写.exe文件(因为它正在使用,因为服务正在运行)。

在本例中,我建议从不同的位置安装实际的windows服务(例如,C:\WindowsServices\Service1和C:\WindowsServices\Service2)。这样,只要您不对两个服务的代码进行更改,就可以在运行Windows服务时编译解决方案(其中包括项目1),因为编译器将将.exe文件写入项目bin\debug文件夹,而不是实际运行服务的文件夹。

这将允许您对windows应用程序进行更改、重新编译和测试。

另一种选择是从windows应用程序所在的解决方案中删除(或排除)这两个windows服务。

编辑

如果我理解您的问题,那么当WCF服务处于相同的解决方案中时,您会问引用WCF服务的正确方法是什么?在这种情况下,听起来它的设置是正确的(虽然有点难以分辨)。

基本上,客户端要与WCF服务通信,就需要有对该服务的引用,这样才能生成代理。代理是您实际用于与服务通信的内容。

项目1将有对项目2( WCF服务)的服务引用。

项目2将有一个服务参考项3(另一个WCF服务)。

项目2本身就是WCF服务这一事实并不妨碍它成为另一个不同的WCF服务的客户端。

只要您为WCF服务使用服务引用(与常规程序集引用相反),在我看来,您的设置是正确的。将服务的安装移到不同的位置,您无法重新构建解决方案的问题应该消失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18751446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档