Model view controller MVC—是否存在it';这不是无关就是不恰当?
在开发具有GUI和数据库访问的应用程序时,是否存在MVC架构不相关的情况 在我看来,视图和控制器只能是不同的实体,即升级视图或用其他东西代替它们,即移动显示器(或预测应用程序未来可能发生的变化) 此外,我认为只有在升级/更换模型时才需要分离模型和控制器Model view controller MVC—是否存在it';这不是无关就是不恰当?,model-view-controller,architecture,separation-of-concerns,Model View Controller,Architecture,Separation Of Concerns,在开发具有GUI和数据库访问的应用程序时,是否存在MVC架构不相关的情况 在我看来,视图和控制器只能是不同的实体,即升级视图或用其他东西代替它们,即移动显示器(或预测应用程序未来可能发生的变化) 此外,我认为只有在升级/更换模型时才需要分离模型和控制器 那么,MVC体系结构还有什么其他用途,即组件应该升级/更改的情况,或者这真的是吗?我喜欢MVC,因为它可以更容易地考虑应用程序的不同部分将如何协同工作。如果把所有的事情都放在一起,我会发现在我的脑海里想象起来要困难得多 所以这并不是你应该何时使用
那么,MVC体系结构还有什么其他用途,即组件应该升级/更改的情况,或者这真的是吗?我喜欢MVC,因为它可以更容易地考虑应用程序的不同部分将如何协同工作。如果把所有的事情都放在一起,我会发现在我的脑海里想象起来要困难得多 所以这并不是你应该何时使用它的问题,而是你更喜欢如何思考
如果您发现不使用MVC更容易,那么您可能不应该使用MVC。我认为,您困惑的根源在于您尝试应用MVC设计模式的范围 MVC不是小型应用程序的模式。相反,当您的自由格式OOP代码开始变得不可管理时,您应该应用它。您的代码库可能正在实现所有这些功能,但在某个时候,您将开始迷失其中 这将是您应该使用MVC的时候,因为此设计模式应用了其他约束。它不会向应用程序添加任何新内容。相反,它限制了哪些代码可以进入应用程序的哪些部分 p.S.关于MVC中的分离,您似乎也错了。基本的划分是在模型层和表示层之间。这是MVC应用程序的两个主要部分。只有在使用表示层时,视图和控制器之间才会分离。你可能会从阅读中受益
对我来说,这一切都归结为可测试性。与模型代码的测试相比,UI代码的自动测试成本过高。与视图层相比,在模型和事件控制器层中实现测试覆盖要容易得多
如果您不需要测试您的应用程序,并且它足够小,您可以在头脑中清楚地看到它,那么MVC可能是在浪费时间。很少有应用程序真正小到足以使这些问题不成问题。但如果应用程序真的那么小,MVC将增加远远超过其价值的开销。不要将
MVC
设计模式视为您的业务架构。将MVC
视为表示体系结构。在业务架构方面,有许多关于MVC
使用的争论。这是一个例子
实际上,您正在寻找N层
体系结构。其中它被分离为DAL
、BLL
和PL
:
数据访问层(DAL):
负责与存储器交互的层(插入/更新/删除)
BLL:
业务逻辑所在的层。该层是应用程序的核心。有些人经常使用术语中间件(如果错误,请纠正我)来表示BLL
。BLL不知道UI,这意味着它可以被桌面应用程序、web应用程序、移动应用程序等使用
PL:
这是您的表示层或UI层。MVC,至少
视图
和控制器
在这里。MVC体系结构有好处,也有一些缺点。你必须为你的项目权衡它们,看看哪一个最适合你
MVC的优势:
- 更易于维护,因为它是分区的(独立的 关注)
- 它更易于测试,因为您可以对控制器进行单元测试
- 您通常对生成的HTML有更多的控制权 (是的,您可以使用webforms实现同样的功能,但前提是 同时也要充分利用webforms的所有优势)
- 你的网页会更小更快,因为你不会 携带页面/视图/控件状态
- 更好地与客户端生活方式和库集成 (Bootstrap、jQuery及其许多插件、AJAX等)
- 更多第三方控件(webforms严重依赖第三方控件或自定义用户控件来实现快速应用程序开发)
- 如果您需要viewstate,那么它需要更少的工作,但这很好 如果设计正确的话,很少见
- 与服务器端控制库更好地集成
当然,有人会说,为什么你把xyz列为一个优势,因为你在另一个方面也可以这样做!嗯,在两个框架中都可以实现相同的功能,这只是一个简单的问题。对一方来说容易的事情对另一方来说可能更难,但如果有足够的时间和资源,两者都可以做到。MVC是关于分离关注点,并使这些关注点可测试 有人说“MVC不是小型应用程序的模式。”。我不同意。为什么?它只规定了如何分离关注点,我不明白为什么这对于小型应用程序应该有所不同。我认为这更简单,因为每个开发人员都使用相同的模式,并且已经习惯了。这不是开销,而是一致性。还要看看你要说什么 另一件事:MVC是一种表示层模式(分离的表示),它意味着它在模型、视图和控制器中从逻辑上分离您的UI。控制器负责管理流,与后端系统交互以查询和保存数据,并将该数据转换为视图使用的模型(或视图模型) 后端本身是另一个系统,它具有