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

时间:2020-03-05 18:42:53  来源:igfitidea点击:

我找到了一位Microsoft员工关于此主题的文章,但是有人针对此实现了更强大的框架吗?是否有可以轻松移植的WinForms轻量级框架?我想相当快地加快速度,并避免生成自己的框架/库来在聪明的人已经做到这一点的情况下进行处理。

我没有看过P&P小组的移动软件工厂,但是我怀疑它太重了。值得一看吗?

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

解决方案

回答

编辑:以上海报正确。我看到了MVC,立即想到了Web表单。我很抱歉。随意忽略此。我会将原始消息保留在原处,以防对MVC Web表单感兴趣的任何人需要链接。 :-)

有几个MVC框架,它们都不是"轻量级"的,但是MVC相对于Web表单有很大的转变,因此可以预期:

  • ASP.NET MVC-这是Microsoft对MVC框架的尝试。它仍然处于预览模式,因此我们可以自行决定使用它,但是已经有几个人在其生产应用程序中使用它。通过简单的Google搜索,我们会发现很多关于此的文档,因为它在.NET人群中越来越受欢迎。
  • Castle MonoRail-MonoRail框架是一个开源MVC框架,已经存在了很长一段时间,并且已经在多个生产应用程序中使用。它肯定比ASP.NET MVC框架更为完善,但是考虑到Microsoft在其MVC产品上投入的精力,我认为它会很快改变。

回答

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

回答

@DavidG和@KevenPang

MVC不限于Web技术,实际上,最初的smalltalk MVC是用于桌面应用程序的。

它的工作方式如下:

  • 查看=客户表格
  • 控制器=总结客户事件并在视图和模型之间封送
  • 模型=应用程序数据和业务逻辑

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

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

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

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

回答

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

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

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

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

我的书中P&P库的主要问题是它是FF-> CF端口,由于两个平台之间存在某些不兼容和性能差异,因此我们失去了许多有用的功能。

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

回答

看一下mFly的Mobile MVC。我从未使用过它,但是它被认为是CF的合理MVC框架。

回答

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

为什么不?这不像是为Web开发人员保留的,而是一种模式。

回答

还有一个OpenNETCF IoC框架(问这个问题时我不认为它不存在),它轻巧得多,但对象模型与P&P的移动软件工厂相似。