存储库架构与客户端-服务器架构?
Repository architecture vs Client-Server architecture?
准备考试,它问:
What are the key aspects of a repository architecture that
differentiate it from a client-server architecture?
我对此的回应是:
Repository architecture is centralised data that can be accessed by multiple
components to store and edit data, a change on one component is
replicated across all components, data is processed on the client
side. Client-Server can have multiple servers and clients each
interacting with each other to offer services, data and services are
processed on the server side.
是否正确,您认为这能回答问题吗?我还觉得客户端-服务器和存储库不那么容易比较,因为您可以在客户端-服务器架构中运行存储库系统。
我不同意。存储库绝对是一种实现客户端-服务器模式的方法,尤其是服务器端。拥有服务器意味着存在客户端,至少是一个客户端。即使某处没有 集中式 数据库,仍然存在可能对客户端本地的 数据层 。如果没有 某种程度的 数据层,您将仅限于 "in-memory" 应用程序:它们根本没有状态(例如,包括没有用户设置)。我想你的问题不仅限于这些。
存储库模式背后的想法是抽象出数据 IO 的必要条件实现细节。它隐藏了数据库的某些结构,它的配置、映射和(很少)在适当的 IRepository
class 内的验证逻辑。通常这些家伙是通用的,所以程序员处理 IRepository<T>
时会在 T
上加上一些额外的限制。因此,拥有这样的接口允许您:1) 同时使用概念上不同的数据库,让其他代码不知道它们的主要区别(想象传统 SQL 以及基于图形的数据库),2) 替换不同的数据库对外部世界没有任何改变:比如说,你决定摆脱 MSSQL
并移动到 Neo4j
,反之亦然,3) 最后,但绝对不是最不重要的,你得到一把剃刀-某"responsibility"的锐边——数据IO。它作为一个方便的扩展点来注入验证或日志记录等扩展。
准备考试,它问:
What are the key aspects of a repository architecture that differentiate it from a client-server architecture?
我对此的回应是:
Repository architecture is centralised data that can be accessed by multiple components to store and edit data, a change on one component is replicated across all components, data is processed on the client side. Client-Server can have multiple servers and clients each interacting with each other to offer services, data and services are processed on the server side.
是否正确,您认为这能回答问题吗?我还觉得客户端-服务器和存储库不那么容易比较,因为您可以在客户端-服务器架构中运行存储库系统。
我不同意。存储库绝对是一种实现客户端-服务器模式的方法,尤其是服务器端。拥有服务器意味着存在客户端,至少是一个客户端。即使某处没有 集中式 数据库,仍然存在可能对客户端本地的 数据层 。如果没有 某种程度的 数据层,您将仅限于 "in-memory" 应用程序:它们根本没有状态(例如,包括没有用户设置)。我想你的问题不仅限于这些。
存储库模式背后的想法是抽象出数据 IO 的必要条件实现细节。它隐藏了数据库的某些结构,它的配置、映射和(很少)在适当的 IRepository
class 内的验证逻辑。通常这些家伙是通用的,所以程序员处理 IRepository<T>
时会在 T
上加上一些额外的限制。因此,拥有这样的接口允许您:1) 同时使用概念上不同的数据库,让其他代码不知道它们的主要区别(想象传统 SQL 以及基于图形的数据库),2) 替换不同的数据库对外部世界没有任何改变:比如说,你决定摆脱 MSSQL
并移动到 Neo4j
,反之亦然,3) 最后,但绝对不是最不重要的,你得到一把剃刀-某"responsibility"的锐边——数据IO。它作为一个方便的扩展点来注入验证或日志记录等扩展。