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

9
我在这个主题上找到了一篇微软员工的文章, 但是否有人实现了更强大的框架?是否有一个轻量级的WinForms框架可以轻松移植?我想尽快掌握并避免自己编写处理此问题的框架/库,当已经有更聪明的人做过这件事情时。
我还没有看过P&P组的Mobile Software Factory, 但我怀疑它可能比较沉重。值得一看吗?
编辑:我不是在寻找ASP.NET MVC项目的信息。我正在询问紧凑型框架“WinForms”的实现方式,以及如何使用MVC实现。
7个回答

5
我个人认为移动软件工厂对CF并没有太多的乐趣。我们在工作中仍然使用其中的一部分(EventBroker),如果可能的话,我希望甚至删除该部分(因为它不支持通用事件,并且您必须将参数从EventArgs转换为其强类型)。我们在工作中有一个姊妹项目在其UI的一部分中使用它,但由于性能问题(另一个大型项目,尽管它本身也有额外的性能问题),不得不将其剥离。
我发现P&P库提供的MVP框架的问题在于,表单和控件拥有Presenter,而不是Presenter / Controller拥有表单(谁没有看过“只是一个视图”:实用程序员?)。这与MS的“表单优先”快速应用程序开发口号非常契合,但是当您考虑到CE中窗口句柄可能非常昂贵时,它就会变得糟糕(如果您有很多这样的窗口句柄)。我们在工作中运行一个非常大的CF应用程序,并且我们已经推出了自己的MVC框架。自己制作并不难,只需确保将所有内容分解为控制器,视图,业务对象和服务,并具有控制器之间交互的UIController。
我们实际上更进一步,通过使用Controller->View->Layout模式来重复使用表单/控件。控制器与通常相同,视图是将布局定制为特定视图的对象,而布局则是实际的UserControl。然后我们在单个表单中交换它们。这大大减少了我们使用的Windows控件数量。这加上在启动时初始化所有表单意味着我们消除了创建新的Windows控件时出现的明显暂停。
显然,只有在开发大型应用程序时才真正值得这样做。我们大约有20多种不同类型的视图,总共使用大约7种不同的布局。这会对我们的初始化例程产生影响(因为我们在启动时加载表单),约为10秒的数量级,但心理上大多数用户愿意接受这样的启动命中,而不是在运行时出现明显的暂停。
P&P库的主要问题在于它是FF -> CF移植,并且由于两个平台之间的某些不兼容性和性能差异,您会失去很多有用的功能。
顺便说一下,绝对是我读过的关于MVC / MVP的最全面的文章。对于Windows应用程序(桌面或CE),我建议使用Taligent Model-View-Presenter版本,不包括交互,命令和选择(例如控制器/Presenter执行所有工作)。

CF?CE?FF?你能定义这些术语吗? - StayOnTarget
紧凑框架,Windows CE,完整框架(即桌面.NET)。 - Quibblesome

3

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


2

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


1

@DavidG和@KevenPang

MVC不仅限于网络技术,实际上最初的Smalltalk MVC是为桌面应用程序设计的。

它的工作方式如下:

  • View = 客户端表单
  • Controller = 封装客户端事件并在视图和模型之间进行调度的控制器
  • Model = 应用程序数据与业务逻辑

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

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

等等,模型将保持不变,但每种情况下视图将创建不同的输出对象。

话虽如此,我不知道.NET Compact Framework是否存在这样的框架,我只是想指出MVC并不意味着WebApp。


0

看一下 mFly's Mobile MVC。虽然我从未使用过它,但它被推销为CF的一个合理的MVC框架。


0
@davidg: "为什么你想在紧凑框架上使用MVC?"
为什么不呢?这并不意味着它只适用于Web开发,它是一种模式。

-6

编辑:以上海报是正确的。我看到MVC,立即想到了Web表单。对此我深表歉意。如果有人对Web表单MVC感兴趣,可以忽略这个。:-)

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

  • ASP.NET MVC - 这是微软尝试开发的MVC框架。它仍处于预览模式,因此请自行决定是否使用,但已经有几个人在他们的生产应用程序中使用它。您将会发现大量文档,只需简单的谷歌搜索,因为它正在.NET群体中变得非常流行。
  • Castle MonoRail - MonoRail框架是一个开源的MVC框架,已经存在相当长的时间,并且在几个生产应用程序中使用。它肯定比ASP.NET MVC框架更加完善,但考虑到微软正在投入大量精力开发他们的MVC产品,我认为这种情况很快就会改变。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接