C# 用于.NET WinForms应用程序的MVC/MVP框架

C# 用于.NET WinForms应用程序的MVC/MVP框架,c#,.net,windows,winforms,frameworks,C#,.net,Windows,Winforms,Frameworks,有人知道一个可用于企业WinForms应用程序的MVC/MVP框架吗 在那之前。但自从发布以来(也将用.NET4.0完全重写),它不再处于开发阶段 也许我不是最新的,但在我看来,现在有差距。你试过了吗?我不久前开始使用它,但是这个项目被搁置了,所以我不能保证它有多大的用处-对不起 编辑:我刚刚找到了一篇看起来也不错的文章。智能客户端软件工厂?我一直都在推出自己的-这并不难,我对代码库的“控制”越多,感觉就越好 我只是想知道MVC框架如何与CastleWindsor之类的东西相适应 这可能不是最有

有人知道一个可用于企业WinForms应用程序的MVC/MVP框架吗

在那之前。但自从发布以来(也将用.NET4.0完全重写),它不再处于开发阶段

也许我不是最新的,但在我看来,现在有差距。

你试过了吗?我不久前开始使用它,但是这个项目被搁置了,所以我不能保证它有多大的用处-对不起


编辑:我刚刚找到了一篇看起来也不错的文章。

智能客户端软件工厂?

我一直都在推出自己的-这并不难,我对代码库的“控制”越多,感觉就越好

我只是想知道MVC框架如何与CastleWindsor之类的东西相适应


这可能不是最有用的答案,但只是想知道你是否已经考虑过这个选项

我们使用微软的智能客户端软件工厂。它提供IDE集成、完整的MVC支持,一旦你理解了背后的概念,它就是一个非常有能力的实现。您可以从以下位置获取它:

Microsoft具有用于WinForms应用程序的复合应用程序块(CAB)。虽然从技术上讲不是MVC/MVP实现,但它确实在UI代码和非UI代码之间提供了很好的分离:

只要您熟悉相关的模式,不使用任何框架而自己动手也是相当流行的。Jeremy Miller有一系列关于采用这种方法时的一些最佳实践的优秀文章:


我不喜欢Prism、CAB或SmartClient过于复杂,最终推出了自己的实现


随着时间的推移,一些常见的模式正在出现。它们可以从一个应用程序重用到另一个应用程序。下面是一个示例:。

我正在插入自己的框架:。它基于DDD和裸体对象模式


至少,使用它来创建快速原型是从业务用户那里获得良好反馈的一种好方法。

所有这些标准框架都不适合大型复杂应用程序开发,它们假设显示是静态的。 由于屏幕控件必须是动态的这一共同要求,我也开发了自己的控件,甚至MVC/MVP模式也假设显示将是静态的,因此当控件中显示的字段取决于用户的角色时,MVC/MVP模式不适用。 我开发了一个工具,您可以通过将业务对象及其属性加载到数据库中来构建屏幕,然后用户只需选择要显示的对象和对象属性,一个控件可以由任意数量的控件组组成,每个控件组可以包含任意业务对象属性,业务对象由我的Linq ORM从视图生成。因此,控件将仅显示用户有权访问的控件组的字段。
您也可以使用面向方面的编程来为MVC模式提供gule,但当显示器必须基于角色进行动态显示时,这种开销可能会增加一点或更多的复杂性和性能成本。

除了TrueView之外,还有一个新的功能。这支持客户机/服务器模式,当前正在移植web查看器(基于Java等效查看器)

对于给定的用户/角色,哪些属性/操作可用,这是在裸对象中动态完成的。支持三种类型的业务规则先决条件:1。成员是否可见?2.成员可用吗?3.对成员(新属性值或操作参数)的更改是否有效?或者,更简而言之:你能看到它吗?你能用它吗?你能做到吗?裸对象编程模型允许以声明方式和强制方式指定这些规则

即使您最终在自己的UI层中包装您的域模型,我建议您查看NO

干杯

丹海伍德


作者:“使用裸对象的域驱动设计”,pragprog.com

我成功地使用了以下开源项目在ASP.NET+WinForms+C#中实现MVP模式:

  • 城堡计划
请看我的博客文章,其中显示了完整的ASP.NET Web应用程序示例:


我看不出MVC/MVP模式是如何阻止你做你提到的任何事情的。codebeeter.com似乎有问题。希望只有今天!在本系列中有没有关于所说内容的示例代码?很抱歉,如果它们链接在同一篇文章中,我错过了。FWIW,MSDN文档现在声明已失效的内容此内容已过时,不再维护。它是为仍在使用这些技术的个人提供的一种礼貌。