如何在可扩展数据库结构的多租户应用程序的业务层中设计实体?

时间:2013-12-25 18:14:07

标签: design-patterns architecture domain-driven-design multi-tenant business-logic-layer

例如,我希望产品可能具有来自不同租户的多个版本,一个版本产品具有3个字段而另一个具有6个字段。那么我将如何在业务层中表示此实体,以便在我的应用程序中应用我的业务逻辑,而不是数据库中。 如何在没有静态类的情况下即时了解实体的语义。

我知道如何设计数据库。我询问了业务层的设计。我有不同租户的业务逻辑,对实体或许多实体有不同的要求。当我没有特定的实体来添加方法时,如何处理?我没有带静态属性的产品。如何在仅存储在数据库中的抽象数据库列上添加许多不同的折扣公式。 如何将实体的不同版本从数据库传送到业务层进行处理,然后传送到Web客户端进行显示和编辑。如何在Web客户端和数据库之间表示它将被处理,业务层!

1 个答案:

答案 0 :(得分:1)

  

如何在没有静态的情况下即时了解实体的语义   类。

这是您的代码的责任。如果您的product依赖于租户,那么您唯一需要的是即时检查您的租户并选择正确的逻辑。

  

我知道如何设计数据库。我询问了业务层的设计。我有不同租户的业务逻辑,对实体或其中许多实体有不同的要求。当我没有在

上添加方法的特定实体时,如何处理

我会使用依赖租户的strategies来解决它。

  

Strategy (GoF patterns):此模式定义了一系列算法,封装了每个算法,并使它们在运行时可互换。当您拥有某些逻辑并且希望它在使用它时仍然具有可扩展模型的客户端独立变化时使用此模式。

要解决下一个问题,

  

如何将实体的不同版本从数据库传送到业务层进行处理,然后传送到Web客户端进行显示和编辑。

我认为,您可以使用继承或将产品属性作为单个通用属性集合公开。

无论如何,你是了解你的项目的人,可以选择更好的解决方案。没有银弹。