design-patterns - 服务和 DAO 与 MVC

标签 design-patterns service dao

我对设计模式确实非常陌生,我经常遇到诸如服务层、DAO层和模型之类的词-编程中的 View Controller

由于 StackOverflow 是一个非常棒的平台,在解释概念和/或逻辑方面拥有许多非常有才华的观众。

我期待一个优雅的答案来解释所有这些之间的区别。我们什么时候使用它们?我们什么时候更喜欢 Service/DAO 架构而不是 MVC 模式?我们在 Service/DAO 架构中是否有 Controller ?我们可以通过哪些可能的组合来集成 Service/DAO 和 Model/View/Controller。

<小时/>

这篇文章也将对所有有同样疑问的其他人有所帮助。好帖子一定要支持。请求版主不要将其作为其他问题的重复项来关闭,因为没有任何问题能够解决我的查询。

最佳答案

Service and DAO vs MVC

您不应将它们直接相互比较。服务和 DAO 构成任何 n 层应用程序中的层。 MVC 应用程序可以包含服务和 DAO。

服务层是一个通用术语,基本上充当应用程序域的入口点,通常包括业务逻辑。对于 Web 应用程序,您可以将业务逻辑层视为服务层,或者对于移动客户端,您可以公开 Web API 并将其视为服务层。简而言之,无论 GUI/客户端如何,您都应该能够按原样重用业务逻辑。

DAO只是抽象数据存储机制的对象。

MVC 是一种设计模式,其中 V 和 C “严格”构成表示层,而 M 可以包含超出表示层 (GUI) 的所有内容。 MVC 中的模型部分长期以来一直是一个基于观点的主题。但以下是我构建典型 MVC 应用程序的方式。

Presentation Layer
  -> Views
  -> ViewModels  
  -> Controllers 

Service Layer
  -> Includes business logic
  -> Uses data access interfaces

Data Access Layer (DAOs)
  -> Contracts (interfaces) for persistent storage
  -> Interface implementations

Entities
  -> POCO/ POJO that represent data

关于design-patterns - 服务和 DAO 与 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45490749/

相关文章:

java - 对单元测试 DAO 的疑问

c# - Ioc 中繁忙的构造函数——它们是代码的味道吗?

c++ - 基于抽象迭代器加速设计的想法

c# - 这是对静态属性的错误使用吗?

Android 后台服务或接收器在后台检查互联网连接

java - getActivity() 在 Android java 服务中使用的其他方式

c - 在某些情况下,尝试从服务内修改注册表会失败?

java - 使用 struts 和 hibernate 的 Dao 层和业务逻辑

JSF 表单中的简单实体持久化

sql - 酒店预订系统 : optimal SQL db structure for querying