数据集成解决方案探讨

 数据集成是企业应用集成中的主要工作内容之一,其主要难点在于:

1.数据源格式千差万别;

2.数据转换过程复杂;

3.要求非侵入性;

4.工作量庞大;

笔者结合自己在数据集成方面的开发和应用经验,参考市场上部分数据集成工具产品,推荐本数据集成解决方案,供同行探讨:

上述方案中:

1.DAO_output组件负责将源数据以xml文件的形式输出;

2.DAO_input组件负责将xml文件解析后存储到目标数据库中;

3.Compiler编译器负责将用户定义的xsl样式表文件载入,并将源xml文件转换成目标xml文件,实现数据转换过程与数据转换逻辑的解耦合;

自动化方面:

1.源数据以xml形式输出,可实现自动化和无人值守(多种高级开发语言支持);

2.xsl文件能够实现复杂的自定义转换及编程功能扩展(http://www.ibm.com/developerworks/cn/xml/x-xsltext/?S_TACT=105AGX52&S_CMP=tag-csdn);

3.目标xml完全可以定义为对象序列化格式,直接由DAO_output组件进行对象组装后实现批量存储操作.

采用Saxon.Api的C#编译器实现:(Saxon.Api下载地址:http://www.saxonica.com/index.html)

 

using System;
using System.Text;
using Saxon.Api;
namespace Design
{
    class Sample
    {
        public Sample()
        {
            try
            {
                // Create a Processor instance.
                Processor processor = new Processor();
                // Load the source document
                XdmNode input = processor.NewDocumentBuilder().Build(new Uri(@"D:/DAI/Project/bin/Debug/books.xml"));
                // Create a compiler
                XsltCompiler compiler = processor.NewXsltCompiler();
                // Compile all stylesheets
                XsltTransformer transformer = compiler.Compile(new Uri(@"D:/DAI/Project/bin/Debug/books-csv.xsl")).Load();
                // Now run them in series
                //XdmDestination results1 = new XdmDestination();
                transformer.InitialContextNode = input;
                XdmDestination results = new XdmDestination();
                transformer.Run(results);
                Console.WriteLine("After phase:");
                Console.WriteLine(results.XdmNode.OuterXml);
            }
            catch (DynamicError e)
            {
                Console.WriteLine(e.Message);
                //e.ErrorCode;
                //e.IsWarning;
                //e.LineNumber;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        static void Main()
        {
            Sample s = new Sample();
            Console.Read();
        }
    }
 }

 

 

 

 

 

 

 

 

 

 


 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值