使用WCF在公共Internet上自行托管没有IIS的服务

时间:2009-10-23 17:43:52

标签: wcf

请原谅我对WCF的有限知识,但我希望我对这个平台缺乏经验只是意味着我的想法可以实现,而我还没有学会如何去做。

用最简单的术语来说,我想编写两个应用程序,一个作为主服务器(服务)运行,另一个运行客户端。问题是,主服务应用程序需要在任何基本PC上运行 - 主要由家用PC上的人员运行,而无需配置任何托管或Web服务。例如,它需要由一个没有IT知识的人在标准宽带电缆调制解调器连接的住宅上运行Vista Home Basic。第二个问题是每个服务应用程序应该与可能同时暴露于Internet的任何其他服务应用程序分开。可以把它想象成一个聊天室应用程序,其中一个人有能力在他们的家用PC上开始聊天会话。然后,其他人可以从因特网连接到该会话(通过使用由其他方式提供的登录信息 - 即电子邮件,电话,文本等)并且所有人都可以交换消息。只运行客户端的人无法创建聊天会话,只有具有正确的会话ID才能启动客户端。如上所述,如果其他人在其家庭PC上使用不同的会话ID启动相同的服务应用程序,则只有那些寻找该会话的人才能够连接并查看该会话的消息。对于运行服务应用程序的PC如何配置防火墙和可用的Internet端口,有多种可能性,所以我假设需要使用基本的HTTP绑定?

所以,问题是,实现这个的最佳方法是什么......或者,这个想法是否可以实现?在我看来,服务应用程序没有公共可用的地址供客户端找到某种服务器式配置。我深入研究了新的.NET服务服务总线,该服务总线允许服务端点在云上公开(我让它以基本的方式工作),但实际上看起来非常有用简单的应用套件。我查看了自托管配置和PeerChannel类,但我不确定它们能否实现我所追求的目标。

当然,只要有办法将服务公开给互联网,客户端实施应该非常简单。

再次,抱歉缺乏知识。也许(希望?)这是一件容易实现的事情。

谢谢,

Steve E。


感谢您快速回复......

我假设由于软件防火墙,会有一些用户PC端提示。就目前而言,我很好,因为大多数普通用户都习惯看到Windows在应用程序尝试访问互联网时提示他们批准。我希望能够使用单个端点并假设这意味着开放通道的单个端口。这是一个错误的假设吗?每个客户端是否使用不同的端口连接到聊天室中的所有其他客户端,即使它们都是相同的通道?

我希望希望避免的解决方案的一部分是需要提供基于Web的服务来管理聊天室。虽然这是最后的可能性,但我希望能够完全减少服务器设置。

我现在正在更加重视PNRP和PeerChannel技术。这也看起来很有希望,但我还在了解它。你对PNRP和与WCF的直接连接有什么了解吗?

1 个答案:

答案 0 :(得分:1)

它很简单,可以在WCF中完成。您的“客户端”应用程序(位于用户PC上的应用程序)将能够连接或托管聊天室。 WCF可以做到这一点,没有任何重大麻烦...除了应用程序必须能够连接到互联网。通常这意味着用户必须允许应用程序更改防火墙的配置。

为了让用户找到对方,您必须提供一项服务,用户可以在其中广播聊天室并查找其他人创建的房间。这可以通过中央服务器来实现,该中央服务器具有客户端软件已知的地址。

10k英尺的观点:

  1. 用户安装聊天客户端。
  2. 聊天客户端要求提升,用户同意,客户端配置防火墙。
  3. 聊天客户端检查中央服务器的房间。
  4. 用户加入聊天室。
  5. 用户创建一个房间,聊天客户端通知中央服务器新房间。
  6. 其他客户在服务器上找到房间并直接与用户联系。
  7. 用户关闭聊天室,聊天客户端通知中央服务器房间不再可用。
  8. 最难的部分是弄清楚如何处理端口和改变防火墙,而不是每次想要连接到另一个聊天客户端(可能在不同的端口上)时都会窃听用户。