【问题标题】:Architecture for Services (WCF and Delphi)服务架构(WCF 和 Delphi)
【发布时间】:2011-04-13 14:28:41
【问题描述】:

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

我们正在考虑面向服务的架构,WCF 也是如此。要在 Asp.Net MVC 中访问 WCF 服务很好,但我需要在 Delphi 中做什么?我的主要疑问是,如何使用 Delphi 访问 WCF 中的服务。有什么办法可以轻松搞定?

我的服务方法可以返回 IEnumerable 或 T[] 吗? 有这方面的建议吗!?

谢谢!

【问题讨论】:

    标签: wcf web-services delphi delphi-2010 soa


    【解决方案1】:

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

    幸运的是,WCF 没有“指定”使用 SOAP。这篇 Wikipedia 文章中的 Interoperability 部分提到了例如带有标准 XML(或 RSS 或 JSON)的 WCF。还有一个WCF binding for REST

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

    【讨论】:

      【解决方案2】:

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

      因此,您可以使用 RemObjects for .Net 构建服务器,例如 TCP + 二进制消息以获得最佳性能(SOAP/XML 慢得多!),以及 Delphi 2010 客户端(甚至支持 FreePascal)。双方(Delphi 和 .Net)相互兼容,即使是二进制消息!

      我对@9​​87654322@ 的体验非常好:非常易于使用和构建服务(比 WCF 更容易?)、良好的支持和质量等。

      【讨论】:

        【解决方案3】:

        Delphi 最新的 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

        它是安全的(在 URI 级别使用 secure authentication)、轻巧且快速。

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

        mORMot framework documentation 有 800 多页,以及 Delphi 中面向服务的架构设计模式的一些专门的高级解释。它与客户端-服务器 ORM 集成在一起,因此您手边拥有在 Delphi 和其他技术中创建正确的Domain-Driven application 所需的所有低级工具。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-28
          • 1970-01-01
          • 2016-12-15
          • 2018-01-31
          • 1970-01-01
          • 2011-05-18
          相关资源
          最近更新 更多