【问题标题】:WCF Self hosting on the client? Good or BadWCF 在客户端自托管?是好是坏
【发布时间】:2009-05-06 09:51:35
【问题描述】:

我想知道是否有人尝试过这种从服务器端向客户端获取事件的技术。我有一个使用基于 Unix 的服务器的环境,因此不能使用 WCF 双工/回调等。

我的客户端是运行厚 .net 应用程序的 windows 盒子的想法将启动 WCF 自主机并在该会话的服务器上注册其自主机 URL。他们将有一个非常简单的合同,当服务器有更新时,服务器会调用客户端服务器,告诉它更新正在服务器上等待它,然后客户端会得到它等等。

我仍在尝试了解 WCF,所以不确定这是否是一个好方法,是否有任何安全隐患我应该担心?有没有办法让 Duplex 调用跨平台工作。

在使用套接字之前我已经做过类似的事情,或者跨平台消息队列可能是一个更好的方法。

谢谢

76梅尔

【问题讨论】:

    标签: wcf


    【解决方案1】:

    至少,这听起来应该可以工作,虽然我猜你也可以托管在 IIS 中,因为 *nix 服务器可以进行网络调用,对吗?我不确定自托管会给你带来什么,虽然它应该可以正常工作,但配置起来可能会有点麻烦,等等。

    每当您做出决定时,请在此处更新,因为这听起来像是一个有趣的挑战,我们中的一些人想看看您是如何做出决定的。

    【讨论】:

    • 是的,我考虑过在 IIS 中间层中加入它,这是一个好主意。不过我的想法是,我们有 10,000 个客户端和 1/3 的并发客户端,因此支持这在 IIS 机器中会花费一些。我将进行概念验证,并将随时通知您,但如果有人对这是否是一件好事有更多的想法、见解和担忧,我将不胜感激,因为启动 TCP 侦听器是常见的做法,为什么不使用 WCF 服务.
    • 好的,我已经尝试过了,一切正常。我认为这对于防火墙内的项目非常有效。如果您想跨越防火墙,我认为使用总线/队列是一种更好的方式,因为您可以在较低级别进行连接。我在这里所做的是有一个 Unix 服务器知道的简单事件契约。我在 Windows 服务中运行 WCF 服务,该服务首先使用其端点向服务器注册自身。然后服务器可以在我的端点触发事件,我可以通过从服务器中提取数据来响应这些事件。
    【解决方案2】:

    我们将自托管 WCF 用于类似的场景。我们还希望避免使我们的客户端应用程序依赖于 IIS,以防止许可和部署麻烦。

    它对我们来说工作得相当好,尽管 WCF 对于您的需要可能有点过头了。由于您使用的是 HTTP,因此您可以直接在 Http.sys 上创建一个简单的 Web 服务。

    【讨论】:

    • http.sys 上的简单 Web 服务会不会比使用 WCF 更易于编写和维护?我对此表示怀疑。
    • 我自己没有尝试在 http.sys 上实现 Web 服务,所以不能肯定。但我使用 WCF 已经有一段时间了,发现它的灵活性远没有我想要的那么大。
    • 还没有。最初的 Microsoft Cassini 样本处于“存档”状态,但一家名为 UltiDev 的公司有一个增强版本:ultidev.com/products/Cassini。 codeplex 上还有 C# webserver 项目:webserver.codeplex.com
    【解决方案3】:

    获得类似结果的另一种方法可能是让客户轮询。这在很大程度上取决于那里的要求。如果您需要近乎实时的更新,这显然行不通,因为您必须进行多次轮询才能做到这一点,但如果可以花一分钟或更长时间来获取客户端的更新,则轮询可能只是答案。

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2018-11-07
      相关资源
      最近更新 更多