使用 WCF 服务模型开发 Oracle 数据库应用程序

在最低级别,Windows Communication Foundation (WCF) 提供了一种编程模型,在该模型中,客户端通过在客户端和服务终结点之间建立的通道上交换 SOAP 消息来调用服务上的操作。 此模型(称为 WCF 通道模型)公开了可直接在 WCF 通道体系结构上操作的数据类型和方法。 WCF 通道模型使你能够直接控制所创建的 SOAP 消息的内容,以及应用程序和 Oracle 数据库适配器使用它们的方式;但是,创建格式正确的 SOAP 消息以通过通道发送并验证返回的答复消息可能是一项详细而严格的任务。

因此,WCF 提供了另一个名为 WCF 服务模型的编程模型。 WCF 服务模型涉及使用代理类来调用目标服务上的操作或从客户端接收操作。

  • 用于调用目标服务上的操作的代理类称为 WCF 客户端类。 此类使用强类型参数将服务公开的操作建模为 .NET 方法。 通过使用 WCF 服务模型,可以在 WCF 客户端上调用 Oracle 数据库适配器公开为 .NET 方法的操作。 有关 WCF 客户端的详细信息,请参阅 处 https://go.microsoft.com/fwlink/?LinkId=91458的“WCF 客户端概述”。

  • 在 WCF 服务模型中,服务公开的服务协定由 接口表示。 服务协定的此托管代码表示形式称为 WCF 服务协定。 WCF 服务协定将操作建模为具有强类型参数的方法。 若要从客户端接收操作,请从此接口实现类 WCF 服务。 然后,可以在 System.ServiceModel.ServiceHost 中托管此类的实例,使客户端能够对代码调用操作。 通过使用 WCF 服务模型和针对 POLLINGSTMT 操作的 WCF 服务协定,可以使用 Oracle 数据库适配器在 Oracle 数据库上接收轮询操作的结果。

    使用工具从 Oracle 数据库适配器公开的服务元数据生成 WCF 客户端类或 WCF 服务协定和关联的帮助程序代码。 可以使用以下工具之一:

  • WCF 附带的 ServiceModel 元数据实用工具 (svcutil.exe)

  • Oracle 数据库适配器随附的“添加适配器服务参考 Visual Studio 插件”

    添加适配器服务引用插件与 Visual Studio 设计体验集成,并提供了一个标准的 Microsoft Windows 界面,该界面针对适配器公开的操作提供强大的浏览和搜索功能。 有关如何生成 WCF 客户端或 WCF 服务协定的详细信息,请参阅 为 Oracle 数据库解决方案项目生成 WCF 客户端或 WCF 服务协定

    由于它提供的模型是 .NET 程序员所熟悉的,并且隐藏了通过通道进行 SOAP 消息交换的基本复杂性,因此 WCF 服务模型通常是为 Oracle 数据库适配器开发编程解决方案的最佳选择。 但是,在某些情况下,WCF 通道模型可能是更好的选择。 例如,WCF 服务模型仅支持 ReadLOB 操作的流式处理。 这是因为在 SOAP 消息中的对象的 XML 表示形式与用于在服务模型中表示它们的 .NET 类型之间进行序列化和反序列化涉及将整个消息读入内存。 (ReadLOB 操作的结果是此规则的例外。)

    WCF 通道模型支持所有操作上的 XML 节点级流式处理,以及 ReadLOB 和 UpdateLOB 操作上的数据级流式处理。 如果要处理返回大型结果集的查询,或者正在尝试更新表中的 LOB 字段,则 WCF 通道模型可能是更好的选择。 有关使用 WCF 通道模型的详细信息,请参阅 使用 WCF 通道模型开发 Oracle 数据库应用程序

    本节中的主题包含有助于创建和使用 WCF 服务模型以使用 Oracle 数据库适配器开发应用程序的信息、过程和示例。

本节内容