我找到了 一篇文章 微软员工讨论了这个主题,但是有人为此实现了更强大的框架吗?是否有一个可以轻松移植的轻量级 WinForms 框架?我想相当快地加快速度,并避免在更聪明的人已经这样做的情况下生成我自己的框架/库来处理这个问题。

我还没看过 移动软件工厂 来自 P&P 集团,但我怀疑它有点重。值得一看吗?

编辑:我不是在寻找有关 ASP.NET MVC 项目的信息。我问的是紧凑框架“WinForms”的实现,以及如何用它来实现 MVC。

有帮助吗?

解决方案

我个人认为移动软件工厂对CF来说并没有太大的乐趣。我们在工作中仍然使用其中的一部分(EventBroker),如果可能的话,我什至想删除该部分(因为它不支持通用事件,并且您必须将参数从 EventArgs 转换为强类型)。工作中的一个姐妹项目将其用于其 UI 的一部分,但由于性能问题而不得不将其删除(另一个大项目,尽管它本身也存在其他性能问题)。

我发现 P&P 库提供的 MVP 框架的问题是表单和控件拥有演示者,而不是拥有表单的演示者/控制器(谁没有读过“这只是一个视图”:务实的程序员?)。这非常符合 MS 的“Form First”快速应用程序开发口号,但是当您考虑到 CE 中的 Windows 句柄有多么昂贵(如果您有很多窗口句柄)时,它就很糟糕了。我们在工作中运行一个非常大的 CF 应用程序,并且我们已经推出了自己的 MVC 框架。推出自己的并不难,只需确保将所有内容分离为控制器、视图、业务对象和服务,并拥有一个控制控制器之间交互的 UIController。

实际上,我们更进一步,通过使用控制器->视图->布局模式来重用表单/控件。控制器与平常相同,视图是将布局自定义为特定视图的对象,而布局是实际的 UserControl。然后我们将它们换入和换出单个表格。这大大减少了我们使用的 Windows 控件的数量。在启动时初始化所有表单意味着我们消除了“按需”创建新 Windows 控件时出现的明显暂停。

显然,只有当您正在滚动大型应用程序时,才真正值得做这种事情。我们有大约 20 多种不同类型的视图,总共使用大约 7 种不同的布局。这会损害我们的初始化例程(因为我们在启动时加载表单)大约 10 秒,但从心理上来说,大多数用户愿意接受启动时的这种冲击,而不是运行时明显的暂停。

我书中 P&P 库的主要问题是它是 FF -> CF 端口,并且由于两个平台之间的某些不兼容性和性能差异,您会失去很多有用的功能。

顺便提一句, 迄今为止,这是我读过的关于 MVC/MVP 的最全面的文章。对于 Windows 应用程序(桌面或 CE),我建议使用 Taligent Model-View-Presenter 版本,无需交互、命令和选择(例如控制器/演示器执行所有工作)。

其他提示

你们(davidg 或 Kevin Pang)都没有注意到他感兴趣的事实 窗体, , 不是 网页表格. 。他想要一个使用 .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 的移动 MVC. 。我从未使用过它,但它被认为是 CF 的一个合理的 MVC 框架。

@大卫:“为什么你想要在 Compact Framework 上使用 MVC?”

为什么不?它不像是为网络开发保留的,它是一种模式。

编辑:上述海报是正确的。我看到 MVC 并立即想到了 Web 表单。我很抱歉。请随意忽略这一点。我会保留我原来的信息,以防万一有人 对 Web 表单 MVC 感兴趣需要链接。:-)

有几个 MVC 框架,它们都不是非常“轻量级”,但 MVC 与 Web 表单相比是一个相当大的转变,因此这是预期的:

  • ASP.NET MVC - 这是微软对MVC框架的尝试。它仍处于预览模式,因此您可以自行决定使用它,但有些人已经在他们的生产应用程序中使用它。通过简单的 Google 搜索,您就可以找到有关此内容的大量文档,因为它在 .NET 人群中变得非常流行。
  • 城堡单轨铁路 - MonoRail 框架是一个开源 MVC 框架,已经存在相当长一段时间了,并在多个生产应用程序中使用。它肯定比 ASP.NET MVC 框架更加成熟,但考虑到 Microsoft 在 MVC 产品上投入的大量精力,我认为很快就会发生变化。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top