我已经找到了an article关于这个问题的微软员工,但有没有人为此实现了更强大的框架? WinForms的轻量级框架是否可以轻松移植?我想快速加快速度并避免生成我自己的框架/库来处理这个问题,当有智慧的人已经这样做了。
我没有看过P& P组的Mobile Software Factory,但我怀疑它有点沉重。值得一看吗?
编辑:我不是在寻找有关ASP.NET MVC项目的信息。我问的是紧凑框架的'WinForms'实现,以及如何用它实现MVC。
答案 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用于桌面应用程序。
它的工作原理如下:
在纯Smalltalk MVC中,View不仅仅是一个表单,而是可以是Model Data的任何表示......例如,如果我们有一个表示电子表格的Model,我们可以有以下视图: / p>
等,模型将是相同的,但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表单,所以这是预期的: