桌面应用程序:架构框架?
Posted
技术标签:
【中文标题】桌面应用程序:架构框架?【英文标题】:Desktop Applications: Architectural Frameworks? 【发布时间】:2010-09-14 02:31:03 【问题描述】:我想知道是否有任何架构框架可以创建桌面或独立应用程序,例如用 Java 或 C#。似乎有大量可用于 Web 应用程序的资源,但我找不到很多关于桌面开发框架或架构最佳实践的好资源。
理想情况下,我想知道是否有任何可用的桌面应用程序源代码被认为具有良好的架构或使用特定框架构建。
【问题讨论】:
【参考方案1】:您可以在客户端开发中使用您在 Web 开发中使用的一些相同方法,例如 Model View Presenter。 System.Windows.Forms 命名空间包含您在 C# 中构建客户端应用程序所需的一切,而 .NET Framework 的其余部分可用于提供您需要的服务(例如 IO 和远程处理)。
至于桌面应用程序中可靠架构的源代码,请查看Paint.NET 和SharpDevelop 的代码。两者都有非常不同的方法,您会很感兴趣。
对于这个回复的 .NET 倾斜表示抱歉。这是我最了解的。 :)
【讨论】:
【参考方案2】:查看微软的Smart Client Software Factory。它包含代码示例和文档。
概述
这个软件工厂提供经过验证的 发现的共同挑战的解决方案 在构建和运营复合材料时 智能客户端应用程序。它有助于 建筑师和开发商建造 模块化系统,可以构建和 由独立团队部署。 使用该软件构建的应用程序 工厂使用经过验证的做法 操作,例如集中式 异常记录。
软件工厂包含一个 可重用组件的集合和 库,Visual Studio 2008 解决方案 模板、向导和扩展, 操作方法主题、自动化测试、 广泛的架构文档, 模式和参考 执行。软件工厂 使用 Windows 窗体、Windows 演示基础,Windows 通信基金会和 Enterprise Library 3.1 – 2007 年 5 月 发布。在此版本中, 复合 UI 应用程序块是 包含在软件工厂中。
【讨论】:
如果您要为公司编写企业桌面应用程序。我建议不要为公司的每一个小需求编写一次性应用程序。编写一个复合应用程序并构建一个平台。 SCSF也是我的推荐。用户喜欢去一个地方。开发人员喜欢拥有一个可插拔的平台......并且只有一个应用程序可以维护/部署。【参考方案3】:在 Java 中,裸对象 -- http://nakedobjects.org/home/index.shtml
JMatter -- 裸对象的实现 -- http://jmatter.org/。挺好的。
它们都是开源的。
【讨论】:
【参考方案4】:有一个新的.NET architectural guidance package from Microsoft patterns & practices for WPF that is code named "Prism"——它基本上是一个“下一代”复合 UI 应用程序块(没有 SCSF 工具)。它始终使用依赖注入、复合模式等。
有一个很好的DNRTV截屏演示。
【讨论】:
【参考方案5】:虽然与桌面应用程序没有直接关系,但如果您正在为编写良好的项目寻找体面的源代码,我问了一个类似的问题:
Open source C# projects that have extremely high code quality to learn from.
人们在那里提出了一些很好的建议:
Scott Hanselman 的The Weekly Source Code 系列(通常 托管 C#) Microsoft Patterns & Practices 团队编写的代码。 SharpDevelop(用 C# 编写) Mono(大部分框架用 C#) Paint.Net(用 C# 编写) NHibernate(用 C# 编写) The Castle Project(用 C# 编写) xUnit(用 C# 编写) .Net Framework Source Code
【讨论】:
【参考方案6】:在轻量级应用程序类别中,JSR 296 for Java(未来可能是 Java 7)是一个处理资源管理和操作等基础知识的框架。这里有很多链接:
http://tech.puredanger.com/java7#jsr296稍微放大一点,您可以查看各种 RCP 框架,例如:
Eclipse RCP:http://wiki.eclipse.org/index.php/Rich_Client_Platform NetBeans 平台:http://www.netbeans.org/products/platform/ 弹簧RCP:http://spring-rich-c.sourceforge.net/1.0.0/index.html 对比文章:http://www.infoq.com/news/eclipse-rcp-netbeans-platform更新:已经提到(Mark Reinhold 在 Devoxx '08 上)JSR 296 将包含在 Java 7 中。
进一步更新:JSR 296 已死。 JavaFX 是客户端 Java 的当前方向。
【讨论】:
【参考方案7】:我们在这里使用 .NET 技术进行开发。
我们在客户端应用程序上工作的朋友将他们的软件开发为通常与 Web 开发相关的 Model View Presenter 设计模式。对于他们来说,他们发现它工作得很好,我相信这可能值得一试。
Smart Client Factory(Panos 提到的)可能对您也有用,尽管它不是一个框架,而是一个针对常见问题的最佳实践解决方案库。
【讨论】:
【参考方案8】:在 Java 方面,有几个针对富客户端平台的项目(RCP 是“桌面”应用程序的新流行词):
Eclipse RCP(如果您可以使用 SWT 而不是 Swing) 弹簧 RCP(其中 正在发生 大修到 Spring Desktop) NetBeans RCP(我不是 印象特别深刻,但是 这正在获得一些牵引力) JSR 296(应用程序框架)-I 其实真的很喜欢这个谷歌上述任何一个,你会得到大量的信息。
【讨论】:
【参考方案9】:特别是我们一直在使用infonode docking windows 的ui 函数的组织表示框架,这是一个使用类似日食的外观的窗口框架(将视图拖动到任何地方,关闭它们,取消停靠它们等,当然可以换肤)。有一个用于开源产品的 gpl 版本,尽管开发者许可证并不昂贵(每个 299 美元)。
【讨论】:
【参考方案10】:我会推荐 Rockford Lhotka 的 CSLA .NET 框架:http://www.lhotka.net/cslanet/Default.aspx
它包含完整的源代码以及在 ASP.NET、WinForms 和 WPF 中构建的示例客户端应用程序。
【讨论】:
【参考方案11】:我刚刚找到了看起来很有趣的Composite Application Guidance for WPF and Silverlight。它于 2009 年 2 月出版。
【讨论】:
【参考方案12】:查看 IdeaBlade 的 Cabana 以获取 DotNet C#。 http://www.ideablade.com/CAB.html
Cabana 示例应用程序
Cabana 应用程序是一个简单的智能客户端参考应用程序,具有清晰、功能丰富的用户体验,易于在 Web 上部署和操作。小屋演示:
Microsoft 模式与实践组的复合 UI 应用程序块的简单方法。 通过 UI 组合可维护、可重用的代码。 模型(业务逻辑和数据访问)与表示分离。 模型-视图-演示者模式。 性能调优。 和更多。
【讨论】:
【参考方案13】:我最近发布了 DesktopBootstrap。我试图将创建中型到大型桌面应用程序的许多常见元素分解出来。
你可以找到它here。
【讨论】:
以上是关于桌面应用程序:架构框架?的主要内容,如果未能解决你的问题,请参考以下文章