我找到了 Microsoft 员工关于此主题的文章,但有没有人为此实施了更强大的框架?是否有可以轻松移植的轻量级 WinForms 框架?当更聪明的人已经做到这一点时,我想相当快地加快速度并避免生成我自己的框架/库来处理这个问题。
我没有看过P&P 集团的移动软件工厂,但我怀疑它有点重。值得一看吗?
编辑:我不是在寻找有关 ASP.NET MVC 项目的信息。我在询问紧凑框架“WinForms”的实现,以及如何用它来实现 MVC。
我找到了 Microsoft 员工关于此主题的文章,但有没有人为此实施了更强大的框架?是否有可以轻松移植的轻量级 WinForms 框架?当更聪明的人已经做到这一点时,我想相当快地加快速度并避免生成我自己的框架/库来处理这个问题。
我没有看过P&P 集团的移动软件工厂,但我怀疑它有点重。值得一看吗?
编辑:我不是在寻找有关 ASP.NET MVC 项目的信息。我在询问紧凑框架“WinForms”的实现,以及如何用它来实现 MVC。
我个人认为移动软件工厂对 CF 来说并没有太多的乐趣。我们仍然在工作中使用它的一部分(EventBroker),如果可能的话,我什至想删除那部分(因为它不支持通用事件,您必须将参数转换为来自 EventArgs 的强类型)。工作中的一个姊妹项目将它用于他们的 UI 的一部分,但由于性能问题不得不将其删除(另一个大项目,尽管它自己也有额外的性能问题)。
我发现 P&P lib 提供的 MVP 框架的问题是 Forms and Controls OWN Presenters 而不是 Presenters/Controllers 拥有 Forms(谁没有读过“这只是一个视图”:Pragmatic Programmer?)。这与 MS 的“表单优先”快速应用程序开发口号完美契合,但当您考虑到 CE 中的窗口句柄可能有多昂贵时(如果您有很多窗口句柄),它就很糟糕。我们在工作中运行一个非常大的 CF 应用程序,并且我们推出了自己的 MVC 框架。自己动手并不难,只需确保将所有内容分离为控制器、视图、业务对象和服务,并拥有一个 UIController 来控制控制器之间的交互。
我们实际上更进一步,通过使用 Controller->View->Layout 模式来重用表单/控件。控制器和往常一样,视图是将布局自定义为特定视图的对象,布局是实际的用户控件。然后,我们将它们换入和换出一个表单。这大大减少了我们使用的 Windows 控件的数量。这 + 在启动时初始化所有表单意味着我们消除了“按需”创建新 Windows 控件时出现的明显停顿。
显然,如果您正在滚动一个大型应用程序,那么做这种事情才真正值得。我们有大约 20 多种不同类型的 View,总共使用了大约 7 种不同的布局。这会损害我们的初始化程序(因为我们在启动时加载表单)大约 10 秒,但从心理上讲,大多数用户愿意在启动时接受这样的打击,而不是在运行时出现明显的暂停。
在我的书中,P&P 库的主要问题是它是一个 FF -> CF 端口,并且由于两个平台之间的某些不兼容和性能差异,您会失去很多有用的功能。
顺便说一句,这是迄今为止我读过的关于 MVC/MVP 的最全面的文章。对于 Windows 应用程序(桌面或 CE),我建议使用没有交互、命令和选择的 Taligent Model-View-Presenter 版本(例如控制器/演示器执行所有工作)。
你们(davidg 或 Kevin Pang)都没有注意到他对WinForms感兴趣,而不是Web Forms。他想要一个在使用 .NET Compact Framework 的 WinForms 项目中推动模型-视图-控制器设计模式(davidg,MVC 不仅仅是 ASP.NET 框架的名称)的框架。他问他的问题就好了。
还有一个OpenNETCF IoC 框架(当被问到这个问题时我认为它不存在),它更轻,但在对象模型上与 P&P 的移动软件工厂相似。
@DavidG 和 @KevenPang
MVC 不仅限于一种 Web 技术,事实上,最初的 smalltalk MVC 是针对桌面应用程序的。
它是这样工作的:
在纯 Smalltalk MVC 中,视图不仅限于表单,还可以是模型数据的任何表示形式……例如,如果我们有一个表示电子表格的模型,我们可以有以下视图:
等等,模型将是相同的,但视图会在每种情况下创建不同的输出对象。
说了这么多,我不知道.NET Compact框架是否存在这样的框架,我只是想指出MVC并不意味着WebApp。
看看mFly 的 Mobile MVC。我从未使用过它,但它被定位为 CF 的合理 MVC 框架。
@davidg:“为什么要在 Compact Framework 上使用 MVC?”
为什么不?它不像是为 Web 开发保留的,它是一种模式。
编辑:以上海报是正确的。看到MVC,立马想到了web表单。我很抱歉。随意忽略这一点。我将保留我的原始信息,以防万一对 Web 表单 MVC 感兴趣的人需要这些链接。:-)
有几个 MVC 框架,它们都不是非常“轻量级”的,但是 MVC 与 Web 表单相比是一个很大的转变,所以这是意料之中的: