WCF LOB 适配器 SDK 的体系结构概述
WCF LOB 适配器 SDK 基于 WCF 通道模型构建,为适配器开发人员提供设计时和运行时扩展,以便为具有大型动态元数据的业务线系统创建适配器。 使用 WCF LOB 适配器 SDK 创建的适配器作为自定义 WCF 绑定显示给使用者。 下图显示了 WCF LOB 适配器 SDK 的内部体系结构和main组件。
处理程序
处理程序 定义适配器支持的消息交换模式。
下表汇总了可用的处理程序类型、其函数和 WCF 通道 (映射到) 。
处理程序类型 | Function | 映射到 WCF 通道 |
---|---|---|
Microsoft.ServiceModel.Channels.Common.IOutboundHandler |
支持单向发送或请求/响应模式。 | IOutputChannel, IRequestChannel |
Microsoft.ServiceModel.Channels.Common.IAsyncOutboundHandler |
支持异步单向发送或请求/响应模式。 | IOutputChannel, IRequestChannel |
Microsoft.ServiceModel.Channels.Common.IInboundHandler |
支持单向接收或答复模式。 | IInputChannel, IReplyChannel |
Microsoft.ServiceModel.Channels.Common.IAsyncInboundHandler |
支持方法单向接收或答复模式的异步变体。 | IInputChannel IReplyChannel |
Microsoft.ServiceModel.Channels.Common.IMetadataBrowseHandler |
支持浏览目标系统上的元数据。 | IRequestChannel |
Microsoft.ServiceModel.Channels.Common.IMetadataSearchHandler |
支持在目标系统上搜索元数据。 | IRequestChannel |
Microsoft.ServiceModel.Channels.Common.IMetadataResolverHandler |
支持从目标系统检索元数据。 | IRequestChannel |
通道实现
使用 WCF LOB 适配器 SDK 生成的适配器基本上是 System.ServiceModel.Channels.IServiceListner) (传输通道。 使用 WCF LOB 适配器 SDK 生成的适配器作为 WCF 绑定显示给使用者,其中绑定用于创建通道堆栈。 此绑定可以被视为与其他预定义 WCF 绑定(如 BasicHttpBinding、WsHttpBinding 和 NetTcpBinding)的对等方,并且可以在调用服务时通过 app.config 或在代码中由客户端应用程序进行设置。 此绑定包含一组有序的绑定元素,适配器是派生自 T:System.ServiceModel.Channels.TransportBindingElement 类的关键绑定元素。 在出站方案中,WCF LOB 适配器 SDK 运行时使用通道工厂创建适配器 (即传输通道) 。 在入站方案中,WCF LOB 适配器 SDK 运行时将通道侦听器用于服务应用程序中的传入通道。 运行时和设计时消息都通过此组件传递。
连接工厂、连接和连接 URI 生成器
ConnectionFactory 提供了一种工厂模式,用于基于 URI 和用户凭据创建连接。 有关详细信息,请参阅 Microsoft.ServiceModel.Channels.Common.IConnectionFactory
。
连接 定义与目标系统的低级别通信协定,并封装本机通信 API 和连接句柄。 有关详细信息,请参阅 Microsoft.ServiceModel.Channels.Common.IConnection
。
连接 URI 生成器允许适配器使用者以编程方式生成连接 URI,而无需特定语法知识。 有关详细信息,请参阅 Microsoft.ServiceModel.Channels.Common.ConnectionUri
。
连接管理
连接管理 负责适配器连接的生存期管理。 它在内部保留可供使用的连接池。 此连接池基于凭据和 URI。 凭据包含用于定义运行连接的安全上下文的用户名和密码。
使用相同的凭据和 URI 时,在同一连接工厂下打开的任何通道将从池获取连接(如果已有可用)。
连接池管理器将记录该 URI 的打开连接数,而不考虑凭据和跨通道工厂的边界。 例如,在一个系统中,可以有两个具有不同凭据的用户,这意味着有两个通道工厂连接到系统。
注意
适配器可能受其支持的连接数的限制,通常受系统资源限制。
为了帮助适配器开发人员配置连接池设置,WCF LOB 适配器 SDK 提供了两个类: Microsoft.ServiceModel.Channels.Common.ConnectionPoolSettings
和 Microsoft.ServiceModel.Channels.Common.ConnectionManagerSettings
。
元数据管理
元数据管理 负责目标系统的元数据缓存的面向对象表示形式。 元数据可以保存在可通过所有凭据访问的公共缓存中,也可以按凭据缓存元数据。
元数据生命周期从其设计时定义开始,并一直持续到运行时的使用。 在设计时,适配器开发人员必须识别操作集,并且必须生成必要的 WSDL 和客户端代理。 在运行时,基于适配器框架的适配器使用预定义的元数据来解释从目标系统调用返回的消息。
为了帮助适配器编写者配置元数据设置,适配器框架提供了三个类: Microsoft.ServiceModel.Channels.Common.CacheSettings
和 Microsoft.ServiceModel.Channels.Common.MetadataSettings
Microsoft.ServiceModel.Channels.Common.CommonCacheSettings
。
WSDL 生成器
WSDL 生成器 从 WCF LOB 适配器 SDK 的内部元数据对象模型提供自动 WSDL 生成, (对于需要自定义 WSDL 生成) 的方案,可以重写它。
有关详细信息,请参阅Microsoft.ServiceModel.Channels.Common.IWsdlRetrieval
。
元数据浏览/搜索
元数据浏览/搜索 允许浏览和搜索所有 LOB 元数据。
有关详细信息,请参阅 Microsoft.ServiceModel.Channels.IMetadataRetrievalContract
。
元数据生成
元数据生成 允许针对出站方案) 的客户端 (生成代码,以及基于适配器使用者选择的操作) 入站方案的服务 (生成代码。 尽管我们建议适配器使用者使用工具添加适配器服务引用插件 (在 BizTalk 应用程序) 的情况下使用适配器服务加载项,但 WCF LOB 适配器 SDK 提供了一个公共接口 Microsoft.ServiceModel.Channels.MetadataRetrievalClient.GetMetadata%2A
来检索 System.Web.Services.Description.ServiceDescription,它表示 Web 服务描述语言 (WSDL) 包含有关所选操作和类型的信息。 适配器编写器使用 WCF LOB 适配器 SDK 的元数据对象模型,该模型包括派生自 Microsoft.ServiceModel.Channels.Common.OperationMetadata
的类, Microsoft.ServiceModel.Channels.Common.TypeMetadata
用于描述每个操作和类型的详细信息。