【问题标题】:Communicating between SERVICE and web/desktop application在 SERVICE 和 Web/桌面应用程序之间进行通信
【发布时间】:2011-09-24 00:29:56
【问题描述】:

在服务与桌面应用程序或网页之间进行通信的推荐方式是什么?

我希望该服务完成所有工作,但可以通过以下方式进行管理/管理/报告 网页或桌面。 (它将使用 .Net 4.0 用 C# 编写)

它是命名管道吗?插座?卫浴?休息 ?肥皂 ?其他 ?什么是最佳做法?

任何信息将不胜感激。

服务需要有效地实时,因此任何通信都需要异步。

谢谢 安德鲁

更新 1 - 服务实时监控网络流量作为服务。客户端可以是本地的,也可以是远程的(使用 ASP.NET/MVC 甚至 silverlight)。客户端不需要实时数据,但应该可以查询SETTINGS、Statistics、Logs等。

【问题讨论】:

  • 这太模糊了。取决于很多事情:您的客户端和服务器之间的关系、数据量、持久性/可靠性要求等。
  • 刚刚更新了问题...这足够详细吗?

标签: .net asp.net service communication desktop


【解决方案1】:

如果代码的两端都受到控制,除非有任何特定要求,否则我会选择 WCF,因为“它非常简单”。

见Choosing a (WCF) Transport:它是 很容易从 HTTP 到 TCP 再到命名管道(呜啦啦!):

命名管道是 Windows 操作系统内核中的一个对象,例如进程可用于通信的共享内存部分 [阅读:非常快]。命名管道有一个名称,可用于单机进程之间的单向或双向通信。

当然,如果违反了同一台机器的要求,那么可以根据网络配置等使用 HTTP/TCP 来代替——代码的区别?一个配置设置:)

编码愉快。

【讨论】:

  • 我会坚持下去:听起来服务-客户端通信受到单个请求的影响(可能是周期性的,但具有相对较大的复杂有效负载),但不一定是数据流本身。当然,请记住 WCF 是“以 Microsoft 为中心的解决方案”,它可能相关,也可能不相关。
【解决方案2】:

问题以 WCF 或 HTTP 或 TCP 的形式提出。 WCF 是一个极其灵活的通信基础。您可以编写一次代码并装饰您的数据类,并通过 HTTP JSON/POX、TCP、二进制、HTTP 上的二进制、自定义序列化等之间的配置和代码进行动态切换......关于您选择哪种传输机制的问题是基于路由/防火墙限制、客户端等...就我个人而言,我喜欢 HTTP 和 JSON/XML 等可诊断传输,因为它们具有通用性、可路由性和可诊断性(结帐 fiddler2)。

根据您的描述,问题的难点似乎是该服务执行的实时网络流量监控。客户端和该服务之间的通道似乎是问题中比较简单的部分。

同样从描述中可以看出,客户端不需要是实时的,只是查询统计信息、设置和日志。因为客户端可以是本地的或远程的(远程意味着可能在 Intranet 之外?路由外部)。

因此,我会将实时网络统计信息收集过程与查询部分分离,这使得它如您所提到的那样异步。此时,该服务只是向客户端打开一个通道以查询简单的统计信息、设置和日志……选择最可路由和可诊断的通道,如 HTP、REST JSON|XML。如果这是一个问题,请保持 WCF 服务器代码不变并更改 WCF 绑定配置。

这个问题有点开放和模棱两可,但希望能有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2014-01-20
    • 2015-06-04
    相关资源
    最近更新 更多