Compact Framework - 是不是有可用的 MVC 框架/库?

Posted

技术标签:

【中文标题】Compact Framework - 是不是有可用的 MVC 框架/库?【英文标题】:Compact Framework - Is there an MVC framework/library available?Compact Framework - 是否有可用的 MVC 框架/库? 【发布时间】:2010-09-06 18:46:58 【问题描述】:

我发现一位 Microsoft 员工在此主题上找到了 an article,但有没有人为此实施了更强大的框架?是否有可以轻松移植的轻量级 WinForms 框架?当更聪明的人已经做到这一点时,我想相当快地加快速度并避免生成我自己的框架/库来处理这个问题。

我没有看过 P&P 组的Mobile Software Factory,但我怀疑它有点重。值得一看吗?

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

【问题讨论】:

【参考方案1】:

还有OpenNETCF IoC framework(在提出这个问题时我认为不存在),它更轻,但在对象模型上类似于 P&P 的移动软件工厂。

【讨论】:

【参考方案2】:

@davidg:“为什么要在 Compact Framework 上使用 MVC?”

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

【讨论】:

【参考方案3】:

看看mFly's Mobile MVC。我从未使用过它,但它被宣传为 CF 的合理 MVC 框架。

【讨论】:

【参考方案4】:

编辑:以上海报是正确的。看到MVC,立马想到了web表单。我很抱歉。随意忽略这一点。我将保留我的原始信息,以防对 Web 表单 MVC 感兴趣的任何人需要这些链接。 :-)

有几个 MVC 框架,它们都不是非常“轻量级”,但 MVC 与 Web 表单相比有很大的转变,因此这是意料之中的:

ASP.NET MVC - 这是微软对 MVC 框架的尝试。它仍处于预览模式,因此请自行决定使用它,但有几个人已经在他们的生产应用程序中使用它。您可以通过简单的 Google 搜索找到大量相关文档,因为它在 .NET 人群中变得非常流行。 Castle MonoRail - MonoRail 框架是一个开源 MVC 框架,它已经存在了很长一段时间,并在多个生产应用程序中使用。它肯定比 ASP.NET MVC 框架更流行,但考虑到微软在他们的 MVC 产品上投入的精力,我认为很快就会改变。

【讨论】:

【参考方案5】:

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

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

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

显然,如果您正在滚动一个大型应用程序,那么做这种事情才真正值得。我们有大约 20 多种不同类型的 View,总共使用了大约 7 种不同的布局。这会损害我们的初始化例程(因为我们在启动时加载表单)大约 10 秒,但从心理上讲,大多数用户愿意在启动时接受这样的打击,而不是在运行时出现明显的暂停。

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

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

【讨论】:

CF?行政长官?法郎?你能定义这些术语吗? 紧凑型框架、Windows CE、完整框架(即桌面 .net)【参考方案6】:

@DavidG 和 @KevenPang

MVC 并不局限于一种网络技术,事实上,最初的 smalltalk MVC 是针对桌面应用程序的。

它是这样工作的:

查看 = 客户表单 Controller = 封装客户端事件并在视图和模型之间编组 模型 = 应用程序数据和业务逻辑

在纯 Smalltalk MVC 中,视图不仅限于表单,还可以是模型数据的任何表示形式...例如,如果我们有一个表示电子表格的模型,我们可以有以下视图:

电子表格视图 打印机友好视图 图标视图

等等,模型是相同的,但视图会在每种情况下创建不同的输出对象。

说了这么多,我不知道.NET Compact框架是否存在这样的框架,我只是想指出MVC并不意味着WebApp。

【讨论】:

【参考方案7】:

你们(davidg 或 Kevin Pang)都没有注意到他对 WinForms 感兴趣,而不是 Web Forms。他想要一个在使用 .NET Compact Framework 的 WinForms 项目中推动模型-视图-控制器设计模式(davidg,MVC 不仅仅是 ASP.NET 框架的名称)的框架。他的问题问得很好。

【讨论】:

以上是关于Compact Framework - 是不是有可用的 MVC 框架/库?的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server CE 3.5 和 .NET Compact Framework 2.0 SP2

Compact-Framework:最小化和恢复不起作用

Compact Framework 的 Zip 库选项?

Compact Framework 3.5 设置表单父级

如何使用 Compact Framework 加粗文本

.NET Compact Framework 中的 OCR 图像