WCF LOB 适配器 SDK 的关键组件
使用 WCF LOB 适配器 SDK 开发适配器需要使用以下许多基本组件:
用于帮助建立和维护与业务线系统的连接的连接组件。
处理程序组件 定义并实现用于处理入站和出站消息以及元数据操作的过程。
元数据组件 定义和操作用于与业务线系统通信的元数据。
自定义组件 支持事务、可靠的消息传送和安全性。
核心组件 将所有组件绑定在一起,并确保无缝集成到 WCF 中。
这些组件是本主题的重点。
连接组件
连接组件包括接口和类,这些接口和类可帮助定义和控制连接的生存期,以及管理统一资源标识符 (URI) 查询属性和用户属性。 连接组件包括下表中所述的接口和类。
连接组件 | 必需? | 说明 |
---|---|---|
Microsoft.ServiceModel.Channels.Common.ConnectionUri |
必需 | 用于为将使用适配器的用户提供自定义 URI 生成体验的基类。 |
Microsoft.ServiceModel.Channels.Common.IConnection |
必需 | 定义连接行为的接口。 开发人员必须实现此接口才能定义与目标系统的连接。 |
Microsoft.ServiceModel.Channels.Common.IConnectionFactory |
必需 | 连接工厂的基类。 在定义目标系统的连接工厂时,开发人员将创建子类。 |
Microsoft.ServiceModel.Channels.Common.ConnectionPoolSettings |
可选 | 包含控制连接池行为的设置。 开发人员可能希望根据目标系统的行为优化这些值。 |
Microsoft.ServiceModel.Channels.Common.ConnectionManagerSettings |
可选 | 包含控制连接池行为的静态设置。 开发人员可能希望为其目标系统优化这些值。 |
WCF LOB 适配器开发向导将创建 和 Microsoft.ServiceModel.Channels.Common.IConnectionFactory
的Microsoft.ServiceModel.Channels.Common.IConnection``Microsoft.ServiceModel.Channels.Common.ConnectionUri
实现,而不考虑所选的向导选项。 这些实现将包含用于在向导中选择的支持选项的代码, (在连接 URI) 包括连接属性,但适配器开发人员必须提供和 的 Open、Close 和其他方法的Microsoft.ServiceModel.Channels.Common.IConnection
Microsoft.ServiceModel.Channels.Common.ConnectionUri
实现。
处理程序组件
处理程序组件支持不同的消息交换模式,包括入站、出站、异步入站、异步出站以及元数据搜索、浏览和解析操作。 处理程序组件包括下表中所述的接口和类。
处理程序组件 | 必需? | 说明 |
---|---|---|
Microsoft.ServiceModel.Channels.Common.IAsyncInboundHandler |
可选 | 用于从目标系统异步接收消息。 异步支持是可选的。 |
Microsoft.ServiceModel.Channels.Common.IAsyncOutboundHandler |
可选 | 用于从目标系统异步发送消息。 异步支持是可选的。 |
Microsoft.ServiceModel.Channels.Common.IInboundHandler |
可选 | 用于从目标系统接收消息。 如果适配器需要侦听来自目标系统的消息,开发人员应实现此处理程序。 |
Microsoft.ServiceModel.Channels.Common.IOutboundHandler |
可选 | 支持将消息发送到目标系统。 虽然是可选的,但它是请求-响应消息模式所必需的。 大多数基本的通信技术都基于此模式,包括 HTTP、RPC 和许多其他模式。 |
Microsoft.ServiceModel.Channels.Common.IMetadataBrowseHandler |
可选 | 当适配器支持元数据浏览时,将实现此处理程序。 虽然是可选的,但开发人员通常会实现此处理程序,以提供目标系统中可用的操作列表。 |
Microsoft.ServiceModel.Channels.Common.IMetadataResolverHandler |
可选 | 当适配器从表示系统特定逻辑和数据类型的目标系统检索并返回元数据时,必须实现此处理程序。 可以从实际目标系统检索元数据,也可以创建元数据来表示目标系统的功能。 例如,FTP 适配器可以创建 GET 和 PUT 操作。 虽然不是必需的,但开发人员通常会实现此处理程序来提供有关特定操作的信息。 |
Microsoft.ServiceModel.Channels.Common.IMetadataSearchHandler |
可选 | 当适配器支持元数据搜索时,将实现此处理程序。 |
适配器开发向导将根据开发人员所做的选择创建 、 Microsoft.ServiceModel.Channels.Common.IOutboundHandler
Microsoft.ServiceModel.Channels.Common.IInboundHandler
和 元数据处理程序的实现Microsoft.ServiceModel.Channels.Common.IAsyncOutboundHandler
。 提供了支持代码;但是,适配器开发人员必须提供代码来启动和停止入站侦听器以及由 TODO 注释标记的其他代码。
元数据组件
元数据组件支持处理元数据请求,以及描述目标应用程序中的类型和操作。 处理程序组件控制如何处理元数据请求。 元数据组件描述目标系统公开的数据类型和操作。
元数据组件旨在保存两种类型的元数据信息:类型元数据和操作元数据。
类型元数据 描述目标系统中可用的数据类型,包括类型的名称、它是数组的数组属性,以及它是简单的 XSD 架构类型还是复杂类型。
操作元数据 描述目标系统中可用的操作。 属性包括返回类型、参数列表和操作名称。
适配器中的元数据支持是可选的,但建议使用。 与将功能作为 WCF 服务实现相比,使用 WCF LOB 适配器 SDK 生成适配器的好处之一是能够公开并绑定到一组动态操作。
注意
如果需要公开一组有限的静态方法,应考虑使用 WCF。
下表描述了可用于处理、描述和使用元数据的组件。
元数据组件 | 说明 |
---|---|
Microsoft.ServiceModel.Channels.Common.ComplexQualifiedType |
表示适配器的复杂限定类型的类。 例如,如果目标系统是关系数据库,则表、行或用户定义的过程返回类型可能都是自定义限定类型。 |
Microsoft.ServiceModel.Channels.Common.OperationMetadata |
用于表示目标系统的操作元数据的基类。 例如,可以子类 OperationMetadata 以包含有关面向关系数据库的适配器中的存储过程的信息。 |
Microsoft.ServiceModel.Channels.Common.OperationMetadataTraceRecord |
提供将操作元数据捕获到跟踪文件的方法。 跟踪收集唯一 ID、上次访问时间、时间戳、显示名称、原始名称、参数和其他详细信息等信息。 |
Microsoft.ServiceModel.Channels.Common.ParameterizedOperationMetadata |
提供一种定义操作的属性(如参数和返回类型)的方法。 |
Microsoft.ServiceModel.Channels.Common.OperationParameter |
描述用于调用目标系统上的操作的参数。 属性包括名称、原始名称、参数方向以及指示参数是否为空的标志。 |
Microsoft.ServiceModel.Channels.Common.OperationParameterDirection |
描述操作的参数方向的枚举类型。 参数只能是入站 (in) ,只能是出站 (Out) ,也可以是双向 (InOut) 。 |
Microsoft.ServiceModel.Channels.Common.OperationResult |
表示操作结果。 对于返回 void 或 null 的操作以及字符串、整数或其他值,具体取决于操作,可以是 OperationResult.Empty。 |
Microsoft.ServiceModel.Channels.Common.QualifiedType |
设计为限定类型属性的基类,用于描述目标系统的类型元数据的属性。 |
Microsoft.ServiceModel.Channels.Common.QualifiedTypeContainer |
为一组相关的限定类型提供容器。 |
Microsoft.ServiceModel.Channels.Common.SimpleQualifiedType |
描述当目标系统类型直接映射到 W3C XSD 架构类型时,该类型元数据的属性。 有关允许类型的列表,请参阅 XmlTypeCode 枚举。 |
Microsoft.ServiceModel.Channels.Common.TypeMember |
提供在结构化类型元数据中定义简单或复杂数据成员的方法。 |
Microsoft.ServiceModel.Channels.Common.TypeMetadata |
用于表示目标系统的类型元数据的基类。 |
Microsoft.ServiceModel.Channels.Common.StructuredTypeMetadata |
提供一种定义包含复杂和/或简单类型成员的数据结构的方法。 |
Microsoft.ServiceModel.Channels.Common.TypeMetadataCollection |
为一组相关类型元数据提供容器。 |
Microsoft.ServiceModel.Channels.Common.TypeMetadataTraceRecord |
提供将类型元数据捕获到跟踪文件的方法。 跟踪收集唯一 ID、上次访问时间、时间戳和其他详细信息等信息。 |
自定义组件
自定义组件支持事务、安全性、可靠的消息传送和其他高度依赖目标系统的功能。 作为使用 WCF LOB 适配器 SDK 的适配器开发人员,你需要了解目标系统的功能,并确定要支持这些功能的程度。
核心组件
核心组件提供一组基类和接口,使适配器能够插入 WCF。 下表描述了核心组件。
核心组件 | 必需? | 说明 |
---|---|---|
Microsoft.ServiceModel.Channels.Common.Adapter |
必需 | 使用 WCF LOB 适配器 SDK 编写的适配器的基类。 它负责与 WCF 通道体系结构交互 |
Microsoft.ServiceModel.Channels.Common.AdapterBinding |
必需 | 包含控制适配器的各种设置的类,包括连接池 () Microsoft.ServiceModel.Channels.Common.ConnectionPoolSettings 、缓存 (Microsoft.ServiceModel.Channels.Common.CacheSettings ) 、元数据 (Microsoft.ServiceModel.Channels.Common.MetadataSettings ) 和消息传送 (Microsoft.ServiceModel.Channels.Common.MessagingSettings ) 。 |
自定义适配器通过 WCF 绑定公开。 有关详细信息,请参阅 上的 https://go.microsoft.com/fwlink/?LinkId=100308WCF 文档。
适配器开发向导创建 、Microsoft.ServiceModel.Channels.Common.AdapterBinding
、 System.ServiceModel.Configuration.StandardBindingElement
和 System.ServiceModel.Configuration.StandardBindingCollectionElement
的Microsoft.ServiceModel.Channels.Common.Adapter
实现,以向 WCF 配置系统公开适配器绑定。 适配器开发向导还将生成 的 System.ServiceModel.Configuration.BindingElementExtensionElement
实现,以便在 Microsoft.ServiceModel.Channels.Common.Adapter
计算机或应用程序配置文件中的 WCF 自定义绑定中使用。
有关 StandardBindingElement、StandardBindingCollectionElement 和 BindingElementExtensionElement 的详细信息,请参阅 WCF 文档。
有关配置使用 WCF LOB 适配器 SDK 编写的适配器的详细信息,请参阅 使用 WCF LOB 适配器 SDK 部署适配器。