【问题标题】:Recommend multi-tier architecture / language / database? [closed]推荐多层架构/语言/数据库? [关闭]
【发布时间】:2015-09-25 19:57:54
【问题描述】:

我正在研究一个新的业务应用需求(技术,而不是会计)。该应用程序需要以下架构:

  • 后端数据库可供世界各地的用户使用,响应时间不错。如有必要,可以使用数据库复制来确保低延迟性能。由于与数据所有权有关的数据安全/合同问题,客户组织更喜欢自己托管而不是使用 SaaS 或云。数据不是特别相关,更像是一个对象树。数据存储中可能有唯一的对象,它们的属性在数据库中存在一次。但是,需要存储所有数据更改的审计跟踪(不一定是回滚),由谁以及何时进行更改,并允许用户查看不同数据集的不同版本的数据。对此的真实世界描述将是一张主图,上面有各种透明的变化。当用户完成更改后,他们可以发布回主服务器,然后其他人可以看到。查看各种数据库选项(通过 ORM 的 SQL、NoSQL)。对平台没有严格的后端限制
  • 业务逻辑的中间层,包括用户的身份验证和授权。身份验证必须与客户端系统的 Active Directory 兼容。业务逻辑相对简单,将数据从数据库传递给用户并返回。对平台或语言没有限制——但理想情况下,需要一些可编写脚本的东西,这样就可以添加业务逻辑而无需重新编译。在被数百个并发用户击中时也需要良好的性能。
  • 客户端层将主要基于 Windows 桌面,具有图形(绘图)和数据输入/操作。 COM 层/与 MS Excel 的接口对业务至关重要,所以我认为这应该是一个 .NET 应用程序。
  • 辅助客户端层最终将是移动/Web 界面。不具备 Windows 桌面应用程序的全部功能(无绘图界面),但具备审查/评论/批准数据并将数据发布到数据库中“主层”的功能。

我不是全职程序员。但在过去的 25 年里,我用 FORTRAN、Common Lisp、Pascal、VB 和 Python 做过一些编程。我可能在这里被描述为创意人——而不是实施者。

如果我们想对此进行原型制作,最好的平台是什么?由于客户端的原因,我认为 .NET 会很好,但我担心如果我们使用 SQL 以外的东西(我对 LINQ 一无所知 - 这对我有帮助吗? )。此外,我真的很喜欢动态类型语言的想法,因为它们的表现力和开发速度。

【问题讨论】:

  • 首先,如果它是一个 Windows 应用程序,并且您想要一个体面的用户界面,您将使用 WPF (.Net)。没有什么比您从数据驱动应用程序中获得的生产力更接近了。缺点:只有 Windows,没有 linux,没有 mac,没有移动设备。优势:您的大部分“面向 UI”的代码将与平台无关,并且可能在其他地方重用。此外,.Net 上的 NoSQL seems to be doing just fine.

标签: .net database-design architecture jvm


【解决方案1】:

考虑到低延迟和非关系型数据 NoSQL 将是正确的选择。许多流行的数据库都很好地支持 .net(如 MongoDB、CouchBase),甚至是它的 lambdas/expressions 和 LINQ。此外,您还必须考虑可能影响后端架构的最终一致性(无论采用关系或 NoSQL、复制或分片的方式)。

关于审计跟踪、版本控制和发布更改,看看 CQRS 和事件溯源架构模式,它们很好地解决了这些问题。

对于客户端应用程序,我建议尝试 Xamarin。 (我认为它比 WPF 更好,因为它不像 WPF 那样专注于特定设备)这带来了为服务器和客户端应用程序使用相同的开发平台/语言并降低开发/支持成本的主要好处。

关于桌面应用程序,我不确定 Xamarin 是否支持 COM,但如果不支持,您可以 share client code 并解耦表示层。因此,您将拥有用于桌面 (Visual Studio) 和移动 (Xamarin) 的单独层

所有这些东西都可以使用 .net 来制作,我在这里看到了一个很棒的专业人士:为所有应用程序使用通用代码库。

【讨论】:

  • “关于审计追踪,看看 CQRS 和事件溯源” - 使用事件溯源来支持审计追踪实际上是使用推土机杀死苍蝇恕我直言。
  • 免责声明:当然,OP 没有写任何关于问题的原始领域的内容,所以他需要 CQRS 和事件溯源的可能性非常非常低
  • 在 CQRS-ES 上进行快速的 Google 搜索似乎对于我的审计跟踪需求来说是多余的。我只想知道谁更改了哪些数据以及何时更改。这是涉及工业建设的工程数据。
  • 我会纠正自己的。我的意思不仅是审计跟踪,还有你提到的所有内容,尤其是“当用户完成更改后,他们可以发布回主服务器,然后其他人可以看到。”。是的,这是我的错误,我提到了“审计跟踪”,但它打算解决的真正问题是接下来。
猜你喜欢
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多