【问题标题】:Progress 4GL and .Net进步 4GL 和 .Net
【发布时间】:2010-01-18 14:26:17
【问题描述】:

我正在尝试将数据从 Progress 4GL 数据库中提取到 SQL Server 中。

理想情况下,我希望直接在 .NET 中执行此操作,而不是通过 ODBC 驱动程序,因为正在进行中的 ODBC 驱动程序网关不支持多核(至少在我们拥有的版本上)。

您知道如何从 .NET 连接到 Progress 4GL 数据库(理想情况下使用 C#,但我在这里很灵活...;))?

干杯

尼克

【问题讨论】:

    标签: c# .net progress-4gl


    【解决方案1】:

    如果您使用 Progress OpenEdge 10.2 或更高版本,您可以将 .NET 控件直接嵌入到 4GL 程序中。但这就像用大锤打苍蝇一样…… 即使不是 Progress 4GL(编程语言)也是单线程的,并且不支持多线程 .NET 控件。

    4GL 和 SQL-92 db 引擎(Progress 支持 2 个不同的存储引擎接口)都是多线程的,并且非常乐意利用尽可能多的内核。

    但是,您可能有许可限制——“工作组”许可在 v9 和早期 v10 中使用基于信号量的并发算法。 (后来的版本使用非常有限的互斥锁(自旋锁)。)“企业”数据库没有这样的限制。

    或者可能是目标系统根本没有设置为支持多个 ODBC 连接(数据库管理员应该知道,关键参数是 -Mn、-Ma 和可能 -Mpb)。

    如果我这样做,我认为我只是通过针对不同数据段启动多个会话来伪造多线程访问。

    【讨论】:

    • 嗯.. 我喜欢“针对不同细分市场的多个 ODBC 会话”的想法。没想到……干杯!
    【解决方案2】:

    如果您使用 Java+JDBC 驱动程序会更容易,从 JDBC 使用 OpenEdge DB 相当简单。

    不确定 MS-SQL Server,但 MySQL 有一个数据库迁移,它可以通过 JDBC 愉快地连接到 OpenEdge 并为您导入选择或所有表。

    我一直发现 Progress ODBC 驱动程序在使用 .NET 时存在错误和麻烦,我尽可能避免使用它们。

    您还可以使用应用服务器,尽管这同样糟糕,它是单线程的,并且您对多线程访问的连接限制有限。如果您确实选择此选项,请设置无状态服务。

    【讨论】:

      【解决方案3】:

      我迟到了,但我觉得建议一些东西可能有用...

      您可以使用 .NET 编写业务逻辑,并使用 OpenEdge Open Client 代理插入您的数据。如果您在代理周围构建了一个很好的边界(数据访问)层,并且代理只是提取 .NET 中的 BL 将使用的数据,那么在某些时候您应该能够将其交换出去。如果您现有的应用程序庞大而笨重,这将使其难以分层,这将更加困难。这也假设您正在使用 Progress Appservers。

      如果您不使用应用服务器,那么您仍然可以在 .NET 中编写数据访问权限,并将其包装在一组可调用的包装器中……这些可以直接从您的 4GL“客户端代码”中调用。在这种方法中,迁移到 SQL Server 会有点困难,但是,它可能会朝着您想要的方向前进。

      祝你好运!

      【讨论】:

        【解决方案4】:

        我知道这是一点的线程死灵术,但如果某个可怜的灵魂正在寻找答案,这就是我使用 CQRS 和 .NET 的方法。

        • 我编写了 Progress 命令和查询来执行我们的数据操作。
        • 通过调用命令或查询调度程序从 .NET 访问命令和查询
          • 可从 Webspeed 服务器访问调度程序。
          • 调度程序获取命令或查询名称和表单数据。
          • 调用了命令或查询名称,并且对于查询调度程序,期望返回一个临时表句柄。
          • 当查询返回临时表句柄时,查询调度程序将其内容以 JSON 格式写入网络流。

        一旦我们可以使用 JSON,数据访问就变得快速且多线程。

        【讨论】:

          【解决方案5】:

          当您想将数据迁移到 Microsoft SQL Server 时,首先应该查看SQL Server Integration Services。如果您想在 .NET 中编写转换规则,请查看Npgsql provider。它甚至支持ADO.NET Entity Framework,因此开发迁移应用程序应该很容易。

          【讨论】:

          • 感谢您的及时回复,但我不确定 NpgSql 提供程序是否会帮助 PostGres,而不是 Progress..... ;)
          • 我把它读作 Postgres ... 只需编辑您的问题 ... :D 由于 4GL,我已经暂停了。
          【解决方案6】:

          我很晚才回答这个问题,但如果有人想要这样做,我会直接使用 opensge 中的 sqldump 实用程序。将表格的内容直接转储为文本。非常快。您还可以使用其他工具转储结构,然后您可以编写代码来查询结构文件,并将文本文件中的数据加载到您的 SQL 表中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-07-06
            • 2022-06-10
            • 2013-08-28
            • 2014-07-04
            • 2012-05-07
            • 2010-09-27
            • 2012-10-02
            相关资源
            最近更新 更多