我正在设计和实现 .Net ORM,它必须同时支持 Azure 存储(表、队列、blob)和 AWS 存储(EBS、SimpleDB、S3),并将所有实现细节隐藏在一个通用接口后面。主要的设计目标是简单。
一些工作已经在http://www.cs.virginia.edu/~humphrey/papers/CSAL.pdf中完成,但在我看来,他们提出的接口与 Azure/AWS 存储接口耦合过于紧密,并且是如果添加新功能或更改旧功能,可能会中断。例如,我不在乎我可以创建/删除表,我只需要以最有效的方式存储某种类型的对象。
所以,我想请你以指导的形式分享你在这个主题上的经验(做、考虑、避免、不要)。我真的很感激任何从设计 ORM 的一般原则开始并以精确的抽象级别结束的见解,考虑到 Azure 和 AWS 最可能的进化路径,这种抽象级别更有可能持续下去。