我很好奇你将如何处理数据库访问。
我们建议您有一台计算机,它将您的数据库作为其服务器工作的一部分托管,并且有多个客户端PC,其上有一些需要从该数据库获取信息的客户端软件
AFAIK有2种方法可以做到这一点
所以我想知道的是: 每个解决方案的专业和反对意见是什么? 还有其他解决方案可能“更好”地完成这项工作
答案 0 :(得分:1)
我绝对会使用建议编号2.没有客户端应用程序应该在没有经纪人的情况下与数据存储区通信,即:
ClientApp - > WebApi - > DatabaseBroker.class - > MySQL的
当您分离关注点并为数据存储区定义有组织的吞吐量时,这是完成此操作的合理方法。
一些好处是:
将客户端与数据库分离
您可以将所有升级,添加和可操作性集中在所有客户的一个位置(DatabaseBroker.class)
它是非常可扩展的
对业务逻辑的安全性
用这个非专业人士的例子来想想:
海军陆战队不允许将自己的武器带到战场(客户端应用直接与DB对话)。相反,他们从军械库(API)结账武器。军械库控制着所有武器,修理和升级(来自数据库的数据)并确定谁得到了什么。
答案 1 :(得分:0)
你所描述的听起来像两种不同的multitier architectures。 第一点与两层匹配,第二点可以是三层。
AFAIK有2种方法可以做到这一点
您可以将应用程序划分为多个物理层,因此,您会发现适合此架构(n层)的案例比上述更多。
每种解决方案的专业和反对意见是什么?
通常,将应用程序分层的动机是实现某种非功能性需求(可维护性,可用性,安全性等),问题是当您添加额外的层时,您还会增加复杂性,例如:应用程序组件需要相互通信,当它们分布在多台计算机中时,这将更加困难。
其他解决方案可能会“更好”地完成这项工作。
我不确定你的“工作”是什么意思,但请注意你不需要添加额外的层来访问数据库。如果您在几台计算机上安装了桌面应用程序,那么传统的客户端/服务器(双层)模型就足够了。但是,基于Web的应用程序需要额外的层来与浏览器进行交互。在这种情况下,数据库访问不是添加此额外层的动机。