我一直在使用MVC并听说过" 服务 "层(例如在Java web项目中),我一直想知道这是否是一个真正的架构模式,因为我找不到很多关于它.
MVCS的想法是在控制器和模型之间建立一个服务层,以封装可能在控制器中的所有业务逻辑.这样,控制器就可以转发并控制执行.您可以在许多控制器(例如,网站和Web服务)中调用服务,而无需复制代码.
它可能是之前被问过,但我甚至在官方网站上找不到为什么我应该使用MediatR以及它解决了什么问题?
是因为我可以在构造函数中传递单个对象而不是多个接口?
它是ServicesBus等的替代品还是竞争对手......
基本上有什么好处,它解决了什么问题
我想购买它,但我不清楚为什么我应该使用它.
非常感谢
如何使用存储库模式以事务方式封装多个实体的保存?例如,如果我想根据订单创建添加订单并更新客户状态,但只有在订单成功完成时才会这样做?请记住,对于此示例,订单不是客户内的集合.他们是自己的实体.
这只是一个人为的例子,所以我并不关心订单是否应该在客户对象内部,甚至不在同一个有限的上下文中.我真的不在乎将使用什么底层技术(nHibernate,EF,ADO.Net,Linq等).我只是想看看一些调用代码在这个公认的全有或全无操作示例中的样子.
design-patterns domain-driven-design architectural-patterns repository-pattern
在软件架构 - 基础,理论和实践中,我可以找到两者的定义.问题是,我不能用简单的英语得到每个人的意思:
体系结构模式是体系结构设计决策的命名集合,适用于参数化的重复设计问题,以解决出现该问题的不同软件开发环境.
建筑风格是建筑设计决策的命名集合,(1)适用于给定的开发环境,(2)约束特定于该环境中特定系统的建筑设计决策,以及(3)在每个环境中引出有益的品质结果系统.
每个人的意思是什么,他们之间有什么区别?
在经历大学和跟踪SO的发展时,我听到了很多关于模型 - 视图 - 控制器架构设计模式的知识.我甚至在我知道它之前就无意中使用了MVC模式,并且仍然在我的日常工作中使用它.从我所看到的,它可能是今天使用的最流行的模式.然而,我没有听到太多关于可以使用的替代模式而不是MVC.有哪些选项,以及您决定在MVC上使用它们的原因是什么?我也有兴趣了解它们常用的系统类型.最后,使用它们的优点和缺点是什么?
model-view-controller mvp architectural-patterns passive-view
如何在MVP中创建视图?Presenter是否始终创建它们(除了子视图的视图外)?或者它是一个单独的第三方组件或应用程序或创建它们的东西?
我们还要补充一点,我可能会在Dojo Toolkit/ExtJS(即JavaScript)上执行此操作.
所以,我有这些代码行:
var v = new MyApp.view.User();
var p = new MyApp.presenter.User();
Run Code Online (Sandbox Code Playgroud)
这两条线应该在哪里准确?演示者是否实例化视图,反之亦然?什么实例化第一个实例?
正如我在标题中提到的,我很想知道你(经验丰富的开发人员)对DAO模式的使用的看法,特别是在Web应用程序中.你发现了什么样的优势以及它的使用带来了什么后果?
我一直在试图找到一种用PySide实现MVVM的方法但却无法实现.我认为应该有一种方法可以使用QItemEditorFactory从ViewModels创建视图,并且为了进行数据绑定,我想我可以使用QDataWidgetMapper.
您对Qt和PySide如何实现MVVM有什么想法吗?即使C++中有一些资源,我也会尝试将它们翻译成python.
谢谢.
在企业应用程序架构模式中,Martin Fowler讨论了组织域逻辑的两种模式:域模型和服务层.域模型模式是"纯OOP"方法,其中模型(可能使用ORM从数据库中查找的那些对象)包含业务逻辑(尽管可能仅委托给另一个类中的逻辑).

服务层模式类似于域模型模式,但前面有一个薄层,包含可以执行的业务操作.在MVC中,控制器主要与服务层交互.我相信大多数精心设计的MVC Web应用程序都使用这种模式.

现在,我的问题.Martin建议域模型方法是面向对象的方法,因此更好.根据我的经验,在实践中实施非常困难(见:不可能).
以上面第一个图中给出的例子为例.有两个"实体" Contract和Product.这些使用映射器持久保存到数据库.在这个例子中,有一个RecognitionStrategy.Martin在实体本身中提出了委托此策略的方法,该策略包含实际的业务逻辑; 客户端使用contract.calculateRecognitions或执行此计算contract.recognizedRevenue(someDate).在实现类似设计时,我通常将客户端接口编写为strategy.calculateRecognitions(contract)和strategy.recognizedRevenue(contract, someDate).这使得服务层成为协调战略和合同所必需的.使用的具体策略注入服务.
从设计的角度来看,Martin的方法肯定更具吸引力,但围绕设置的工作要困难得多:
Product是一种痛苦.您需要Product通过一个使用具体服务的工厂创建s,然后在创建它时将其传递给实体.Contract委托Product可以执行查询Product.Product当我们加载a Contract但不打算调用时,在mapper(或ORM)中贪婪地加载s可能过于热心contract.calculateRecognitions().我的方法为我们提供了更细粒度的控制,因为服务具有数据库抽象层的知识,而实体则不应该知道.我确信在实践中还有更多的痛点,我在这里没有列举.
Martin的方法有哪些具体优势可能说服我使用纯数据模型模式?
design-patterns architectural-patterns service-layer anemic-domain-model