为TigerLogic D3 DB应用程序创建浏览器前端

时间:2013-03-13 14:29:18

标签: web-services web-applications browser multivalue-database pick

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

这些方法包括:

  • 使用MVS Toolkit创建复杂的Web服务;从头开始或使用maven / wsimport从WSDL设计客户端。测试表明,对于简单的WSDL,此过程还有很多内容。
  • 开发基于Java的Web应用程序,利用MVSPJavaAPI - 我不是JAVA开发人员,所以这意味着学习一门新语言。开发很可能发生在Eclipse中。
  • 使用TigerLogics FlashCONNECT - 为客户带来额外支出,因此不太可取 - 并且或多或少已经统治了 进行。

还有.NET选项 - 但我已基于需要可移植性来排除这一点。

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

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

3 个答案:

答案 0 :(得分:0)

您选择的路径在某种程度上取决于您现有的技能组合以及是否符合您的便携性需求。由于不知道链条的哪个部分需要可移植性,因此很难给出具体的答案。

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

您可以尝试使用TigerLogics MVSP .NET API,但我不知道它是否有能力根据您的需求提供。我相信您可能会发现mv.NET from Bluefinity可以满足您的需求。在我看来,这是MultiValue市场上的主导产品,用于实现您的目标。这意味着当然要花钱。为此,您将获得一套非常强大的工具。此外,投资一个好工具的成本可能最终小于时间,努力和潜在的复杂性的成本,试图做这个零碎的没有花费任何额外的钱。我相信Flashconnect也能做到这一点。您必须权衡不同选项的成本,以便在技术和财务上找出哪一个适合您。

不知道你的技能组中是否有.NET,我不知道.NET选项对你来说是否更容易。然而,这在技术上是可行的。

答案 1 :(得分:0)

我建议使用Rocket的D3(以前称为TigerLogic D3).NET API并创建一个Web API RESTful服务,您可以在任何其他Web技术中使用JavaScript,如果需要从D3子程序调用(如果你愿意,那么使用MVS工具包。

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

答案 2 :(得分: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服务可以很容易地在Linux中使用Java,但是它缺少一个池化机制 - 见下文。

如果您想要所有Linux,那么您可以使用MVSP Java库。 TigerLogic(现在被Rocket Software收购)几个月前致力于为MVSP提供PHP绑定。而不是等待,我的一个客户创建了一个围绕mv.NET的PHP包装器,尽管MVSP也很简单。因此,最终的应用程序基本上是LAMP,但M = Multivalue。我也编写了这样的代码 - 我们可以用任何语言编写一个包装器,它可以公开一个有用的API,并抽象出连接方法和操作系统依赖关系。换句话说,我们想要使用哪种语言或涉及哪些操作系统并不重要。这一部分相当微不足道,以后可能会改变。最好关注应用程序而不是通信。

您也可以离开菜单,可以这么说,并围绕操作系统级别的d3tcl命令创建自己的Java / PHP包装器,该命令是d3可执行文件的脚本/包装器。这允许您自己打开连接并传入命令。

无论选择哪种选项,都需要考虑打开和关闭DBMS连接是一个缓慢的过程。您不希望围绕每个数据请求编写登录脚本。您确实希望打开连接并持续保持打开状态,同时客户端代码根据需要访问和释放持久连接。这就是我们喜欢mv.NET和FlashCONNECT的原因。使用MVSP和其他机制,您需要创建自己的持久性模型。您还需要管理连接资源池 - 当您同时获得10个查询时会发生什么情况,或者在一个长时间查询后只发生1个短暂查询?您不希望备份查询,您不想拒绝或超时连接,并且您不希望为每个客户端启动连接。您确实希望有适当数量的DBMS会话等待入站连接。 mv.NET和FlashCONNECT为你做这个,其他人没有。

就我个人而言,我会回避FlashCONNECT。我在那里进行了初步的开发和测试以及多年的最终用户实现。它没有像其他选项那样广泛使用,对于那些不熟悉其他选项的人来说更像是一种工具。如果您正在谈论Java,那么您可能不会倾向于使用FlashCONNECT。也就是说,如果你有开发人员不熟悉D3以外的任何东西,那么FlashCONNECT对他们来说是一个不错的服务器端工具,而其他人则专注于客户端与其他技术。每个人都应该使用他们最好的技能。

最后,(已经?)如果有人不熟悉外部技术,并且与D3更加亲密,那么其他选项如DesignBAIS和Viságe,主要是消除通信负担并允许开发人员处理客户端功能BASIC中的后端规则。

我在my blog上讨论了所有这些主题以及移动和电话。

HTH