【发布时间】: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