现在我正在创建一个聊天应用程序。我目前正在使用 webapi 来构建应用程序后端。但是我在想我是否应该为此使用 WCF。我的目标是让应用程序成为一个多层应用程序,其中客户端可以是任何技术(不一定来自微软堆栈)。就应用程序未来的可扩展性观点而言,有什么我应该担心的吗?
2 回答
如果这是一个普通的 Web API,那么我会说正确使用 WebApi 将为您提供使用大量客户端技术的能力——如果它们支持使用 HTTP 进行交互;但是,您正在构建一个聊天客户端,它有一些非常不同的设计考虑。
通过与聊天客户端的简单/普通 WebApi 接口,您最终可能会得到一个要求您的客户端反复轮询新消息的架构——这可能并不理想。您发现的大多数 .NET 聊天示例通常会在套接字等上运行 TCP 级别。例如,这3 个示例和客户端能够“侦听”消息,通过 Http 事情并不是那么简单。
有支持推送(或模拟推送)的 WebApi 示例非常适合聊天API ,例如SignalR对你来说可能是个问题。
因此,使用 WCF 在 TCP 和 Socket 级别工作可能是您的最佳方法,但如果您确实想要一个基于 Web 的 Api 到您的解决方案并想要推送(类型)消息传递,那么请查看 SignalR 或 CometD 的实现,如果您只是如果想要一个开放的 Web Api 可用于许多客户端技术而不支持推送,那么 WebApi 将是一个非常好的选择。
顺便说一句:要获得对客户端(例如现有聊天客户端等)的最广泛支持,请考虑使用标准化的聊天协议,例如 XMPP。如果需要,这可以在 SignalR 上使用。
从我的角度来看,如果您的客户端可以使用任何技术(MS 或非 MS)和任何类型(Web、Mobile、Desktop、Smart、Rich..),那么您应该使用 MVC Web Api。它更具互操作性,非常有趣!请注意,此解决方案适用于您的前端服务:您的后端服务可能采用 WCF 等其他技术。