在本教程中,将使用 WCF LOB 适配器 SDK 开发功能适配器。 适配器模拟虚构业务线系统的作,以演示 WCF LOB 适配器 SDK 的许多主要功能,包括:
同步入站
同步出站
元数据浏览
元数据搜索
元数据解析
回显适配器支持的各种功能包含在本部分中。 它们是消息交换、作元数据、连接属性和适配器属性。
消息交换模式
回声适配器支持以下两种消息交换模式:
同步出站,即使用客户端通过适配器将 WCF 请求消息发送到目标系统,然后等待通过适配器从目标系统接收 WCF 响应消息。 这是适配器最常见的消息交换模式。 若要支持同步出站,请实现
Microsoft.ServiceModel.Channels.Common.IOutboundHandler
接口。同步入站,即消费客户端通过适配器侦听来自目标系统的数据或事件。 若要支持同步入站,请实现
Microsoft.ServiceModel.Channels.Common.IInboundHandler
接口。有关消息交换模式的详细信息,请参阅 体系结构概述。
注释
适配器开发向导在 UI 中将消息交换模式显示为数据流。
元数据支持
回显适配器支持元数据浏览、搜索和解析功能。 通常,浏览和搜索是从 LOB 系统中获取数据的操作。 对于回声适配器,LOB 系统是一组预定义的操作,如下所示:
EchoMainCategory
Echo/EchoStrings
Echo/EchoGreetings
Echo/EchoCustomGreetingFromFile
Echo/OnReceiveEcho
下面是每个操作的定义:
名称 | 操作定义 | 说明 | 方向 |
---|---|---|---|
EchoMainCategory | 类别 | 对操作进行分类。 | 无 |
Echo/EchoStrings | string[] EchoStrings(字符串数据) | 将传入的字符串重复到调用客户端指定的次数。 | 出站 |
Echo/EchoGreetings | Greeting[] EchoGreetings(问候问候) | 将传入的 Greeting 对象重复输出到调用客户端,达到指定的次数。 | 出站 |
Echo/EchoCustomGreetingFromFile | CustomGreeting EchoCustomGreetingFromFile(Uri greetingInstancePath) | 从文件中读取 Greeting 对象的实例并进行回显。 Greeting 对象的元数据是从预定义的 XSD 文件获取的。 | 出站 |
Echo/OnReceiveEcho | void OnReceiveEcho(Uri 路径,长内容) | 回显在指定文件夹中删除的文件的位置和长度。 | 入站 |
适配器属性
适配器公开以下适配器属性。
名称 | 类别 | 数据类型 | 说明 |
---|---|---|---|
计数 | 杂项 | System.Int32 | 用于将输入的指定次数回显到调用客户端。 默认值 = 5 |
启用连接池 | 杂项 | System.Boolean | 用于启用或禁用适配器的连接池功能。 默认值为 true,这意味着在 WCF LOB 适配器 SDK 的运行时引擎中启用了连接池。 |
InboundFileFilter | 入站 | System.String 系统 | 仅用于入站方案,由 FileSystemWatcher 用来监视扩展的文件。 Default=*.txt |
InboundFileSystemWatcherFolder | 入站 | System.String 系统 | 用于设置文件将被删除的文件夹,以便 FileSystemWatcher 向适配器发出通知。 默认值 = c:\inbound\watcher。 |
连接属性
回显适配器公开以下连接属性。
名称 | 数据类型 | 说明 |
---|---|---|
应用程序 | System.String 系统 | LOB 系统中的应用程序名称。 此属性用于说明目的。 回显适配器不涉及任何 LOB 系统。 默认值 = lobapplication |
启用身份验证 | System.Boolean | 如果条件为 true,则适配器期望在客户端凭据的用户名字段中输入一个值。 默认值 = false |
主机名 | System.String 系统 | LOB 系统所在的服务器名称。 此属性用于说明目的。 回显适配器不涉及任何 LOB 系统。 Default = lobhostname |
接口实现
WCF LOB 适配器 SDK 定义一组类和接口,这些类和接口必须实现以支持适配器的特定功能。 下表描述了这些类和接口、它们的说明以及何时实现它们。
类/接口 | 何时实现 | 说明 |
---|---|---|
Microsoft.ServiceModel.Channels.Common.IConnection | 如果需要定义与目标系统的连接。 | 定义与目标系统的连接。 |
Microsoft.ServiceModel.Channels.Common.IConnectionFactory | 如果需要创建与目标系统的连接。 | 创建与目标系统的连接。 |
Microsoft.ServiceModel.Channels.Common.ConnectionUri | 如果需要管理连接 URI。 如果需要在“添加适配器服务引用插件”工具中对连接属性进行分类。 |
管理目标系统的连接 URI。 |
Microsoft.ServiceModel.Channels.Common.IMetadataResolverHandler | 适配器必须支持元数据解析功能。 | 解析操作和类型元数据。 |
Microsoft.ServiceModel.Channels.Common.IMetadataSearchHandler | 如果适配器支持元数据搜索功能。 | 搜索目标系统中的操作。 |
Microsoft.ServiceModel.Channels.Common.IMetadataBrowseHandler | 适配器必须支持浏览功能 | 浏览目标系统中的操作。 |
Microsoft.ServiceModel.Channels.Common.IOutboundHandler | 如果适配器通常需要支持外部通信功能。 | 将传入的 WCF 请求消息转换为目标系统消息,调用目标系统特定的函数,然后将响应转换为传出 WCF 响应消息。 |
Microsoft.ServiceModel.Channels.Common.IInboundHandler | 如果适配器支持入站功能。 | 监听来自目标系统的数据和/或事件。 |
若要简化适配器开发,请使用适配器开发向导生成适配器项目,该项目创建一组派生类,这些类专为适配器功能定制。
若要通过“添加适配器服务引用插件”和使用适配器服务外接程序工具自定义适配器和连接属性,请修改适配器开发向导生成的以下文件。
{Projectname}BindingElement.cs
{Projectname}BindingElementExtensionElement.cs
{Projectname}ConnectionUri.cs
有关如何执行此作的详细信息,请参阅 步骤 2:对适配器和连接属性进行分类。