简体   繁体   English

桌面应用程序:架构框架?

[英]Desktop Applications: Architectural Frameworks?

I'm wondering if there are any architectural frameworks out there to create desktop or standalone applications, in Java or C# for instance. 我想知道是否有任何架构框架用于创建桌面或独立应用程序,例如Java或C#。 It seems that there are tons of them available for web applications but I can't find many good resources on frameworks or architectural best-practices for desktop development. 似乎有很多可用于Web应用程序,但我找不到很多关于桌面开发的框架或架构最佳实践的好资源。

Ideally I would like to know if there is any source code available of desktop applications that would be considered to have a good architecture or are built with a certain framework. 理想情况下,我想知道是否有任何可用的桌面应用程序源代码可以被认为具有良好的体系结构或者使用某个框架构建。

While not directly related to desktop applications if you are looking for decent source code for well written projects I asked a similar question: 虽然与桌面应用程序没有直接关系,但如果您正在为编写良好的项目寻找合适的源代码,我会问一个类似的问题:

Open source C# projects that have extremely high code quality to learn from. 具有极高代码质量的开源C#项目可供学习。

People gave some pretty good suggestions there: 人们在那里提出了一些很好的建议:

There's a new .NET architectural guidance package from Microsoft patterns & practices for WPF that is code named "Prism" -- it's basically a "next generation" Composite UI Application Block (without the SCSF tooling). 有一个来自Microsoft的WPF模式和实践的.NET架构指南包,代码名为“Prism” - 它基本上是“下一代”复合UI应用程序块(没有SCSF工具)。 It uses Dependency injection, Composite pattern throughout, etc. 它使用依赖注入,整个复合模式等。

There is a pretty good DNRTV screencast demoing it. 有一个非常好的DNRTV截屏演示它。

In the lightweight app category, JSR 296 for Java (to be in future Java 7 possibly) is a framework handling the basics like resource management and actions. 在轻量级应用程序类别中,JSR 296 for Java(可能是未来的Java 7)是一个处理资源管理和操作等基础知识的框架。 Lots of links here: 这里有很多链接:

Scaling up a bit, you could look at various RCP frameworks like: 扩大一点,你可以看看各种RCP框架,如:

UPDATE: It has been mentioned (by Mark Reinhold at Devoxx '08) that JSR 296 will be included in Java 7. 更新:已经提到(由Mark Reinhold在Devoxx '08),JSR 296将包含在Java 7中。

Further update: JSR 296 is dead. 进一步更新:JSR 296已经死亡。 JavaFX is the current direction for client-side Java. JavaFX是客户端Java的当前方向。

Check Microsoft's Smart Client Software Factory . 查看Microsoft的智能客户端软件工厂 It contains code samples and documentation. 它包含代码示例和文档。

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. 该软件工厂包含一组可重用的组件和库,Visual Studio 2008解决方案模板,向导和扩展,操作方法主题,自动化测试,广泛的体系结构文档,模式和参考实现。 The software factory uses Windows Forms, Windows Presentation Foundation, Windows Communication Foundation, and the Enterprise Library 3.1 – May 2007 release. 该软件工厂使用Windows窗体,Windows Presentation Foundation,Windows Communication Foundation和Enterprise Library 3.1 - 2007年5月发行版。 With this release, the Composite UI Application Block is included in the software factory. 在此版本中,Composite UI Application Block包含在软件工厂中。

In Java, Naked Objects -- http://nakedobjects.org/home/index.shtml 在Java中,Naked Objects - http://nakedobjects.org/home/index.shtml

JMatter -- implementation of naked objects -- http://jmatter.org/ . JMatter - 裸体对象的实现 - http://jmatter.org/ pretty good. 非常好。

both of them are open source. 它们都是开源的。

