推荐的服务与桌面应用或网页之间的通信方式是什么?
我希望服务能够完成所有工作,但管理/管理/报告可以通过 网络或桌面。 (它将用C#编写.Net 4.0)
是否命名为管道?插座? wcf?休息?肥皂 ?其他?什么是最佳做法?
任何信息都将不胜感激。
服务需要实时有效,因此任何通信都需要异步。
由于 安德鲁
更新1 - 服务监控网络流量REALTIME即服务。客户端可以是本地的,也可以是远程的(使用ASP.NET / MVC甚至Silverlight)。客户端不需要实时数据,但应该查询SETTINGS,Statistics,Logs等。
答案 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绑定配置。
这个问题有点开放和含糊不清,但希望这有点帮助。