用于聊天应用程序的WCF与Web Api

时间:2013-01-14 06:22:34

标签: .net wcf client-server asp.net-web-api chat

现在我正在创建一个聊天应用程序。我目前正在使用webapi来构建应用程序后端。但是我在想是否应该使用WCF。我的目标是使应用程序成为一个多层应用程序,其中客户端可以是任何技术(不一定来自微软堆栈)。从应用程序未来的可扩展性角度来看,我是否应该担心任何事情。

2 个答案:

答案 0 :(得分:2)

如果这是一个普通的Web API,那么我会说正确使用WebApi会让你能够使用各种各样的客户端技术 - 如果它们支持使用HTTP进行交互;但是,您正在构建一个具有一些非常不同的设计考虑因素的聊天客户端。

通过聊天客户端的简单/普通WebApi界面,您可能最终会得到一个架构,要求您的客户端重复轮询新消息 - 可能并不理想。您找到的大多数.NET聊天示例通常都会通过套接字等操作TCP级别,例如these 3个示例和客户端能够“监听”消息,而不是Http,事情并不那么简单。

支持推送(或模拟推送)的WebApi示例非常适合聊天API,例如SignalR有很多使用WebApi和SignalR实现聊天的例子,例如herehere - 但SignalR对其他技术堆栈的开放程度可能会对你造成影响。

因此,使用WCF在TCP和Socket级别工作对您来说可能是最好的方法,但如果您确实需要基于Web的Api到您的解决方案并希望推送(类型)消息传递,那么请查看SignalR或CometD以实现,如果您只是希望在不支持推送的情况下为许多客户端技术提供开放的Web Api,那么WebApi将是一个非常好的选择。

暂且不说:为客户提供最广泛的支持,例如:现有的聊天客户端等考虑使用像XMPP这样的标准化聊天协议。如果需要,可以在SignalR上使用它。

答案 1 :(得分:0)

从我的角度来看,如果您的客户可以使用任何技术(MS或非技术)和任何类型(Web,Mobile,Desktop,Smart,Rich ..),您应该使用MVC Web Api。它更具互操作性,非常有趣!请注意,此解决方案适用于您的前端服务:您的后端服务可以使用其他技术,如WCF。