桌面应用程序:体系结构框架?
我想知道是否有任何架构框架可以用Java或者Cfor创建桌面或者独立应用程序。似乎有很多可用于Web应用程序的资源,但是我找不到有关桌面开发的框架或者体系结构最佳实践的大量有用资源。
理想情况下,我想知道是否存在桌面应用程序的任何源代码,这些源代码被认为具有良好的体系结构或者使用特定框架构建。
解决方案
我们可以在客户端开发中使用与Web开发中相同的方法,例如Model View Presenter。 System.Windows.Forms命名空间具有使用C#构建客户端应用程序所需的一切,其余.NET Framework可用于提供所需的服务(如IO和远程处理)。
至于桌面应用程序中的固体体系结构的源代码,请查看Paint.NET和SharpDevelop的代码。两者都有非常不同的方法,我们会对此感兴趣。
很抱歉此回复的.NET偏向。这是我最了解的。 :)
检查Microsoft的智能客户端软件工厂。它包含代码示例和文档。
Overview This software factory provides proven solutions to common challenges found while building and operating composite smart client applications. It helps architects and developers build modular systems that can be built and deployed by independent teams. Applications built with the software factory use proven practices for operations, such as centralized exception logging. The software factory contains a collection of reusable components and libraries, Visual Studio 2008 solution templates, wizards and extensions, How-to topics, automated tests, extensive architecture documentation, patterns, and a reference implementation. The software factory uses Windows Forms, Windows Presentation Foundation, Windows Communication Foundation, and the Enterprise Library 3.1 – May 2007 release. With this release, the Composite UI Application Block is included in the software factory.
在Java中,裸对象-http://nakedobjects.org/home/index.shtml
JMatter-裸对象的实现-http://jmatter.org/。不错。
它们都是开源的。
从Microsoft的WPF模式和实践中获得了一个新的.NET体系结构指导软件包,其代码名为" Prism"-它基本上是"下一代"复合UI应用程序块(不带SCSF工具)。它使用依赖注入,贯穿始终的Composite模式等。
有一个不错的DNRTV截屏演示。
如果我们正在寻找写得好的项目的不错的源代码,虽然与桌面应用程序没有直接关系,但我提出了类似的问题:
具有极高代码质量可供学习的开源Cproject。
人们在那里提出了一些很好的建议:
Scott Hanselman's The Weekly Source Code series (usually managed C#) Code written by Microsoft Patterns & Practices team. SharpDevelop (written in C#) Mono (most of the framework in C#) Paint.Net (written in C#) NHibernate (written in C#) The Castle Project (written in C#) xUnit (written in C#) .Net Framework Source Code
在轻量级应用程序类别中,用于Java的JSR 296(可能会在将来的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/
- Spring RCP:http://spring-rich-c.sourceforge.net/1.0.0/index.html
- 比较文章:http://www.infoq.com/news/eclipse-rcp-netbeans-platform
更新:已经提到(Devoxx '08的Mark Reinhold),JSR 296将包含在Java 7中。
进一步更新:JSR 296已死。 JavaFX是客户端Java的当前方向。
我们在这里使用.NET技术进行开发。
我们在这里从事客户端应用程序工作的朋友将他们的软件开发为通常与Web开发相关的Model View Presenter设计模式。对于他们来说,他们发现它非常有效,我认为值得一试。
Smart Client Factory(由Panos提及)可能对我们也很有用,尽管它不是框架,而是更多的针对常见问题的最佳实践解决方案库。
在Java方面,有几个针对富客户端平台的项目(RCP是"桌面"应用程序的新流行词):
- Eclipse RCP(如果可以,请使用SWT而不是Swing)
- Spring RCP(正在大修到Spring Desktop中)
- NetBeans RCP(我对它没有特别的印象,但是这吸引了一些注意)
- JSR 296(应用程序框架)-我实际上真的很喜欢这个
谷歌以上任何一个,你会得到大量的信息。
特别是对于有组织的ui函数表示框架,我们一直在使用infonode停靠窗口,这是一个使用类似eclipse的外观的窗口框架(拖动视图到任何地方,将其关闭,取消停靠等,当然是可换肤的)。有一个开放源代码产品的gpl版本,尽管afaik的开发者许可证并不算贵(每个299美元)。
我会推荐罗克福德·洛特卡(Rockford Lhotka)的CSLA .NET框架:http://www.lhotka.net/cslanet/Default.aspx
它将附带完整的源代码以及在ASP.NET,WinForms和WPF中构建的示例客户端应用程序。
我刚刚找到了WPF和Silverlight的复合应用程序指南,这看起来非常有趣。它于2009年2月发布。
检查IdeaBlade的Cabana中是否有DotNet C#。
http://www.ideablade.com/CAB.html
Cabana Sample App
Cabana应用程序是一个简单的智能客户端参考应用程序,具有清晰,功能丰富的用户体验,可轻松在Web上部署和操作。 Cabana展示:
Microsoft的Patterns&Practices组的一种简单的方法来处理Composite UI Application Block。
通过UI组成的可维护,可重用的代码。
将模型(业务逻辑和数据访问)与演示分离。
Model-View-Presenter模式。
性能调优。
和更多。