2010-10-14 137 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下載。

相關問題