我在Progress ABL中工作,并使用我们所说的AppServers。应用程序服务器,可以与Progress数据库对话并在服务器上运行业务逻辑的进程,然后将响应发送回客户端。
它们有4种模式,但我最习惯的是状态重置,这是一个在整个连接过程中保留状态的应用程序服务器,它是一种即发即忘模式。
此产品高度专有,可与其他客户端(如.net )兼容。
我的问题是,有没有任何纯.NET的解决方案可以做同样的事情。我不是在谈论做ASP.net或web服务,因为它们解决了不同的问题。我想要一些东西,可以运行代码,可以连接到数据库,并传输回响应,而不是编写我自己的系统。
在AppServer上运行代码的示例。
将变量handleToAppServer定义为handle no-undo。将变量charResponse定义为字符不可撤消。
在服务器hAppServer (输出charResponse)上运行'AppServerProcedure.p‘。
发布于 2009-03-05 00:06:14
我是一个长期的ABL开发人员,我认为这是一个很好的问题。我也使用C#,我喜欢并尊重这两个平台。但是,我从来没有真正理解过,在P4GL中,C#开发人员是如何按照OP的描述和看起来如此简单的方式进行开发的。
上面来自p.marino的响应假设你可以用SP做你想做的事情,这是经常发生的事情,当然,但是我们ABL开发人员习惯于做的事情远远超出了你可以用SQL实现的事情。
因此,如果我想用C#编写业务逻辑并让其远程执行,而不是作为SQL,那么我有什么选择?.NET远程处理、Web服务或.NET企业服务?我不认为它们中的任何一个都像ABL AppServers那样简单,而且除了WS之外,它们似乎都没有太大的吸引力。
(以免我听起来像一个P4GL粉丝,他们的图形用户界面完完全全糟糕透顶,他们的工具令人厌恶,许可费也相当昂贵。我随时都会用C#或P4GL上的Swing来编写图形用户界面。但是远程业务逻辑..。我不是很确定)。
发布于 2009-06-16 15:40:58
Progress应用服务器就像是逻辑的db和ui中立容器。它们独立运行,而不是作为Oracle的一部分,或者作为SQL Server的一部分,或者其他任何东西,并且它们不关心客户端是.NET、Java、WS还是绿色屏幕。它们不需要数据库连接,但如果这对它们来说是合适的事情,它们可以连接。
最初的提问者似乎并不想要这些功能中的大多数,从声音上看,可能会满足于所选数据库中的存储过程。
对于最初的问题,还有一个可能很重要的特性-- Progress程序员喜欢应用程序服务器的真正原因可能是因为它为他们提供了一种单一的编程语言。如果开始使用存储过程,则需要使用与编写UI代码时所用的语言不同的语言。并且每个目标db将具有其自己的语言和要处理的怪癖。
(进度触发器在客户端上运行,而不是在服务器的上下文中运行。所以它们不是很像存储过程。)
发布于 2009-02-05 12:35:07
老实说,我不确定我明白真正的问题是什么。
如果您担心客户端应用程序能够连接到独立的DB服务器,这实际上是一种规范,而不是例外。只需使用任何JDBC/ODBC桥,您就可以在客户机上执行代码,只需将数据移入和移出网络即可。
如果希望在远程服务器上执行逻辑(在命名AppServer上调用过程的示例建议在远程服务器上执行后者),则基本操作是相同的,即使用ODBC连接到DB服务器,并将大部分逻辑移动到存储过程。
(我认为您正在寻找的东西在大多数现代RDBMS中都使用“存储过程”的名称:即,完整的代码单元,无论是函数还是过程,它们都专门在DB服务器本身上运行。它们可以由客户端远程调用,但要使用DB服务器上的内存和计算资源)。
同样,在使用数据库时,这也是一个非常标准的架构选择。Progress ABL/4GL有一个混合范式模型,这可能会让你的观点有点混乱(如果内存服务,APPServers是作为某种无头“超级客户端”运行的进程,并且没有“存储过程”的概念,即除了可能的触发器之外,代码运行在数据库本身中)。
https://stackoverflow.com/questions/486595
复制相似问题