On the Java side, there are several projects aimed at Rich Client Platforms (RCP is the new buzzword for 'desktop' apps): 在Java方面,有几个针对Rich Client平台的项目(RCP是“桌面”应用程序的新术语):

  • Eclipse RCP (if you are OK using SWT instead of Swing) Eclipse RCP(如果你可以使用SWT而不是Swing)
  • Spring RCP (which is in the process of being overhauled into Spring Desktop) Spring RCP(正在进入Spring桌面的过程中)
  • NetBeans RCP (which I'm not particularly impressed with, but that is getting some traction) NetBeans RCP(我对此并不是特别印象深刻,但这有点牵强)
  • JSR 296 (Application Framework) - I actually really like this one JSR 296(应用程序框架) - 我其实非常喜欢这个

Google any of the above and you'll get tons of info. 谷歌上面的任何一个,你会得到大量的信息。

You can use some of the same approaches in client development that you use in web development, such as Model View Presenter. 您可以在Web开发中使用的客户端开发中使用一些相同的方法,例如Model View Presenter。 The System.Windows.Forms namespace has everything you need to build a client application in C#, with the rest of the .NET Framework available to provide the services you need (such as IO and remoting). System.Windows.Forms命名空间具有在C#中构建客户端应用程序所需的一切,其余的.NET Framework可用于提供所需的服务(例如IO和远程处理)。

As far as source code for solid architectures in desktop apps, look at the code for Paint.NET and SharpDevelop . 至于桌面应用程序中可靠架构的源代码,请查看Paint.NETSharpDevelop的代码。 Both have very different approaches that will be interesting to you. 两者都有非常不同的方法,对你来说很有趣。

Sorry for the .NET slant of this reply. 对不起这个回复的.NET斜面。 It's what I know best. 这是我最了解的。 :) :)

I would recommend CSLA .NET framework by Rockford Lhotka: http://www.lhotka.net/cslanet/Default.aspx 我推荐Rockford Lhotka的CSLA .NET框架: http ://www.lhotka.net/cslanet/Default.aspx

It comes will full source code as well as sample client applications built in ASP.NET, WinForms and WPF. 它将提供完整的源代码以及ASP.NET,WinForms和WPF内置的示例客户端应用程序。

I just found the Composite Application Guidance for WPF and Silverlight which looks very interesting. 我刚刚找到了WPF和Silverlight复合应用指南 ,看起来非常有趣。 It was published in February 2009. 它于2009年2月发布。

We develop in .NET technologies here. 我们在这里开发.NET技术。

Our friends here working on client applications develop their software to the Model View Presenter design pattern that is often associated with Web Development. 我们在这里从事客户端应用程序的朋友将他们的软件开发为通常与Web开发相关联的Model View Presenter设计模式。 For them they find it works very well, I believe it may be worth checking out. 对他们来说,他们发现它运作良好,我相信它可能值得一试。

The Smart Client Factory (mentioned by Panos) may also be useful to you, though it's not a framework but more of a library of best practice solutions to common problems. 智能客户端工厂(Panos提到)也可能对您有用,虽然它不是一个框架,而是一个针对常见问题的最佳实践解决方案库。

Specifically to organized presentation framework of ui functions we have been using infonode docking windows , that's a windowing framework using an eclipse like appearance (drag views anywhere, close them, undock them etc., skinnable of course). 特别是对于ui函数的有组织的表示框架,我们一直在使用infonode对接窗口 ,这是一个使用eclipse外观的窗口框架(在任何地方拖动视图,关闭它们,取消它们等等,当然可以换肤)。 there's a gpl version for open source products out, altough afaik the developer licence is not that expensive ($299 each). 有开源产品的gpl版本,尽管开发人员许可证并不昂贵(每个299美元)。

I recently published DesktopBootstrap. 我最近发布了DesktopBootstrap。 It's my attempt to factor out many of the common elements of creating medium to large scale desktop apps. 这是我尝试分解创建中型到大型桌面应用程序的许多常见元素。

You can find it here . 你可以在这里找到它。

Check IdeaBlade's Cabana For DotNet C#. 检查IdeaBlade的Dotana C#Cabana。 http://www.ideablade.com/CAB.html http://www.ideablade.com/CAB.html

Cabana Sample App Cabana Sample App

The Cabana application is a simple smart client reference app with a crisp, feature-rich user experience that is easy to deploy and operate over the web. Cabana应用程序是一个简单的智能客户端参考应用程序,具有清晰,功能丰富的用户体验,易于部署和在Web上运行。 Cabana demonstrates: Cabana演示:

An easy approach to the Composite UI Application Block from Microsoft 's Patterns & Practices Group. 从Microsoft的模式和实践组中轻松获取复合UI应用程序块。 Maintainable, reusable code through UI composition. 通过UI组合维护可重用的代码。 Separation of Model (business logic and data access) from Presentation. 从Presentation中分离模型(业务逻辑和数据访问)。 The Model-View-Presenter pattern. 模型 - 视图 - 展示器模式。 Performance tuning. 性能调整。 And more. 和更多。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM