2011-04-13 71 views
3

我在一個項目中,將有兩個用戶界面的工作。 Web(asp.net mvc)和Desktop(Delphi 2010)。這是客戶的要求,所以我們需要使用Delphi。架構服務(WCF和Delphi)

我們正在考慮通過面向服務的架構的一個,所以是WCF。在Asp.Net MVC中訪問WCF服務很好,但是我需要在Delphi中做什麼?我的主要疑慮是,如何使用Delphi訪問WCF中的服務。有什麼方法可以讓它變得簡單嗎?

可以在我的服務回報了IEnumerable或T []的方法呢? 對此有何建議!?

謝謝!

回答

3

在WCF Web服務支持提供了許多功能,這是Delphi沒有支載 - MTOM,WS-Addressing的,WS-可靠消息和WS-Security只是僅舉幾例。如果您正在設計系統的兩個部分(Web服務服務器和客戶端),那麼您可以選擇使用哪些功能(只要它們不是由其他方指定的)就可以開心。

WCF幸好沒有 '規定' 使用SOAP。本維基百科文章中的Interoperability部分提到了帶標準XML(或RSS或JSON)的WCF示例。還有一個WCF binding for REST

規劃面向服務的架構是一項艱鉅的任務,所以我強烈建議通過正常的文學這個主題閱讀,並找到一種方法來保持它儘可能簡單和容易測試和進化。

2

也許你可以在RemObjects SDK看看:這是一個WCF樣的解決方案,你可以使用它的.Net,德爾福,Objective-C的,PHP,C++等

所以你可以建立一個帶有RemObjects for .Net的服務器,例如TCP +二進制消息以獲得最佳性能(SOAP/XML要慢得多!)以及Delphi 2010客戶端(甚至支持FreePascal)。雙方(Delphi和.Net)相互兼容,即使是二進制信息!

我與RemObjects體驗非常好:非常容易使用,並建立服務(?比WCF容易),良好的支持和質量等

0

一個德爾福最新的SOA框架,是我們Open Source mORMot framework

您可以使用interface定義您的服務合同,並使用命名管道,GDI消息或TCP/HTTP在本地或遠程訪問它們。您的合同在客戶端和服務器端都是這樣定義的,就像在WCF中一樣。

type 
    ICalculator = interface(IInvokable) 
    ['{9A60C8ED-CEB2-4E09-87D4-4A16F496E5FE}'] 
    function Add(n1,n2: integer): integer; 
    end; 

它處理每個呼叫,每個會話,每個用戶或每個組實例的實況。見this sample code

它是安全的(與secure authentication在URI級別),輕而快。

它使用JSON作爲通信(比XML更輕)和REST式訪問。它已準備好被AJAX或WCF客戶端使用(在對接口進行自定義封送後最新消息)。它針對速度和可伸縮性進行了優化(具有高級特性,如平衡自定義託管和每個接口/每方法訪問安全性)。

mORMot framework documentation有超過800頁,以及一些專門的高層次解釋服務導向架構德爾福的設計模式。它與客戶端 - 服務器ORM集成在一起,因此您可以使用所有必需的低級工具在Delphi中制定合適的Domain-Driven application以及其他技術。