Architecture 是否建议采用2层和3层混合体系结构
我正在制作一个web应用程序,它将各种业务规则作为输入并存储在数据库中。这是使用3层体系结构完成的 之后,我必须在一个操作中使用所有这些业务规则,因此我在存储过程中编写这部分的业务逻辑,并从UI调用它,使其成为两层 由于这是一种罕见的情况,即一次操作需要所有数据(这是一个相当大的数据量——SP本身需要大约6分钟的时间来处理),因此仅为了维护体系结构完整性而将所有数据作为对象提取到BLL中对我来说没有什么意义。此外,SP中的逻辑是迭代的,因此所有数据都需要在BLL中维护,并且不能有条件地获取Architecture 是否建议采用2层和3层混合体系结构,architecture,Architecture,我正在制作一个web应用程序,它将各种业务规则作为输入并存储在数据库中。这是使用3层体系结构完成的 之后,我必须在一个操作中使用所有这些业务规则,因此我在存储过程中编写这部分的业务逻辑,并从UI调用它,使其成为两层 由于这是一种罕见的情况,即一次操作需要所有数据(这是一个相当大的数据量——SP本身需要大约6分钟的时间来处理),因此仅为了维护体系结构完整性而将所有数据作为对象提取到BLL中对我来说没有什么意义。此外,SP中的逻辑是迭代的,因此所有数据都需要在BLL中维护,并且不能有条件地获取 请建
请建议我是否有正确的方法。业务逻辑属于最合适的领域。如果您有与数据关联的逻辑,并且该逻辑仅由存储过程执行,那么数据库就是保存它的合适位置 业务逻辑属于最合适的领域。如果您有与数据关联的逻辑,并且该逻辑仅由存储过程执行,那么数据库就是保存它的合适位置 @APC是正确的,逻辑应该位于最合适的位置-并且:
- UI仍然应该通过BL层来获取数据,以便应用程序的结构保持一致
- 如果你想在应用程序中的不同位置拥有逻辑(为了满足某些要求,比如性能),你应该清楚地记录这些控制因素是什么,并且应该很容易让开发人员跟进李>
- 确保应用程序结构适当且清晰的一种方法是通过接口隔离特定的“繁重”任务。理想情况下,您的所有数据访问都应该由接口抽象出来,并且这些接口应该分解为逻辑区域(请参阅-ISP)。因此,您可以为特定的数据访问需求提供专用接口:[BL]->[IDataAccess]->[Concrete data access]
- 另一种方法(但也是类似的):不要让BL像常规数据访问一样访问这些特殊数据调用,而是将其作为BL包含或注入
当您实现数据访问时,您可以选择在单个类/组件(实现多个接口)或单独的类/组件(每个类/组件实现一个接口)中完成所有操作。@APC是正确的,逻辑应该位于最合适的位置-并且:
- UI仍然应该通过BL层来获取数据,以便应用程序的结构保持一致
- 如果你想在应用程序中的不同位置拥有逻辑(为了满足某些要求,比如性能),你应该清楚地记录这些控制因素是什么,并且应该很容易让开发人员跟进李>
- 确保应用程序结构适当且清晰的一种方法是通过接口隔离特定的“繁重”任务。理想情况下,您的所有数据访问都应该由接口抽象出来,并且这些接口应该分解为逻辑区域(请参阅-ISP)。因此,您可以为特定的数据访问需求提供专用接口:[BL]->[IDataAccess]->[Concrete data access]
- 另一种方法(但也是类似的):不要让BL像常规数据访问一样访问这些特殊数据调用,而是将其作为BL包含或注入
当您实现数据访问时,您可以选择在单个类/组件(实现多个接口)或单独的类/组件(每个类/组件实现一个接口)中完成所有操作。我假设您的应用程序的其他模块也维护三层架构。因此,为了保证一致性和可维护性,您应该维护三层体系结构
此外,在将来,如果您需要对SP返回的数据应用某些业务逻辑,您将在BL中执行这些操作。我假设您的应用程序的其他模块也维护3-TIE体系结构。因此,为了保证一致性和可维护性,您应该维护三层体系结构 此外,在将来,如果您需要对SP返回的数据应用某些业务逻辑,您将在BL中这样做