从.NET与AS400(IBM i)通信时的最佳实践

Rir*_*iri 6 .net ibm-midrange

在基于现有AS400的系统之上构建基于.NET的报告解决方案时,我需要一些关于重要和最佳实践的帮助.

  • 什么是最适合的集成技术(ODBC,OLE DB,ADO.NET),这取决于我们所谈论的AS400版本?它始终是DB2数据库还是变化的?通常使用什么其他持久性系统?
  • 是否可以在大型机中调用其中包含逻辑的程序,或者最好在.NET层中复制该逻辑,然后直接调用大型机DB?
  • 我想报告系统应该在线并直接调用大型机数据库,还是有其他方式(例如文件导出等),这是首选的?
  • 在启动项目(AS400版本等)之前要了解哪些技术细节很重要,以消除问题.

基本上我对.NET/AS400项目的所有信息和经验感兴趣(并将投票).我以前从未做过,需要在项目开始之前了解陷阱.

smi*_*man 2

如果您不熟悉 OS/400,请做好迎接陡峭学习曲线的准备。尝试通过使用本地 AS/400 向导来减少痛苦,这对于编写奇怪的 CL 程序、获得授权等都是必不可少的。

就我个人而言,我始终使用 Client Access 提供的 ODBC 驱动程序,但仅用于只读。我无法证明这一点,但是十年的 AS/400 编程经验告诉我,尝试从 AS/400 外部更新 AS/400 数据库是一个坏主意。

确实可以从 .NET 应用程序调用 AS/400 CL 程序,并且如果业务逻辑已经在那里编程,那么使用它就有意义;在 .NET 中重新发明它成本高昂、容易出错并且速度会慢得多。

报告的消息相同:如果可能,请使用现有的消息。

需要注意的事项(其中一些可能已经过时):

DB2 SQL 与其他 SQL 方言有许多细微的差别。许多 DBMS 会接受

SELECT X, Y FROM A, B WHERE A.T=B.T
Run Code Online (Sandbox Code Playgroud)

相当于

SELECT X,Y FROM A INNER JOIN B ON A.T=B.T
Run Code Online (Sandbox Code Playgroud)

DB2 可能会也可能不会看到它,具体取决于表。如果不这样做,前者可能会非常慢。也就是说,如果您遇到性能问题,可以使用一些非常灵活的工具来分析 DB/2 查询计划;您需要 AS/400 向导才能使用它们,因为它们有点晦涩难懂。

如果您处于国际环境中,则需要小心处理代码页。确保所有AS/400 具有相同的系统代码页。

如果您处于多 AS/400 设置中,请注意可以透明地访问本地和远程表(通过直通)。

OS/400 有着广泛的向后支持的悠久历史。通常,您根本不必担心版本,只要您正在谈论的所有 AS/400 都在同一主要版本上即可。这也是一个非常稳定的平台;操作系统错误非常罕见并且很快就能修复。

如果您可以管理它,请以特权访问测试系统*ALLOBJ。这将使您能够专注于手头的问题并稍后处理安全问题。

华泰