推荐多层架构/语言/数据库? [已关闭]

问题描述 投票:0回答:1

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

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

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

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

.net database-design architecture jvm
1个回答
0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.