服务体系结构(WCF和Delphi)



我正在做一个有两个用户界面的项目。Web (asp.net MVC)和桌面(Delphi 2010)。这是客户要求的,所以我们需要使用Delphi。

我们考虑的是面向服务的体系结构,WCF也是如此。要访问Asp. js中的WCF服务。. Net MVC很好,但我需要在Delphi做什么?我的主要疑问是,如何使用Delphi访问WCF中的服务。有什么办法能让它简单点吗?

服务中的方法可以返回IEnumerable或T[]吗?对此有什么建议吗?

谢谢!

WCF中的web服务支持提供了许多Delphi不支持的特性——MTOM、WS-Addressing、WS-Reliable Messaging和WS-Security等等。如果您正在设计系统的两个部分(web服务服务器和客户端),那么您可以选择使用哪些特性(只要它们不受其他方的支配)。

幸运的是,WCF没有"规定"使用SOAP。这篇Wikipedia文章中的互操作性部分提到了使用标准XML(或RSS或JSON)的WCF。还有一个用于REST的WCF绑定。

规划面向服务的体系结构是一项艰巨的任务,因此我强烈建议您阅读有关此主题的常用文献,并找到一种方法,使其尽可能简单,易于测试和发展。

也许你可以看看RemObjects SDK:它是一个类似wcf的解决方案,你可以将它用于。net, Delphi, Objective-C, PHP, c++等。

所以你可以用。net的RemObjects构建一个服务器,例如TCP +二进制消息,以获得最佳性能(SOAP/XML慢得多!),和一个Delphi 2010客户端(甚至支持FreePascal)。双方(Delphi和。net)彼此兼容,即使是二进制消息!

我使用RemObjects的经验非常好:非常容易使用和构建服务(比WCF更容易?),良好的支持和质量等。

Delphi最新的SOA框架之一,是我们的开源mORMot框架。

您可以使用interface来定义您的服务契约,并使用命名管道、GDI消息或TCP/HTTP在本地或远程访问它们。你的合约在客户端和服务器端都是这样定义的,就像在WCF中一样。

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

实时处理每个调用、每个会话、每个用户或每个组实例。请看下面的示例代码:

它是安全的(具有URI级别的安全认证),轻且快速。

它使用JSON作为通信(比XML轻)和RESTful访问。它可以被AJAX或WCF客户端使用(自定义封送接口之后的最新版本)。它针对速度和可扩展性进行了优化(具有平衡的自定义托管和按接口/按方法访问安全性等高级功能)。

mORMot框架文档有800多页,并且对Delphi中的面向服务的体系结构设计模式进行了一些专门的高级解释。它与一个Client-Server ORM集成在一起,因此您手头上有所有需要的底层工具,可以在Delphi中创建一个适当的领域驱动应用程序,以及其他技术。

最新更新