【问题标题】:Design pattern for web service fronting a datastore面向数据存储的 Web 服务的设计模式
【发布时间】:2015-06-19 12:39:40
【问题描述】:

我正在编写一个 Web 服务,它有几个 API 可以从数据存储中获取数据。高级视图如下所示

     getBlahForDate()
         ---->             ----> 
Client           Service            Data store ( Stores Blah )
         <----             <----
        List<Blah>

在考虑如何在服务中设计代码时,我一直在选择正确的设计模式

我有以下几层

1. serviceLayer ( one class for each API, does validation on input )
2. daoLayer ( fetch data from dataStore )
3. modelLayer ( pojo defining domain objects like Blah )

服务完成的唯一“工作”是在发送响应之前验证输入并从数据存储读取并将域模型转换为传输模型。 我可以让服务层直接使用 dao 并发送响应。但我想知道哪种设计模式适合用例。在我看来,这也像一个贫血域,其中域对象只是一个没有业务逻辑的 pojo。但是除了验证来自商店的数据是否对模型中的字段有效之外,没有其他业务逻辑。如果您能告诉我处理这种情况的公认/常用方法,请不胜感激。

【问题讨论】:

    标签: java web-services design-patterns domain-driven-design anemic-domain-model


    【解决方案1】:

    我愿意:

    • 您的 HTTP 服务层将执行以下操作:HTTP 正文、路由验证、在给定 URL 的情况下调用正确的 GenericManager...

    • 例如 GenericManager(使用 get、post、put、delete、list 方法)返回模型或模型列表。 经理可以呼叫其他经理 开发人员只会定义想要的操作:获取或发布......甚至所有方法。 我认为在这个级别处理业务规则验证是件好事。 我认为业务规则验证应该是应用程序中的一个层。 因为您可能希望共享业务规则验证。

    • 例如一个 AbstractDao(带有 get、post、put、delete、list 方法)返回 Dao 模型或 Dao 模型列表。 (模型道和模型渲染到客户端可以/可能不同)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 2010-12-10
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      相关资源
      最近更新 更多