使用 WCF 服务模型开发 SAP 应用程序
在最低级别,Windows Communication Foundation (WCF) 提供了一种编程模型,在该模型中,客户端通过在客户端和服务终结点之间建立的通道上交换 SOAP 消息来调用服务上的操作。 此模型(称为 WCF 通道模型)公开了可直接在 WCF 通道体系结构上操作的数据类型和方法。 WCF 通道模型使你能够直接控制所创建的 SOAP 消息的内容,以及应用程序和 SAP 适配器使用它们的方式;但是,创建格式正确的 SOAP 消息以通过通道发送并验证返回的答复消息可能是一项详细而严格的任务。
因此,WCF 提供了另一个名为 WCF 服务模型的编程模型。 WCF 服务模型涉及使用代理类来调用目标服务上的操作或从客户端接收操作。
用于调用目标服务上的操作的代理类称为 WCF 客户端类。 此类使用强类型参数将服务公开的操作建模为 .NET 方法。 通过使用 WCF 服务模型,可以在 WCF 客户端上调用 SAP 适配器作为 .NET 方法公开的操作。 有关 WCF 客户端的详细信息,请参阅 WCF 客户端概述。
用于从客户端接收操作的代理类称为 WCF 服务协定类。 此类将代码公开的操作建模为具有强类型参数的回调方法。 然后,可以在 System.ServiceModel.ServiceHost 中托管此类的实例,使客户端能够对代码调用操作。 通过使用 WCF 服务模型和针对 POLLINGSTMT 操作的 WCF 服务协定类,可以从 SAP 适配器接收轮询查询的结果。
使用工具从 SAP 适配器公开的服务元数据生成 WCF 客户端类或 WCF 服务协定和关联的帮助程序代码。 可以使用以下工具之一:
WCF 附带的 ServiceModel 元数据实用工具 (svcutil.exe)
SAP 适配器随附的“添加适配器服务参考 Visual Studio”插件
添加适配器服务引用插件与 Visual Studio 设计体验集成,并提供了一个标准的 Microsoft Windows 界面,该界面针对适配器公开的操作提供强大的浏览和搜索功能。 有关如何生成 WCF 客户端或 WCF 服务协定类的详细信息,请参阅 为 SAP 解决方案项目生成 WCF 客户端或 WCF 服务协定。
因为它提供了一个 .NET 程序员所熟悉的模型,并且隐藏了通过通道进行 SOAP 消息交换的基本复杂性,因此 WCF 服务模型通常是为 SAP 适配器开发编程解决方案的最佳选择。 但是,在某些情况下,WCF 通道模型可能是更好的选择;尤其是在流式处理非常重要的情况下。 这是因为在 SOAP 消息中的对象的 XML 表示形式与用于在服务模型中表示它们的 .NET 类型之间进行序列化和反序列化涉及将整个消息读入内存。 有关使用 WCF 通道模型的详细信息,请参阅 使用 WCF 通道模型开发 SAP 应用程序。
本节中的主题包含有助于创建和使用 WCF 服务模型以使用 SAP 适配器开发应用程序的信息、过程和示例。