Transceiver的.NET新版: Adapter Server数据交换服务框架

原Delphi的Transceiver相关文档:

通讯和数据交换服务器Transceiver 自述文件
http://blog.csdn.net/redbirdli/archive/2004/09/02/92407.aspx

用Delphi建立通讯与数据交换服务器—Transceiver技术剖析
http://blog.csdn.net/redbirdli/archive/2004/06/09/11239.aspx

 

 

内容
 
 
 
Adapter Server是用于数据交换的通用Windows服务。可广泛地与Biztalk Server、SSIS等微软产品进行衔接,完成数据提取或预处理任务。通过Adapter Server可将Biztalk Server、SSIS等产品良好支持范围之外的数据形式(如Oracle/DB2/特殊平面文件等)进行快速数据提取和预处理,并转换成更易于项目集成的形式。
Adapter Server提供了一个开放的,易扩展的组件架构模型,参照了Biztalk的Receive Port/Send Port可自由组合完成不同通讯场景的设计思想。自己开发一个通讯组件,只需实现读或写的逻辑,其他的控制功能都由服务器统一管理。
通用的数据ETL服务,高效地提取和迁移数据;
提供多种通讯方式和存取方式(MQ、FILE、DB、FTP、HTTP、SOAP等);
统一而独立的日志管理和错误重试方式;
定点和间隔两种时间预定方式;
轮循与实时提取相结合的数据提取方式;
灵活的可扩展应用模型,易于开发和使用自定义开发的通讯组件;
 
 
安装并有效配置以下组件
.NET Framework版本 2.0
 
Carrier服务采用C# 2.0编写,可支持符合接口规范的通讯组件反射加载。
在Carrier服务中,完成数据的迁移,只需设计一个IDataPicker和IDataPutter配对关系即可(注:采用.NET的Delegate模式,可支持一对多的通讯)
 
场景描述举例:
需求:从Oracle通过存储过程提取数据,并分批放入MSMQ中供Biztalk进行读取
 
组件设计时:
开发一个Oracle数据提取组件(如无特定需求,可使用框架提供的通用Oracle组件);
开发一个MSMQ数据写入组件(如无特定需求,可使用框架提供的通用MSMQ组件);
将以上两组件通过配置文件配入Carrier管理组件列表,设定两者的订阅关系
组件运行时:
CarrierService服务启动;
读取服务配置;
反射加载IDataPicker和IDataPutter;
绑定两者,实现消息订阅;
实现IDataPicker的基类BaseDataPicke开始按配置进行通用Timer预定;
实现IDataPicker的OraclePicker组件被触发并提取数据;
通过订阅关系送到IDataPutter基类BaseDataPutter;
BaseDataPutter做通用数据处理;
将数据传递给实现IDataPutter的MSMQPutter;
MSMQPutter写入数据;
写入成功后通过Delegate 调用通知OraclePicker做数据发送成功的后处理;
一次基本通讯任务完成;
开发数据提取组件,只需继承BaseDataPicker并实现LoadData()装载数据方法和DataProcessed()数据处理完后的对源数据处理的方法即可;
注:如无对源数据后处理的需求,可忽略DataProcessed();
 
开发数据写入组件,只需继承BaseDataPutter并实现ProcessData ()方法即可;
 
成对的DataPicker和DataPutter也可加入自定义的双方约定的数据格式和处理方法,甚至是业务逻辑。
 
将编译完的新通讯功能组件配置到服务配置文件中,即可被Carrier服务加载和调度;
Carrier Service配置包括三部分
Section/sectionGroup
功能
备注
ServiceRunTimeConfig
服务器运行时全局参数
用于定义供服务器在运行时使用的全局参数
sectionGroup:Pickers
Picker组件组
用于被Service动态加载的一组Picker对象定义
sectionGroup:Putters
Putter组件组
用于被Service动态加载的一组Putter对象定义
 
 
Section/sectionGroup
参数
功能
示例
ServiceRunTimeConfig
ReLoadDataInterval
当Picker数据源一次调用未取完时重新加载数据的时间间隔,单位为毫秒
15000
 
BindingDelay
为控制多组件同时加载而对多于一个的组件进行延迟绑定的间隔时间,单位为毫秒
20000
sectionGroup:Pickers
AssemblyFileName
由Servier反射加载的Dll名称,如采用GAC全Namespace加载时可为空
D:/abc/DataPicker.dll
 
ClassName
由Servier反射加载的实例类名,与AssemblyFileName配合使用时参照示例A,单独使用并从GAC加载时参数示例B
A: Microsoft.Carrier.DataPicker.FilePicker
 
B:
Microsoft.Carrier.DataPicker.FilePicker,DataPicker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=807afa15f38659be
 
