我已经使用了所有描述的技术,还有更多与D3接口。我同意@Glenn并将添加...我知道你正在加速从.NET。没关系,你不需要它。但考虑到大多数LAMP实现将DBMS服务器与Web服务器分开。该拓扑结构在层之间引入了短暂的延迟,但在需要使用多个Web服务器或多个数据库的情况下将它们分离 - 即使使用D3/MV也是常见的拓扑结构。
我有一个客户端,我们在Linux上有一个Java/Grails前端,所有数据查询都通过一个从应用程序逻辑中抽象出来的优雅的数据提供程序类来过滤。这使用我在Java中编写的Web服务调用,调用.NET Web服务。该服务很容易生成/修改,就像WSDL的客户端一样。从那里,IIS通过mv.NET将入站查询传送到D3,此时,D3 DBMS是在Linux还是Windows中并不重要。我的Web服务可以像使用Java一样容易地在Linux上运行,但它会缺少一个池化机制 - 参见下文。
如果你想要所有的Linux,那么你可以使用MVSP Java库。 TigerLogic(现已被Rocket Software收购)几个月前承诺为MVSP绑定PHP。我的一个客户并没有等待,而是围绕mv.NET创建了一个PHP包装器,尽管MVSP非常简单。所以得到的应用程序本质上是LAMP,但是具有M =多值。我也编写了这样的代码 - 我们可以使用任何暴露有用API的语言编写包装器,并抽象出连接方法和操作系统依赖关系。换句话说,我们想要使用哪种语言或涉及哪些操作系统并不重要。这部分是相当微不足道的,稍后会有所改变。关注应用程序比通信更好。
您也可以跳过菜单,也就是说,在OS级d3tcl命令周围创建自己的Java/PHP包装器,该命令是d3可执行文件的脚本/包装器。这使您可以自己打开连接并传入命令。
无论您选择什么选项,您都需要考虑打开和关闭DBMS连接是一个缓慢的过程。您不想在每个数据请求周围编写脚本。您希望打开一个连接并持续打开连接,而您的客户端代码根据需要访问并释放该持久连接。这就是我们喜欢mv.NET和FlashCONNECT的原因。借助MVSP和其他机制,您需要创建自己的持久性模型。您还需要管理一组连接资源 - 当您同时收到10个查询时会发生什么情况,或者只有一个长时间的查询后会发生什么?您不希望查询备份,您不想拒绝或超时连接,并且您不希望为每个客户端启动连接。您确实需要正确数量的DBMS会话来等待入站连接。 mv.NET和FlashCONNECT为你做这件事,其他人不这样做。
就我个人而言,我会回避FlashCONNECT。我在那里进行了最初的开发和测试,以及多年的最终用户实施。它不像其他选项那样广泛使用,更适合那些不熟悉其他选项的人使用。如果您正在谈论Java,那么您可能不倾向于使用FlashCONNECT。也就是说,如果您的开发人员不熟悉D3以外的任何内容,那么FlashCONNECT对于他们来说是一个体面的服务器端工具,而其他人则将注意力集中在客户端和其他技术上。每个人都应该使用他们最好的技能。
最后,(已经?)如果有人不熟悉外部技术,并且与D3更亲近,则可以使用其他选项,如DesignBAIS和Viságe,通常可以消除通信负担并允许开发人员在客户端功能和后端规则。
我在my blog上讨论了所有这些话题以及移动和电话。
HTH
感谢您的意见Glenn。我们的D3安装主要是基于Linux(CENTOS)的,我希望网络服务器能够在同一台机器上运行......所以一切都很整洁,用户可以通过浏览器使用专用端口来跳转。因此排除.NET。 – user1682651 2013-03-13 15:38:37
Glenn您对MVS Toolkit/WSDL选项有什么意见吗? – user1682651 2013-03-13 15:40:03
另外,我并不热衷于重视MS的前景 - 因此是浏览器前端策略。 – user1682651 2013-03-13 15:43:00