1

我有一个有趣的难题。我一直在寻找最适合为TigerLogic/Pick D3环境中构建的现有多用户应用程序创建“浏览器前端”的流程。我的研究表明有很多方法可以做到这一点;但我正在努力决定哪种方法最好或从哪里开始。我已经用一些技术“玩”了,但是需要一个人的承诺才能开始。为TigerLogic D3 DB应用程序创建浏览器前端

这些方法包括:

  • 使用MVS工具包一个复杂的web服务的创建;并从头开始或使用maven/wsimport从WSDL构建客户端。测试表明,对于这个过程,还有很多比原来简单的WSDL更多的东西。
  • 开发基于Java的Web应用程序,利用MVSPJavaAPI - 我不是一个JAVA开发人员,所以这意味着学习一种新的语言。开发很可能发生在Eclipse中。
  • 使用TigerLogics FlashCONNECT - 导致额外的支出给客户,所以不是优选 - 并且或多或少地统治

还有.NET选项 - 但我已经排除了需要可移植性的基础。

我的问题是,有没有其他人做过这样的事情,你能分享你的经验吗?我的第一个任务是构建一个web应用程序,它可以在我可以自定义的浏览器中可靠地给我提供D3 TCL提示。

我不确定这里有一个明确的答案,但希望人们的想法,并将标签最有用的答案。

回答

0

您选择的路径取决于您现有技能集的某些部分以及是否符合您的可移植性需求。由于不知道链条的哪一部分需要可移植性,因此很难为您提供具体的答案。

然而,使用.NET可以在Linux或Windows上运行,从而开发一个Web浏览器前端,所以我在这里看不到可移植性的问题。您的Web服务器必须基于Windows,但D3在服务器端的Linux或Windows上运行还是客户端桌面在运行Linux或Windows都无关紧要。

您可以尝试TigerLogics MVSP .NET API,但我不知道它是否有权根据您的需求进行交付。我相信你会发现mv.NET from Bluefinity可以满足你的需求。在我看来,这是MultiValue市场上实现您的目标的主要产品。这将意味着花钱当然。为此,您将获得一组非常强大的工具。另外,投资一个好工具的成本最终可能会比花费在时间,精力和潜在复杂性方面的成本要小得多。我相信Flashconnect也会完成这项工作。您将不得不权衡不同选项的成本,从技术上和财务上找出哪一种适合您。

不知道您的技能集中是否包含.NET,我不知道.NET选项是否会更容易。然而技术上可行。

+0

感谢您的意见Glenn。我们的D3安装主要是基于Linux(CENTOS)的,我希望网络服务器能够在同一台机器上运行......所以一切都很整洁,用户可以通过浏览器使用专用端口来跳转。因此排除.NET。 – user1682651 2013-03-13 15:38:37

+0

Glenn您对MVS Toolkit/WSDL选项有什么意见吗? – user1682651 2013-03-13 15:40:03

+0

另外,我并不热衷于重视MS的前景 - 因此是浏览器前端策略。 – user1682651 2013-03-13 15:43:00

0

我会建议使用Rocket的D3(以前称为TigerLogic D3)。NET API,并创建一个Web API RESTful服务,您可以在任何其他Web技术中使用JavaScript,并且如果需要从D3子例程调用(如果您愿意),请使用MVS Toolkit。

要求虽然是D3 9.0或更高版本。

0

我已经使用了所有描述的技术,还有更多与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