微软.NET助Infosys多种业务产品环境迁移
[导读]公司拥有一个非常成功的 Internet 银行业务解决方案,并希望把这个解决方案提供给尽可能广泛的企业客户。
随着 Microsoft .NET 技术的问世,Infosys 希望使 Finacle eChannels/Finacle eCorporate(其 Internet 银行业务解决方案)可以在 Microsoft .NET 环境中使用。目前,该产品基于 J2EE 和 .NET 软件,拥有相似的应用程序体系结构和设计。根据客户反馈和当前趋势,Infosys 不断改进其产品并向产品中添加新特性,因此几乎每个季度都会推出新版本。公司现在可以应对在几天之内开发出分别运行于 J2EE 和 .NET 环境的新版本的挑战。这个自动迁移过程确保了可以对两个版本的产品进行相同的功能和非功能性测试,从而避免了重复性工作。
背景
Finacle eChannels 是一个基于组件的消费者电子银行业务解决方案,具有全面的零售银行业务功能,解决了电子帐单呈递和支付(EBPP)问题。该解决方案使银行能够通过电子渠道――如 Internet 和移动技术(WAP 和 SMS)――为零售客户提供始终如一的体验。同时,为银行提供了强大的功能,使他们能够提供全套服务,并能够从单一控制点来管理这些服务。
Finacle eChannels 构建在领先、开放的技术之上,充分利用了行业标准协议和方法,无缝和轻松地与多种后台办公系统进行连接。该解决方案提供了对于多种产品的单点访问,是一个面向银行零售客户的综合金融服务解决方案。
该解决方案支持跨渠道的综合零售银行业务,包括在线资产负债表、交易、报表下载、查询和各类帐户的详细税款信息,并支持在客户自己持有的帐户之间、同一银行的两个帐户之间、不同银行的两个帐户之间的各种多币种交易。所有这一切都遵守银行所规定的限制条约。同时,该解决方案还具有支持智能帐单格式的广泛的 EBPP 功能,并且可以使用多种语言。
该解决方案还支持公司银行业务,如:帐户管理、资金转帐、限制管理、多级企业工作流和请求管理。除此之外,其还支持广泛的贸易金融产品,如:信用证、银行担保、EXIM 帐单、期货合同、批量文件上载和工作流管理,外加数字证书和基于令牌的安全性。
Infosys 希望在 J2EE 和 Microsoft .NET 技术之上提供其银行业务解决方案,以便使客户能够根据其现有基础结构和未来发展蓝图选择适当的技术。客户需要在任何位置都能灵活地在这两者之间进行切换。但是由于这是一个正在不断发展的产品,Infosys 不希望在 J2EE 和 .NET 环境中进行重复开发,而希望获得一个无缝迁移过程。
解决方案
Microsoft 咨询服务部协助制定计划
Infosys 与 Microsoft 咨询服务部(Microsoft Consulting Services,MCS)紧密合作,共同规划和设计 Finacle eChannels/Finacle eCorporate 的迁移过程。来自 MCS 的团队对现有解决方案进行了认真调查和研究,在 J2EE 体系结构和 .NET 体系结构中的每一层之间建立了对应关系。Servlet 被映射到 Microsoft IIS HTTP 处理器;JSP 页被映射到 ASPX 页;EJB 类被映射到 .NET 远程组件。
其关键目标之一是,确保在对现有体系结构改动最小的情况下,获得在 Microsoft .NET 环境中尽可能最佳的解决方案。
迁移过程
这是一个完全由工具驱动的迁移过程,使用了 Microsoft Java Language Conversion Assistant(Java语言转换助手,JLCA)。JLCA 尝试把任何可编译的 Java 类转换成 C# 类。然而,这个转换过程不能保证 100% 完全可编译的 C# 代码。这是因为对于某些 Java 类型和类来说,在 .NET 环境中没有对等的类型。因此,程序设计人员必须在这个环境中手动寻找对等类型,并进行修复。
由于在现有环境中有数千个类,Infosys 希望进一步降低手动转换过程的标准。在 .NET 环境中编译的一个类在运行时环境中可能会出现错误,因为在 Java 运行时与 .NET 运行时环境中的类型和语义彼此不匹配。例如,Java 中的日期类在 .NET 环境中可能拥有不同的范围。如果代码为 Java 假定了一个日期范围,那么在所生成的 C# 类中必须进行适当更改,以实现正确的运行时行为。
开发小组决定编写一组基于规则的过滤器,以修复 Infosys 产品通常产生的编译器和运行时错误。Infosys 开发了两种类型的过滤器。某些问题需要过滤器在输入 Java 类上运行,因此 JLCA 将转换成可编译的 C# 代码;另外一些时候,可能需要在转换过程后修复错误。
JLCA 不能把 JSP 页转换成 ASPX 页,因为 JSP 是由 HTML 内容组成,在内容之间嵌入了 Java 代码。由于该 Java 代码不在类中,不能使用 Java 编译器直接编译,JLCA 不能进行任何转换。然而,开发小组发现,所有 JSP 页都位于现有产品的一个标准模板中。JSP 页中的大部分 Java 代码都是对数值对象类的调用;极少代码属于 Java API 调用。
JSP 页使用 JSP-Tag 库来减少在该页中编写的内嵌 Java 代码的数量。通过使用对等的 .NET 技术调用替换 Java 特定调用,并把 JSP-Tag 库调用扩展到内嵌 C# 代码块,可以使用相同的基于规则的过滤器工具把 JSP 页转换成 ASPX 页。
开发时间和工作
尽管 Infosys 产品提供了广泛的特性和服务,并且本身属于非常复杂的产品,由于 Microsoft 咨询服务部和 Infosys 遵循了这一过程,J2EE 版本迁移到 Microsoft .NET 解决方案只动用了 6 个人,花费了 8 周时间!此外,该产品的任何新版本都可以在大约两周内从 J2EE 迁移到 .NET 环境。





![[图]黑莓BB10系统主屏界面抢先看:MeeGo泪流满面](http://img.bbs.chinabyte.com/data/attachment/forum/201205/15/204553bbsbyasz3k3kahn6.jpg)





