设为首页 收藏本站
查看: 920|回复: 0

[经验分享] Transceiver的.NET新版: Adapter Server数据交换服务框架

[复制链接]

尚未签到

发表于 2016-11-12 05:21:38 | 显示全部楼层 |阅读模式
  原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
内容
1. 系统功能... 3
1.1 设计目标... 3
1.2 环境要求... 3
2. 组件设计... 4
2.1 组件扩展开发说明... 4
2.2 配置文件结构... 5
2.3 配置文件参数... 5
3. 服务安装... 8
3.1 安装方式... 8
3.2 卸载方式... 8
3.3 监控管理工具... 8
3.4 服务配置文件... 8
3.5 服务运行账号... 8
4. 服务管理... 9
4.1 运行监控... 9
4.2 服务管理... 9
4.3 服务卸载... 9



1.系统功能
Adapter Server是用于数据交换的通用Windows服务。可广泛地与Biztalk Server、SSIS等微软产品进行衔接,完成数据提取或预处理任务。通过Adapter Server可将Biztalk Server、SSIS等产品良好支持范围之外的数据形式(如Oracle/DB2/特殊平面文件等)进行快速数据提取和预处理,并转换成更易于项目集成的形式。
Adapter Server提供了一个开放的,易扩展的组件架构模型,参照了Biztalk的Receive Port/Send Port可自由组合完成不同通讯场景的设计思想。自己开发一个通讯组件,只需实现读或写的逻辑,其他的控制功能都由服务器统一管理。
1.1 设计目标
通用的数据ETL服务,高效地提取和迁移数据;
提供多种通讯方式和存取方式(MQ、FILE、DB、FTP、HTTP、SOAP等);
统一而独立的日志管理和错误重试方式;
定点和间隔两种时间预定方式;
轮循与实时提取相结合的数据提取方式;
灵活的可扩展应用模型,易于开发和使用自定义开发的通讯组件;

1.2 环境要求

安装并有效配置以下组件
.NET Framework版本 2.0

2.组件设计
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做数据发送成功的后处理;
一次基本通讯任务完成;
2.1 组件扩展开发说明
开发数据提取组件,只需继承BaseDataPicker并实现LoadData()装载数据方法和DataProcessed()数据处理完后的对源数据处理的方法即可;
注:如无对源数据后处理的需求,可忽略DataProcessed();

开发数据写入组件,只需继承BaseDataPutter并实现ProcessData ()方法即可;

成对的DataPicker和DataPutter也可加入自定义的双方约定的数据格式和处理方法,甚至是业务逻辑。

将编译完的新通讯功能组件配置到服务配置文件中,即可被Carrier服务加载和调度;
2.2 配置文件结构
Carrier Service配置包括三部分
Section/sectionGroup
功能
备注
ServiceRunTimeConfig
服务器运行时全局参数
用于定义供服务器在运行时使用的全局参数
sectionGroup:Pickers
Picker组件组
用于被Service动态加载的一组Picker对象定义
sectionGroup:Putters
Putter组件组
用于被Service动态加载的一组Putter对象定义

2.3 配置文件参数

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

3.服务安装
3.1 安装方式
a. 拷贝Adapter Server文件到目标位置,如d:\microsoft\Adapter下
b. 进入命令行模式,转换当前目录到d:\microsoft\Adapter下
c. 通过命令行方式执行
%windir%\Microsoft.NET\Framework\v2.0.50727\installutilcarrier.exe
注:也可直接通过.NET命令行运行installutil
3.2 卸载方式
a. 进入命令行模式,转换当前目录到d:\microsoft\Adapter下
b. 通过命令行方式执行
%windir%\Microsoft.NET\Framework\v2.0.50727\installutilcarrier.exe /u
注:可通过不带任何参数的installutil 命令行查看installutil的详细参数说明
3.3 监控管理工具
安装成功后可通过管理工具à计算机管理à服务和应用程序à服务中进行服务的监控和管理,服务名为Carrier Service

3.4 服务配置文件
Carrier服务的配置为Carrier.exe.config文件,位于与Carrier.exe相同的文件下,通过配置参数,可以完成由Carrier动态加载不同的Picker/Putter组件,完成不同业务数据提取的功能。进行配置更改后,要通过管理工具à服务对服务Carrier Service进行重新启动。
配置项参见2.2

3.5 服务运行账号
Carrier服务由于要在运行时创建和访问网络资源,可能需要为其指定一个具有相应权限的账号。具体设置方法如下:
管理工具à计算机管理à服务和应用程序à服务找到服务名为Carrier Service的服务
双击或右键属性,打开属性对话框,点击登录
选择此账户,点击浏览为其设定一个具有对应网络资源权限的用户


4.服务管理
4.1 运行监控
服务会在运行时事件发生时记录以下事件:
顺序
事件
说明
服务将要启动时
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
服务已经被正常停止

除此之外发生的警告和错误日志,都为系统异常时记录的日志项,需查看错误原因,有针对地解决。
4.2 服务管理
可通过计算机管理à服务和应用程序à服务中进行服务的监控和管理,服务名为Carrier Service,可设置服务的启动方式、启动、重启和停止服务。

4.3 服务卸载
参见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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298987-1-1.html 上篇帖子: 关于防SQL注入的几点建议 下篇帖子: SQL语句及其关键字总结(四)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表