Ruby on rails 将IntrAnet和Web站点结合起来的最佳策略是什么?

Ruby on rails 将IntrAnet和Web站点结合起来的最佳策略是什么?,ruby-on-rails,web,intranet,erp,system-design,Ruby On Rails,Web,Intranet,Erp,System Design,我想知道是否有人对这个问题有一些见解 一点背景: 我们一直在使用Rails从旧的数据库和基于Visual Basic的系统迁移 建立内部公司内部网,进行标签打印等工作, 投资控制、运输等-基本上是ERP 困境 现在,我们需要替换一个旧的面向客户的网站,它是用Java实现的 将连接到我们的内部系统供客户使用。我们希望能够从我们的内部系统中提取库存、订单安排、对账单等信息,并将其公开给SiteLive。原因是我们在网站上接受订单,通过传真和电话,有时我们会进行预约。因此,有时(很少)在我们的旧Jav

我想知道是否有人对这个问题有一些见解

一点背景

我们一直在使用Rails从旧的数据库和基于Visual Basic的系统迁移 建立内部公司内部网,进行标签打印等工作, 投资控制、运输等-基本上是ERP

困境

现在,我们需要替换一个旧的面向客户的网站,它是用Java实现的 将连接到我们的内部系统供客户使用。我们希望能够从我们的内部系统中提取库存、订单安排、对账单等信息,并将其公开给SiteLive。原因是我们在网站上接受订单,通过传真和电话,有时我们会进行预约。因此,有时(很少)在我们的旧Java站点上,即使是库存更新的短暂延迟也会导致我们延期下单,因为我们在半小时内将相同的商品卖给了两个客户。它通常在一天内修复,但我们希望在将来避免这种情况

实际问题

有没有人对如何以更好的方式实现这一点有什么建议 路

我看到了三个选项:

a) 在web服务器上构建一个单独的Rails应用程序,该应用程序将连接到内部应用程序连接到的数据库

  • +++优点:实时数据-与我们的内部应用程序看到的相同,即订单是实时创建的,库存立即耗尽

  • ---缺点:潜在的安全风险、代码重复-即我需要复制所有处理订单的控制器、模型、视图等

b) 在web服务器上构建一个单独的Rails应用程序,该应用程序将连接到与我们的内部应用程序不同的数据库

  • +++优点:较少的安全风险
  • ---缺点:需要额外努力同步web DB和内部DB(或使用REST-API等web服务),需要额外代码来处理库存耗尽和订单#创建、复制代码-即,我需要复制所有处理订单的控制器、模型、视图等
c) 向web公开内部应用程序

  • +++优点:以上所有问题都已消除。这是一种非常“干燥”的er方法
  • ---缺点:更多的安全问题。更复杂的登录系统-一个用于web,另一个用于使用LDAP的内部用户
有什么想法吗?有人有类似的问题要解决吗?请记住,我们公司的资源是有限的,也就是说,只有一个开发人员致力于此。因此,这必须是一个“正确”和“聪明”的解决方案,而不是“投入资金/人力/资源”的解决方案


谢谢。

我想去喝一杯。您应该能够创建控制器,使其可重复使用


内部用户与外部用户一样可能复制数据

我会去喝一杯。您应该能够创建控制器,使其可重复使用


内部用户与外部用户一样可能复制数据

对于员工来说,公共用户界面和内部用户界面可能需要不同。数据需要一致性,所以我会投入相当多的精力来确保只有一个确定的数据库。那么:一个数据库两个用户界面

具有两个UI都可以使用的“服务”层。如果这是Java,我将非常有信心快速完成服务。我想知道在Ruby/Rails中有多容易


最好的结果是,您现有的客户Java UI可以调整为使用Rails服务层。

对于员工来说,公共UI和内部UI可能需要不同。数据需要一致性,所以我会投入相当多的精力来确保只有一个确定的数据库。那么:一个数据库两个用户界面

具有两个UI都可以使用的“服务”层。如果这是Java,我将非常有信心快速完成服务。我想知道在Ruby/Rails中有多容易


最好的结果是,您现有的客户Java UI可以调整为使用Rails服务层。

我可能会为公共站点创建单独的控制器,并使用ActiveResource从您的内部应用程序中提取数据。看看


编辑-固定链接和添加的api链接

我可能会为公共站点创建单独的控制器,并使用ActiveResource从内部应用程序中提取数据。看看


编辑-固定链接和添加的api链接假定您相信您的程序员不会意外地在错误的位置公开内容,“正确”的解决方案在我看来似乎只有一个应用程序,但有两组不同的控制器和视图,一组供内部使用,另一组供面向公众使用。这将使您了解djna关于一个数据库、两个UI的想法

正如您所说,拥有两个独立的数据库将涉及大量的重复,以及复制问题

让两个完全不同的应用程序使用同一个数据库对我来说毫无意义;Rails应用程序的ActiveRecord部分是Ruby代码中的数据库抽象,因此为单个数据库提供两个抽象似乎有点错误

然后,您还可以在模型中使用通用业务规则,以避免站点的两个版本之间的代码重复


如果你不完全信任你的程序员,那么Mike的ActiveResource方法是相当好的——它会让你很难意外地公开东西(尽管ActiveResource比ActiveRecord灵活得多,功能也不丰富)

假设你相信你的程序员不会意外地在错误的地方公开东西,在我看来,“正确”的解决方案似乎只有一个应用程序,但有两套不同的控制器和视图,一套供内部使用,一套供面向公众使用。