WCF LOB 适配器 SDK 基于 WCF 通道模型构建,为适配器开发人员提供设计时和运行时扩展,以创建具有大型动态元数据的业务线系统的适配器。 使用 WCF LOB 适配器 SDK 创建的适配器作为自定义 WCF 绑定呈现给使用者。 下图显示了 WCF LOB 适配器 SDK 的内部体系结构和主要组件。
处理器
处理程序 定义适配器支持的消息交换模式。
下表汇总了可用的处理程序类型、其函数以及映射到的 WCF 通道。
处理程序类型 | 功能 | 映射到 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 Builder 从 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
派生的类,用于描述每个操作和类型的详细信息。