C# 如何在web环境中学习MVC--*而不是*

C# 如何在web环境中学习MVC--*而不是*,c#,.net,model-view-controller,user-interface,C#,.net,Model View Controller,User Interface,我希望学习MVC范例并将其应用到GUI开发中(至少在C#.NET中,但我想我也希望将其应用到其他地方)。到目前为止,我看到的几乎所有教程都假设,如果您在思考MVC,那么您必须在进行web开发,并且他们仅从web上下文中检查MVC。我对网络开发一点也不在乎 有人在非web环境中使用MVC吗?它似乎是GUI开发的理想选择——将表示与底层数据模型分离。但我只是在学习,所以我不知道。如有任何教程或参考资料,将不胜感激。Java中的Swing使用MVC。可能值得一看吗?看看《头先设计模式》一书。它是实现设

我希望学习MVC范例并将其应用到GUI开发中(至少在C#.NET中,但我想我也希望将其应用到其他地方)。到目前为止,我看到的几乎所有教程都假设,如果您在思考MVC,那么您必须在进行web开发,并且他们仅从web上下文中检查MVC。我对网络开发一点也不在乎


有人在非web环境中使用MVC吗?它似乎是GUI开发的理想选择——将表示与底层数据模型分离。但我只是在学习,所以我不知道。如有任何教程或参考资料,将不胜感激。

Java中的Swing使用MVC。可能值得一看吗?

看看《头先设计模式》一书。它是实现设计模式的极好指南,并且有一个MVC的实例。

这使用了MVC。拼凑一个小游戏可能是掌握设计模式的一种有趣方式。

Objective C和Cocoa中的Mac编程通常是MVC模式


它不是C#/.NET,但如果你想花时间阅读它,你可能会有一些想法。

我没有任何链接可供分享,但我最近一直在尝试。我所做的是创建一个控制器和一个控制器接口。控制器接口实际上实现了几个其他接口,以保持所有独特功能的清晰分离

UI(窗口和窗体)仅通过其接口就具有控制器的句柄。当窗口上发生事件时,窗口类将通过控制器直接将这些事件路由到等价的调用

控制员知道这个模型。在我的例子中,我有一个Oracle数据库和一个SDE数据库。这些都封装在类中,因此我可以控制自己的实现和接口。控制器将向数据库(存在于数据模型名称空间中)发出请求,并对数据进行处理以满足视图的请求


它的实现非常简单,并且使开发非常清晰、简洁。

我相信您在Microsoft的复合应用程序块和智能客户端软件工厂中同时使用了MVC和MVP模式。以下是文档的链接:
MVC最初被定义为GUI应用程序的模块化OOP风格。直到后来,这个名字才被一种完全不同的网络应用分层风格所借用。如果你不注意“web MVC”,你会发现很多“GUI MVC”示例和参考资料。

如果我的声誉足够高,我会对Rick发布的内容发表评论。但既然不是这样,这是我自己的帖子:

我也喜欢Head First design patterns这本书,但我认为它对于您感兴趣的特定主题来说有点太宽泛了

如果您想了解pros如何使用C#.NET WinForms实现MVC,我强烈建议您查看CAB(复合UI应用程序块)


大多数GUI以某种形式使用MVC

MVC并没有什么神奇之处,事实上,它只是一种让你的模型与其他所有东西分开的方式。视图和控件几乎总是成对的,因为视图的实现细节决定了控制器的构建方式

而且,每个实现MVC的人似乎对什么属于哪里有着稍微不同的想法。东西很容易在视图和控制器之间来回滑动——许多视图实际上是由一个完整的微型MVC架构组成的


我不是要你忽略MVC或其他任何东西,这是一套非常好的指导原则,我只是告诉你不要强调提出一套每个人都遵循的、绝对定义MVC的规则,因为你可能找不到。每个人都会稍微弯曲它以适应其体系结构的其余部分。

MVC模式也可以应用于windows窗体。查看MVC#

我会将此作为评论发表,因为我认为这不是一个合适的答案,但MVC是mac上cocoa编程的基本模式。这并不能回答问题。@Eva:但它纠正了一个误解:Eric的情况似乎是“这个web概念听起来不错,我想知道它是否适合GUI开发”,而事实上,它是一个已经适应web的GUI概念(在我看来不是很好),它作为一个注释比作为一个答案更有意义。