在当今世界,无论是公司还是开发者,每天都需要与数据打交道。然而,数据往往并不总是位于正确的位置,或者格式并不总是适合使用。开发者必须花费大量时间构建数据处理和集成程序,以将数据移动到不同的地方,清洗和过滤数据,将数据包装在业务规则中,通常需要将数据转换为对公司有价值的可用信息。如果需要定期自动化这个过程,情况会如何呢?
当然,完成这些任务的方法有很多,但许多方法要么非常缓慢和繁琐,要么成本过高,以至于几乎无法考虑。许多开发者通过使用SQL脚本手动编码大部分工作,或者他们使用MS Access数据库来链接其他数据源的表,最终却遇到了工具的限制。另一种选择是购买昂贵的集成工具,如Webmethods™或Informatica™,这些工具的成本可能超过10万美元,却发现将其集成到自己的自定义应用程序中非常困难或不可能。
简而言之,开发者希望易于使用,并且能够完全灵活地将任何解决方案无缝集成到他们自己开发的自定义应用程序中。数据集成应该是一个非问题,构建它然后忘记它。
Visual Integration Studio是一个强大的数据集成、ETL(提取、转换和加载)和过程自动化工具。它是那些提供无限用途的罕见软件工具之一,为.NET开发者节省了大量手动编码数据集成任务的时间。使用Visual Integration Studio,可以将数据从任何数据源集成到任何数据源,并使用标准的VB.NET代码来转换数据。Visual Integration Studio也是唯一提供3种不同部署选项的数据集成工具:.NET可执行文件、.NET组件(dll)和数据处理作业的实际VB.NET源代码。这正是Visual Integration Studio的真正力量和价值所在,为.NET开发者提供了完全的灵活性。
Visual Integration Studio提供了一个强大的可视化设计工作室,允许简单地拖放数据源和元素,从任何数据源到任何数据源,并在必要时编写代码来转换数据。还可以混合不同数据库或文件中的数据,并通过使用关键列将数据源连接在一起。
数据源对象是通过使用熟悉的属性窗口来定义的,许多属性提供了一个助手对话框窗口,以帮助定义属性。下面的设计是将产品主信息加载到哈希表(一个快速的内存查找表)中,然后加载引用产品主数据的销售数据,以获取产品的描述和成本等额外信息。然后,该作业将数据加载到SQL Server数据库中,以供企业门户系统使用。注意,还将异常数据过滤到文本文件中,以便以后查看。
一旦作业被设计并且所有数据对象都被定义,只需将列级数据元素拖放到它们的输出目的地。注意正在映射销售信息表和产品哈希查找表的列。(参考.COST)。这是通过使用定义的PRODUCT_ID键来实现的。
如果这仅仅是一个数据映射工具,那本身就非常强大了,但如果在处理过程中需要以某种方式转换或更改数据呢?不仅如此,而且拥有.NET框架的全部力量!每个数据源中的每个输出列都包含一个代码后窗口,允许使用标准VB.NET源代码以任何可能的方式转换数据。也可以使用VB.NET过滤数据。
灵活性是Visual Integration Studio的关键。可以将任何作业设计编译成真正的.NET可执行文件,可以完全自动化它,或者也许想将这个作业打包成一个可重用的.NET组件(.dll),并直接从自己的自定义应用程序中引用它。.NET框架的一个伟大之处在于它的语言独立性,可以从任何VB.NET、C#或ASP.NET应用程序中引用.NET组件,完全摆脱Visual Integration Studio。当然,使用Visual Integration Studio构建的任何组件都是运行时免版税的。
当将作业设计编译成.NET可执行文件时,它会自动存储在Visual Integration Studio存储库中,可以随意运行它,停止它,查看日志文件,甚至实时监控作业。实际上可以观看数据流经过程,并监控每秒记录等统计信息。在专业版和企业版中,Visual Integration Studio服务器和存储库可以位于一个功能强大的基于服务器的系统上,它们可以被批量处理成一个复杂的过程,并通过使用Visual Integration Studio Scheduler服务来自动化。
当将作业编译成.NET组件时,拥有与作业控制窗口中相同的所有功能。可以运行、停止或重置作业,查看日志文件,甚至通过代码监控它们。例如,假设设计了一个名为ExportBudget的作业,将其编译成.NET组件。要运行作业,只需要在应用程序中引用该组件,创建作业的类对象的实例,并调用RunJob方法。还可以在同一线程或后台线程中运行作业,让应用程序继续进行。
[Visual Basic .NET]
Public Sub RunMyJob()
Dim js As ExportBudget.CRJobStatus
Dim myExportBudgetJob As ExportBudget
myExportBudgetJob = New ExportBudget()
myExportBudgetJob.JobPaths.JobStatusFileName = "ExportJobStatus.xml"
myExportBudgetJob.RunJob()
js = myExportBudgetJob.GetJobStatus()
If Not (js Is Nothing) Then
MsgBox("Job is done, Status: " + js.JobStatus.ToString)
Else
MsgBox("Job is done")
End If
End Sub
[C#]
private void RunMyJob()
{
ExportBudget.CRJobStatus js;
ExportBudget myExportBudgetJob;
myExportBudgetJob = new ExportBudget();
myExportBudgetJob.JobPaths.JobStatusFileName = "ExportJobStatus.xml";
myExportBudgetJob.RunJob();
js = myExportBudgetJob.GetJobStatus();
if (js != null)
{
MessageBox.Show("Job is done, Status: " + js.JobStatus.ToString());
}
else
{
MessageBox.Show("Job is done");
}
}
很多时候,希望直接与Visual Integration Studio服务器本身交互。基于服务器系统的好处是,Visual Integration Studio作业通常会在服务器上运行得更快,服务器应该位于数据库服务器附近,就在数据中心。有了服务器组件,应用程序可以只用几行代码就可以连接到Visual Integration Studio服务器,可以运行作业并监控它们。有了服务器组件,可以为应用程序构建一个特定的作业控制窗口,并使用户能够自己运行和监控作业!
[Visual Basic .NET]
Imports CRFramework.VISControls
Dim VIS As VISServerControl
VIS = New VISServerControl()
VIS.UserName = "administrator"
VIS.Password = "manager"
VIS.ServerName = "myserver.mycompany.com"
'
DNS or TCP/IP address to the
'
VIS Server
VIS.Connect()
VIS.RunJob("myJob", "SharedDomain")
[C#]
using CRFramework.VISControls;
VISServerControl VIS;
VIS = new VISServerControl();
VIS.UserName = "administrator";
VIS.Password = "manager";
VIS.ServerName = "myserver.mycompany.com";
//
DNS or TCP/IP address to the
//
VIS Server
VIS.Connect();
VIS.RunJob("myJob", "SharedDomain");