紧凑框架 - 是否有可用的MVC框架/库?

时间:2008-08-25 16:36:31

标签: c# model-view-controller windows-mobile compact-framework design-patterns

我已经找到了an article关于这个问题的微软员工,但有没有人为此实现了更强大的框架? WinForms的轻量级框架是否可以轻松移植?我想快速加快速度并避免生成我自己的框架/库来处理这个问题,当有智慧的人已经这样做了。

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

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

7 个答案:

答案 0 :(得分:5)

我个人认为移动软件工厂对CF没有太大的喜悦。 我们仍在使用它的一部分(EventBroker),如果可能的话我甚至要删除那部分(因为它不支持通用事件,你必须将参数从EventArgs转换为强类型)。工作中的姐妹项目将其用于部分UI,但由于性能问题不得不将其删除(另一个大项目,尽管它还有其他性能问题)。

我在MVP框架中发现P& P lib提供的问题是表单和控件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版本而不进行交互,命令和选择(例如控制器/演示者执行所有工作)。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

@DavidG和@KevenPang

MVC并不仅限于网络技术,实际上最初的小型MVC用于桌面应用程序。

它的工作原理如下:

  • 查看=客户表单
  • Controller =在View和Model之间包装客户端事件和编组
  • 模型=应用程序数据和业务逻辑

在纯Smalltalk MVC中,View不仅仅是一个表单,而是可以是Model Data的任何表示......例如,如果我们有一个表示电子表格的Model,我们可以有以下视图: / p>

  • SpreadSheet View
  • 打印机友好视图
  • 图标视图

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

所有这一切,我不知道.NET Compact框架是否存在这样的框架,我只想指出MVC并不意味着WebApp。

答案 4 :(得分:0)

看看mFly's Mobile MVC。我从来没有使用它,但它是CF的合理MVC框架。

答案 5 :(得分:0)

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

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

答案 6 :(得分:-6)

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

有一些MVC框架,它们都不是非常“轻量级”,但MVC是一个相当大的转变,远离Web表单,所以这是预期的:

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