首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进度4GL和.Net

进度4GL和.Net
EN

Stack Overflow用户
提问于 2010-01-18 22:26:18
回答 6查看 6.3K关注 0票数 1

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

理想情况下,我希望直接在.NET中完成这项工作,而不是通过ODBC驱动程序,因为Progress中的ODBC驱动程序网关不支持多核(至少在我们现有的版本上是这样)。

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

干杯

尼克

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-18 23:42:50

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

4GL和SQL-92db引擎(Progress支持两种不同的存储引擎接口)都是多线程的,并且完全可以利用您拥有的任意多个内核。

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

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

如果我这样做,我想我只是通过对不同的数据段启动多个会话来假装多线程访问。

票数 3
EN

Stack Overflow用户

发布于 2010-02-05 14:07:58

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

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

我总是发现Progress ODBC驱动程序在.NET中存在缺陷和麻烦,我尽可能地避免使用它们。

您还可以使用app-server,尽管这很糟糕,但它是单线程的,并且对多线程访问有一个有限的连接限制。如果您选择此选项,请设置无状态服务。

票数 1
EN

Stack Overflow用户

发布于 2011-02-22 21:34:53

我来晚了,但我想提点建议可能会有用...

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

如果你没有使用应用程序服务器,那么你仍然可以用.NET编写你的数据访问,并将它包装在一组可直接从4GL“客户端代码”调用的com-callable wrappers...these中。在这种方法中,迁移到SQL Server会有点困难,但它可能会让您朝着您想要的方向发展。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2086638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档