TimeInterval
每隔指定时间就定时触发,单位为分(支持小数)
0.5
 
FixedTime
每天指定触发时点触发,单位为分(支持小数)
注:只有TimeInterval<=0时才会使用此方式触发
22:00
 
SourcePath
数据源位置,可用于存放如File位置,数据库连接,MQ位置等,由Picker自行决定使用方式
D:/data/
 
SourceTag
数据提取标记,可用于指定标签、指定文件通配符、SQL 查询等,由Picker自行决定使用方式
*.xml
 
DestinationObject
此Picker获取数据对象后传送数据的目标对象,格式为Putters组/目标Section名
Putters/Vehicle_Putter_MQ
sectionGroup:Putters
AssemblyFileName
由Servier反射加载的Dll名称,如采用GAC全Namespace加载时可为空
D:/abc/DataPutter.dll
 
ClassName
由Servier反射加载的实例类名,与AssemblyFileName配合使用时参照示例A,单独使用并从GAC加载时参数示例B
A: Microsoft.Carrier.DataPicker.FilePutter
 
B:
Microsoft.Carrier.DataPutter.MQPutter,DataPutter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=807afa15f38659be
 
DestinationPath
数据目标位置,可用于存放如File位置,数据库连接,MQ位置等,由Putter自行决定使用方式
linnet/private$/test008
 
DestinationTag
数据存放标记,可用于指定标签、MQ地址、SQL 表名等,由Putter自行决定使用方式
MQPutterData
 
RetryCount
数据发送失败时的重试次数
5
 
RetryInterval
数据发送失败时的重试间隔,单位为分
1
 
FullQueuing
是否将所有数据都进行队列化发送,而不仅是错误数据(有新数据到达时,不是直接发送,而是先进入发送队列,等待发送队列的调度统一发送)
true
 
a.       拷贝Adapter Server文件到目标位置,如d:/microsoft/Adapter下
b.      进入命令行模式,转换当前目录到d:/microsoft/Adapter下
c.       通过命令行方式执行
%windir%/Microsoft.NET/Framework/v2.0.50727/installutil carrier.exe
注:也可直接通过.NET命令行运行installutil
a.       进入命令行模式,转换当前目录到d:/microsoft/Adapter下
b.      通过命令行方式执行
%windir%/Microsoft.NET/Framework/v2.0.50727/installutil carrier.exe /u
注:可通过不带任何参数的installutil 命令行查看installutil的详细参数说明
安装成功后可通过管理工具 à计算机管理 à服务和应用程序 à服务中进行服务的监控和管理,服务名为Carrier Service
 
Carrier服务的配置为Carrier.exe.config文件,位于与Carrier.exe相同的文件下,通过配置参数,可以完成由Carrier动态加载不同的Picker/Putter组件,完成不同业务数据提取的功能。进行配置更改后,要通过管理工具 à服务对服务Carrier Service进行重新启动。
配置项参见2.2
 
Carrier服务由于要在运行时创建和访问网络资源,可能需要为其指定一个具有相应权限的账号。具体设置方法如下:
管理工具 à计算机管理 à服务和应用程序 à服务找到服务名为Carrier Service的服务
双击或右键属性,打开属性对话框,点击登录
选择此账户,点击浏览为其设定一个具有对应网络资源权限的用户
 
 
服务会在运行时事件发生时记录以下事件:
顺序
事件
说明
服务将要启动时
Service Starting
服务开始启动
服务启动成功
Service Started
服务启动成功
加载Picker/Putter组件
Load Object:
Picker Count: X
Putter Count: X
服务已经从配置文件中加载了业务对象
绑定组件Picker/Putter组件(此事件会按组件加载的个数有所不同)
Binding Succeed.
Picker:XXX
Putter:YYY
服务已经将此组业务对象成功进行了运行时绑定,Picker所获取的数据将被Putter订阅和接收
服务将要停止时
Service Stoping
服务将要被停止
服务已经正常停止
Service Stoped
服务已经被正常停止
 
除此之外发生的警告和错误日志,都为系统异常时记录的日志项,需查看错误原因,有针对地解决。
可通过计算机管理 à服务和应用程序 à服务中进行服务的监控和管理,服务名为Carrier Service,可设置服务的启动方式、启动、重启和停止服务。
 
参见3.2
原Delphi的Transceiver相关文档:

通讯和数据交换服务器Transceiver 自述文件
http://blog.csdn.net/redbirdli/archive/2004/09/02/92407.aspx

用Delphi建立通讯与数据交换服务器—Transceiver技术剖析
http://blog.csdn.net/redbirdli/archive/2004/06/09/11239.aspx
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值