业务层反汇编和业务对象类型

本文关键字:业务 类型 对象 反汇编 | 更新日期: 2023-09-27 18:19:44

业务逻辑层包含包含业务逻辑的业务对象。其中一些是持久的,这些是实体。实体及其逻辑构成模型。其中一些是无状态的,包含一些不适合任何实体职责的额外逻辑。这些对象是服务(也是Model?的一部分)。

然后还有一些助手/实用程序类,如Managers、Factories、Builders。目前这种拆卸是否正确?

还有一些对象不是实体或服务,可以包含状态。具有自己线程的活动对象。可以长寿。那些物体是什么?只是业务对象还是业务组件?

在我的项目中,我有设备类。起初,我把它当作Entity对象来处理,因为它存储在DB中。它包含自己的线程,该线程定期从实际设备中获取一些数据,并对这些数据进行一些复杂的逻辑处理。因此,它是一个活跃而长寿的物体。我意识到它不可能是一个实体,因为它是一个沉重/复杂、活跃和长寿的物体(或者它可以???)。所以我把它分成不同的类:

  • DeviceDescriptor,现在是实体和
  • DeviceAccess(或Device)包含复杂的业务逻辑,寿命长且处于活动状态。它也是基于DeviceDescriptor对象进行初始化的

这个DeviceAccess对象是什么类型的业务对象?

如果我有这样结构的项目,那么Device/DeviceAccess对象应该放在命名空间层次结构中的哪里?

  • ProjectName.Core–核心对象、业务对象
  • ProjectName.Core.Entities–持久性业务对象
  • ProjectName.Core.Services–服务接口
  • ProjectName.Core.Services.Default–服务的真实实现
  • ProjectName.Core.Repositories–(DAL层)存储库接口
  • ProjectName.Core.Repositories.SqlServer–存储库的真实实现

首先我想我应该把这个对象放在Core命名空间下。但后来我认为,最好将其视为单独的组件/模块或功能,并将其放置在ProjectName.Devices的Core命名空间之外(以及其他辅助对象、存储库和实体-DeviceDescriptor)。你觉得怎么样?

你能告诉我我的命名空间组织是否正确吗?这不是DDD的指导。它是一个相当于3层的体系结构,其中一些概念借鉴了DDD。(存储库、聚合根、服务、模型)。

如有任何建议,我将不胜感激。

业务层反汇编和业务对象类型

业务逻辑层包含包含业务的业务对象思维方式其中一些是持久的,这些是实体。沿线实体其逻辑使模型。其中一些是无状态的,包含一些不适合任何实体职责的额外逻辑。那些对象是服务(也是Model?的一部分)。

域将包含聚合、实体、值对象、事件、服务等等。实体只是指一个有生命周期并通过id标识的概念。

还有一些助手/实用程序类,如Manager、Factories、,建设者。目前这种拆卸是否正确?

什么是经理?它们代表了领域中的一个概念吗?工厂最好在聚合根或实体上实现。想想var post = forum.PostBy(user);。构建器可以帮助您构建支持该语言的复杂对象。例如CCD_ 2。

还有一些对象不是实体或服务,可以包含状态。具有自己线程的活动对象。可能很长活了下来。那些物体是什么?只是业务对象,或者可能是业务组件?

也许你要找的是佐贺或流程经理?

在我的项目中,我有设备类。一开始我把它当作实体对象,因为它存储在DB中。它包含自己的线程定期从实际设备中获取一些数据,并进行一些复杂的操作逻辑。因此,它是一个活跃而长寿的物体。我意识到它不可能是一个实体,因为它太重/太复杂以及活跃和长寿的物体(或者它可以???)。所以我把它分成单独的类。。

它肯定可以是一个实体,可能是一个聚合根。您是否构成了多个值对象的实体?值对象是封装逻辑的好方法。

如果我有这样结构的项目,应该在哪里是否将Device/DeviceAccess对象放置在命名空间层次结构中?

ProjectName.Core–核心对象、业务对象ProjectName.Core.Entities–持久性业务对象ProjectName.Core.Services–服务接口ProjectName.Core.Services.Default–服务的真实实现ProjectName.Core.Repositories–(DAL层)存储库接口ProjectName.Core.Repositories.SqlServer–的真实实现存储库

您是否考虑过基于功能而非技术模式的名称空间?下面是一个基于功能的名称空间命令示例。