9

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

我没有看过P&P 集团的移动软件工厂,但我怀疑它有点重。值得一看吗?

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

4

7 回答 7

5

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

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

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

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

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

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

于 2008-08-25T17:11:13.143 回答
3

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

于 2008-08-25T16:58:07.200 回答
2

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

于 2010-11-18T13:53:44.193 回答
1

@DavidG 和 @KevenPang

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

它是这样工作的:

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

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

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

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

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

于 2008-08-25T17:00:28.317 回答
0

看看mFly 的 Mobile MVC。我从未使用过它,但它被定位为 CF 的合理 MVC 框架。

于 2008-10-30T23:23:19.397 回答
0

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

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

于 2008-11-10T06:58:35.353 回答
-6

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

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

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