繁体   English   中英

Winforms应用程序服务器通信

[英]Winforms application server communication

我正在构建需要与后端通信的Winforms客户端。 该后端是使用Nhibernate(具有非常丰富的域模型),消息队列等构建的。

现在,我确实知道如何通过Internet(主要是mq的东西)进行通信,但是我完全不知如何让我的Client Winforms App与Application Server通话以调用服务。

做这个的最好方式是什么 ? 我已经阅读了有关Nhibernte,DDD,WCF,远程处理等的全部内容,但是我只是看不到如何正确地做到这一点? 如何设计服务(由于该模型已扩展,因此它将是一个非常健谈的界面与一个非常不完整的界面)

因此,基本上:使winforms应用与后端对话(分层)的最佳方法是什么,以及关于如何实现这一点的良好示例(包括所有层,因为大多数示例都停留在Service Boundry:s上)

我将使用WCF和几个接口来定义用于访问后端的服务。

Application.BusinessLayer

定义所有WCF接口+域实体。 由winform和后端使用。

接口看起来像这样:

[ServiceContract]
public inteface IUserService
{
    [OperationContract]
    IEnumerable<User> Find(string searchWord);
}

定义WCF服务仅需这些。

Application.Service

您的后端。 实现所有接口。

您可以使用配置文件或通过代码配置WCF。 WCF服务可以在ASP.Net应用程序或ServiceHost中运行。

Application.WinClient

您的Winform应用程序。

如果将WCF服务托管在asp.net中,则可以将应用程序引用服务添加到Web服务中。 否则,您将使用ChannelFactory创建服务代理。

我喜欢Ayende在此MSDN文章中描述的方法,尽管我自己没有尝试过。

值得一试。

我个人想使用ASP.NET MVC寻求精益的REST + JSON,但最安全的选择是WCF。 这里有很多例子:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=35ec8682-d5fd-4bc3-a51a-d8ad115a8792&displaylang=en

在设计接口方面,请分解对粒度功能的调用。

作为WCF提供的RPC(远程过程调用)的替代方法,您还可以考虑将后端实现为通过消息进行通信的服务。
您可以设计此类服务以单向和/或请求响应进行通信。
要通过消息实现应用程序之间的通信,可以考虑使用Eneter Messaging Framework 它是轻量级的,您的应用程序可以基于NamedPipes,Tcp或Http进行通信。
如果您有兴趣,可以在此处获取更多技术信息。
您可以在eneter.blogspot.com上找到更多示例,也可以从www.eneter.net下载该框架。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM