持久性无感知
持久性无感知 (PI) 是指需要保持不变的类型,但其代码不受所选择的持久性技术的影响。 .NET 中的这种类型有时被称为普通旧 CLR 对象 (POCO),因为这种类型无需继承特定的基类或实现特定的接口。 持久性无感知非常有用,因为它可以让相同的业务模型以多种方式保持不变,让应用程序更加灵活。 持久性选择可能会随着时间的推移而发生变化,从一种数据库技术变为另一种数据库技术,或除应用程序一开始具备的持久性形式之外还需要其他形式的持久性(例如,除相关数据库之外还需使用 Redis 缓存或 Azure Cosmos DB)。
违反此原则的一些示例包括:
必需的基类。
必需的接口实现。
负责保存其自身的类(例如活动记录模式)。
所需的无参数构造函数。
需要 virtual 关键字的属性。
特定于持久性的必需特性。
要求类具有上述任何特性或行为会增加要保持不变的类型和持久性技术的选择之间的耦合,从而增加将来采用新的数据访问策略的难度。
网友评论