Har*_*mut 5 asp.net-mvc wcf asp.net-mvc-3 asp.net-web-api
我们目前有一个.NET 4应用程序,它由在后台运行的Windows服务和本地或远程客户端组成(通常只有1-3个).
客户端有一个WPF GUI,需要来自Windows服务的一些数据.因此,我们将WCF与NamedPipe绑定用于本地客户端,并将NetTcp绑定用于远程客户端.这有效,但我们经常遇到无法访问的端点(通道出现故障或未找到等)的问题.我们已经尝试重建故障连接,但它似乎非常脆弱......
现在进入Web Api:看起来基于HTTP的堆栈可能更强大(没有通道,没有端点,也可以在Windows服务中自托管).通道损坏似乎没有问题,因为每个请求都是单独处理的.因此,如果某些内容失败,您只需重复该请求.(我们有其他应用程序的ASP.NET MVC经验,所以这对我们来说并不陌生).
现在我们在想什么可能是我们最好的选择.是否更好地"强化"我们现有的WCF服务(一个具有大约15个操作的服务接口)或将接口移动到Web Api并将其作为HTTP请求(使用JSON数据)运行?表演不是我们的主要问题......
有任何想法吗?哈特穆特
我建议您坚持为 WPF 应用程序使用 WCF (SOAP) 服务,而不是迁移到 Web API。有许多的原因。首先,我认为我们需要考虑新的 Web API 试图解决什么问题——即提供一个支持 RESTful/HTTP/超媒体服务的框架。这可能非常适合构建大量使用 HTTP 的应用程序,例如 Web、移动和 JavaScript 应用程序,您希望在这些应用程序中最大限度地提高服务的“覆盖范围”或互操作性(无论平台如何)。这并不是说您不能将其用于 WPF 客户端,但在您的情况下,所有流量都位于您的域的本地,因此坚持使用当前的实现更有意义。
您为服务/客户所做的具有约束力的选择对我来说听起来不错。我将重点关注您的渠道出现故障的原因并解决这些问题。您可能还需要考虑通过 IIS 托管您的服务并使用 WAS 公开您的非 HTTP 端点。过去我在这方面取得了很大的成功,而且大部分情况都相当稳定。它还消除了管理自己的主机的一些麻烦。如果您担心 TCP 绑定错误,则只需创建一个新的 HTTP 或 wsHTTP 端点并使用它即可。这将为您提供与 Web API 使用的完全相同的传输,而无需更改您的编程模型。
归档时间: |
|
查看次数: |
868 次 |
最近记录: |