推荐多层架构/语言/数据库?

时间:2015-07-08 04:41:28

标签: .net database-design architecture jvm

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

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

我不是全职程序员。但是在过去的25年里,我在FORTRAN,Common Lisp,Pascal,VB和Python方面做了一些编程。我可能会被描述为这里的想法人 - 而不是实施者。

如果我们想要对此进行原型设计,那么最好的平台是什么?我在想,因为客户端会认为.NET会很好,但我担心如果我们使用除SQL以外的东西就能使用.NET作为后端(我对LINQ一无所知 - 能帮助我吗? )。此外,我非常喜欢动态类型语言的想法,因为它们的表现力和发展速度。

1 个答案:

答案 0 :(得分:0)

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

关于审计跟踪,版本控制和发布更改,请查看 CQRS和事件采购架构模式,它们可以很好地解决这些问题。

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

关于桌面应用,我不确定Xamarin是否支持COM,但如果没有,你可以share client code并解耦表示层。因此,您将为Desktop(Visual Studio)和Mobile(Xamarin)提供单独的图层

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