2010-10-14 147 views
0

我正在构建需要与后端进行通信的Winforms客户端。这个后端是使用Nhibernate(具有非常丰富的域模型),消息排队等构建的。Winforms应用程序服务器通信

现在我知道通过互联网进行通信(主要是mq的东西),但我完全丧失了如何让我的客户端Winforms应用程序与应用程序服务器通话以调用服务。

这样做的最好方法是什么?我已经读过所有关于Nhibernte,DDD,WCF,远程处理等,但我只是不知道如何以正确的方式做到这一点?如何设计服务(因为模型是如此延伸,它将是一个非常健谈的界面vs非常粗糙的界面)

所以基本上:让一个winforms应用程序与后端交谈(分层)的最佳方式是什么?并有任何好的例子,如何实现这一点(包括所有层,因为大多数例子停止在服务边界:s)

回答

0

我个人喜欢去使用ASP.NET MVC的精益REST + JSON,但最安全赌注是WCF。这里有无数的例子:

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

在条款设计方法 - 界面,分解成颗粒状功能的调用。

+0

所以你得到的东西,如:客户<->查看<->型号/控制器<-> WCF服务<->服务<->型号/存储库? – Noctris 2010-10-14 10:30:09

+0

是的,我会这么说。其他的替代方案是客户端<->查看<->模型/控制器<-JSON+REST-> ASP.NET MVC <->服务<-> Model/Repository – Aliostad 2010-10-14 10:35:54

1

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

Application.BusinessLayer

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

A接口可以是这样的:

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

这就是你需要定义一个WCF服务。

Application.Service

后端。实现所有接口。

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

Application.WinClient

你的winform应用程序。

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

0

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

相关问题