2012-07-19 79 views
1

我有一个作为Windows服务运行的wcf自托管服务,为本地网络中的多个win/web客户端提供服务。服务本身有多个合同(tcp &命名管道),其中一个应该通过IIS(任何形式的http绑定)提供,因此可以从外部访问它,就像访问www.mypublicdomain.com/public-contract一样。 SVC通过IIS进行Wcf服务访问和路由

当前拓扑:

  • Server应用程序 - WCF Windows服务
  • 客户APP1 - 通过TCP/IP与服务器应用
  • 客户端APP 2 - - 赢窗体应用程序的MVC Web应用程序(可在内部并通过互联网,但通过公共领域) - 通过命名管道(同马赫ine)
    • 这个应用程序托管在iis7上,新的公共wcf合同应该公开为此的一部分。
  • 共享组件 - 包含接口(服务合同)

的问题是 - 什么是暴露在通过IIS的Windows服务合同的最佳途径之一,因此,所有的请求到公开可用的服务进行将直接路由到后端Windows服务。

我的第一个问题是stackoverflow,如果有什么不清楚的地方,我会尝试进一步解释它。 谢谢。

回答

1

如果您使用的是IIS 7,那么您可以在IIS中托管wcf服务,并使用HTTP绑定公开一个服务合同,并将另一个非公开服务合同作为TCP-IP公开。

如果您必须将服务器应用程序作为Windows服务托管,请创建一个新的IIS托管服务,该服务具有与您希望公开的服务契约相同的接口,但只需传递这些呼叫。

+0

有一个计划,将服务应用程序和网络应用程序分离到将来(近)不同的机器,让服务在没有iis的情况下单独运行。这种方法到那时才奏效,但从一开始就认定最终的解决方案是完美的。 – Jeti 2012-07-19 14:24:28

+0

这就是为什么我提供了选项2 :) – BonyT 2012-07-19 14:26:41

+0

你刚刚添加了第二段,我认为这是我以后的事情。你能详细解释一下“通过”部分吗?我希望避免编写实现所有方法来调用“真实”服务。有没有办法自动通过? – Jeti 2012-07-19 14:26:56