在SERVICE和Web /桌面应用程序之间进行通信

时间:2011-09-24 00:29:57

标签: .net asp.net service communication desktop

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

我希望服务能够完成所有工作,但管理/管理/报告可以通过 网络或桌面。 (它将用C#编写.Net 4.0)

是否命名为管道?插座? wcf?休息?肥皂 ?其他?什么是最佳做法?

任何信息都将不胜感激。

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

由于 安德鲁

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

2 个答案:

答案 0 :(得分:1)

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

Choosing a (WCF) Transport:它是 很容易从HTTP到TCP到命名管道(ooo la la!):

  
    

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

  

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

快乐的编码。

答案 1 :(得分:1)

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

根据您的描述,问题的严重部分似乎是服务执行的REALTIME网络流量监控。客户端和该服务之间的通道似乎是问题的简单部分。

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

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

这个问题有点开放和含糊不清,但希望这有点帮助。