教程 1:开发 Echo 适配器
在本教程中,你将使用 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 | 类别 | 对操作进行分类。 | N/A |
Echo/EchoStrings | string[] EchoStrings (字符串数据) | 向调用客户端回显指定次数的传入字符串。 | 出站 |
Echo/EchoGreetings | Greeting[] EchoGreetings (Greeting greeting greeting) | 向调用客户端回显传入的 Greeting 对象指定次数。 | 出站 |
Echo/EchoCustomGreetingFromFile | CustomGreeting EchoCustomGreetingFromFile (Uri greetingInstancePath) | 通过从文件中读取 Greeting 对象的实例来回显该对象。 Greeting 对象的元数据是从预定义的 XSD 文件获取的。 | 出站 |
Echo/OnReceiveecho | void OnReceiveEcho (Uri 路径,长内容) | 回显在指定文件夹中丢弃的文件的位置和长度。 | 入站 |
适配器属性
适配器公开以下适配器属性。
名称 | 类别 | 数据类型 | 说明 |
---|---|---|---|
计数 | 杂项 | System.Int32 | 用于将输入的指定次数回显到调用客户端。 默认值为“5” |
EnableConnectionPooling | 杂项 | System.Boolean | 用于启用或禁用适配器的连接池。 默认值 = true,表示在 WCF LOB 适配器 SDK 的运行时引擎中启用连接池。 |
InboundFileFilter | 入站 | System.String | 仅用于入站方案,并由 FileSystemWatcher 用于监视扩展的文件。 Default=*.txt |
InboundFileSystemWatcherFolder | 入站 | System.String | 用于设置文件将被删除的文件夹,以便 FileSystemWatcher 向适配器发出通知。 默认值 = c:\inbound\watcher。 |
连接属性
回显适配器公开以下连接属性。
名称 | 数据类型 | 说明 |
---|---|---|
应用程序 | System.String | LOB 系统中的应用程序名称。 此属性用于说明目的。 回显适配器不涉及任何 LOB 系统。 默认值 = lobapplication |
EnableAuthentication | System.Boolean | 如果为 true,则适配器需要客户端凭据中“用户名”字段中的值。 默认值 = false |
主机名 | System.String | LOB 系统所在的服务器名称。 此属性用于说明目的。 回显适配器不涉及任何 LOB 系统。 默认值 = 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:对适配器和连接属性进行分类。