在开发应用程序的过程中,经常需要创建、编辑、保存文件或远程脚本等。大多数开发者都会创建这样的工具应用以简化工作或生活。作者在学习WPF、PRISM、MVVM的同时,也创建了一个类似于Visual Studio 2012的IDE应用程序——Wide IDE框架。Wide不仅仅是一个框架,它是一个模块集合,可以帮助快速构建类似VS 2012的应用程序。每个模块都可以参与构建IDE,并为应用程序添加新功能。
Wide框架允许通过创建PRISM模块来构建应用程序。这样,可以将应用程序的每个功能区域的代码模块化。
如果真的打算构建一个带有调试器的IDE,可以使用Wide,但强烈建议查看Visual Studio Extensibility (VSX)框架或其他实际的IDE,如SharpDevelop、Eclipse或Netbeans。
PRISM模块的背景信息和教程可以在Code Project上找到,这些教程对于理解如何构建模块非常有帮助。
Wide附带了两个模块和各种开箱即用的功能:
由于Wide模块基本上是PRISM模块,将首先描述框架中代码的组织方式。
Wide.Interfaces
- 包含应用程序所需的所有接口、抽象类。创建的每个模块(通常为每个模块创建一个项目),需要引用这个项目/DLL。这个项目还包含PRISM中事件聚合器使用的事件。
Wide.Core
- 包含应用程序工作所需的所有核心服务。大多数类都是内部/密封的。
Wide.Splash
- 包含启动屏幕的基础实现。可以通过在模块加载之前向Unity容器注册自己的启动屏幕版本来覆盖启动屏幕。参见示例应用程序。
Wide.Shell
- 包含Shell的两种实现,这将是应用程序托管的主窗口。两种风格是Metro(用于类似VS 2012的应用程序)和Regular(较旧的VS风格应用程序)。这可以通过向Bootstrapper的构造函数传递一个值来定义。
Wide.Tools.Logger
- 包含日志模块。这是如何为自己的应用程序编写模块的好例子。这不是应用程序的必需模块。
Wide.Settings
- 正在开发中。这个模块是为应用程序提供一个类似Visual Studio设置窗口的设置窗口。同样,其他模块可以参与设置管理器。
上面的类图显示了Wide.Interfaces项目中类的组织方式。下面描述了一些重要类:
还有一些服务被Wide.Core项目添加到应用程序中。可以通过尝试解析它们对应的接口来访问这些服务。一些重要服务包括:
使用Wide创建类似IDE的应用程序将会非常简单。Wide基于Unity容器。WideBootstrapper继承自UnityBootstrapper,并带有一些开箱即用的功能,如为应用程序创建启动屏幕、创建Shell等。
应用程序需要引用所有依赖库和Wide库。以下是用于获取简单Wide应用程序的代码:
C#
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
new WideBootstrapper().Run();
}
}
有关如何使用Wide的更多信息,请查看测试应用程序:
也可以使用Nuget安装Wide。以下是安装并快速开始使用Wide的步骤:
类似VS 2012的应用程序:
类似VS 2010的应用程序:
Wide使用了许多开源项目构建:
在构建Wide的过程中,能够查看各种开源项目,学习并最重要的是回馈项目。