【问题标题】:Compact Framework - Is there an MVC framework/library available?Compact Framework - 是否有可用的 MVC 框架/库?
【发布时间】:2010-09-06 18:46:58
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        看看mFly's Mobile MVC。我从未使用过它,但它被宣传为 CF 的合理 MVC 框架。

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

            • CF?行政长官?法郎?你能定义这些术语吗?
            • 紧凑型框架、Windows CE、完整框架(即桌面 .net)
            【解决方案6】:

            @DavidG 和 @KevenPang

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

            它是这样工作的:

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

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

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

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

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-04-30
                • 1970-01-01
                • 2010-09-28
                • 2011-04-19
                相关资源
                最近更新 更多