【发布时间】:2011-12-30 09:52:26
【问题描述】:
我是 Asp.Net MVC 模式的新手。我只有几个与 MVC 和 MVVM 相关的问题
- 这些模式解决了哪些问题?
- 它们有何相似之处?
- 它们有何不同?
【问题讨论】:
标签: asp.net-mvc model-view-controller design-patterns mvvm
我是 Asp.Net MVC 模式的新手。我只有几个与 MVC 和 MVVM 相关的问题
【问题讨论】:
标签: asp.net-mvc model-view-controller design-patterns mvvm
在 ASP.NET MVC 中,请求来自 Web 服务器并由控制器直接处理。控制器确定适当的视图并用模型填充它。然后控制器将这些实例释放到底层系统,底层系统将结果呈现给客户端。你可以看到 Controller 是第一个也是最后一个动作的。
在 MVVM 中,UI(视图)面向用户并直接接受用户输入。在视图中,视图模型(即视图的 DataContext)中的命令由该活动触发。控制流向 ViewModel,它解释 View 发送给它的内容并准备其模型。在控制流回视图后,它会根据模型的变化进行自我更新。如果需要一个新视图,ViewModel 会与 NavigationService(或您的应用程序使用的任何导航方法)进行通信,这是 Window 或 Frame--UI 组件的权限。你可以看到 ViewModel 不是第一个也不是最后一个。视图比 MVC 中的作用要大得多。
至于选择哪个最好,我倾向于以工具支持为指导。例如,如果您使用的是 ASP.Net,那么通过 MVC 项目模板可以实现大量自动化,这有助于在应用程序中设置样板并使用该模式。根据我对 Silverlight/WPF 的了解,MVVM 周围有很多支持。几年前,当我开始加快 MVC/MVP 的速度时,我在电子商务应用程序的结帐过程中实现了 MVP。这是一次非常棒的体验,结果令人满意,但我是在没有工具支持和指导的情况下手工编写所有内容。当我编写 Silverlight 应用程序时,我肯定会因为那里的支持而转向 MVVM。
【讨论】:
网络上有很多内容涵盖了这一点,但作为初学者,this 视频会帮助你
【讨论】:
MVC 是一种软件架构模式,它允许您很好地分离,尤其是领域逻辑、用户界面、业务逻辑等,并允许完全分离关注点,并允许单独开发和单独测试独立的逻辑以及轻松轻松测试多个版本的实现。
如果您喜欢描述要捕获的所有内容(包括其行为)的实体,尽管大多数人认为它是数据库表,但它只是一个存储模型,而模型结合了所有内容。
如果您喜欢与之交互的用户界面,则可以查看
控制器是驱动视图之间的交互的控制器,该控制器进行或接受模型上发生的更改。
如果你喜欢,MVVM 与 MVC 相同,但它使用额外的视图模型来帮助 UI,并且此视图模型通过控制器与模型同步。
该架构还包含存储库模式、IOC 等最佳实践。
一个快速的例子比如说一个人的模型
class Person
{
int id;
string type;
}
现在,有助于 UI 的 View 模型可能有一个下拉列表来填充人员类型,因此同一模型的 ViewModel 可能是
Class PersonViewModel
{ //Pseudo code
SelectList {mytype, yourtype}
}
这可能会被用作 //伪代码 下拉列表(slectList)
希望对你有帮助
【讨论】: