代码改变世界

SharpDevelop源码理解(1) 简介

2011-02-13 23:55  Amar-Yao  阅读(7605)  评论(18编辑  收藏  举报

  真是太久没有写博客了。一年有余了吧。

  在新的一年里就用SharpDevelop这个系列开始吧。SharpDevelop这个项目简单做个介绍,它是一个.Net领域著名的开源IDE,用C#语言编写。在.Net领域它的地位相当于Java领域Eclipse。为什么这么比呢其中最主要的原因就是SharpDevelop和Eclipse一样底层有着一个灵活的插件体系框架。但是不同的是SharpDevelop的这个底层插件框架是完全自己实现的。搞Java的都知道Eclipse在3.x的时候底层插件体系结构从JPF转移到了更灵活的OSGI上面。就是传说中的那个构建宝马车的内部软件控制系统的OSGI上。虽然SharpDevelop的插件体系远没有OSGI强大,但是对于.Net领域的程序员仍然是个很好的参考。

  SharpDevelop的源代码可以从这里下载:http://www.sharpdevelop.net/opensource/sd/

  记得刚入行时跟着我们技术总监在SharpDevleop上做企业级开发平台,当时还是1.x。转眼间SharpDevelop已经发展到了4.0。其中的大部分代码已经经过重构。并且多了很多有用的插件,这些东西都是以源代码的形式公布出来,真是令人激动。

  SharpDevelop的最核心部分其实就是一个插件树。界面上面的菜单和工具栏每一个功能都是一个插件,直接挂载于插件树上并通过Command模式与用户交互。其他的部分都是由插件组合而成。下载到SharpDevelop3.0的源代码编译通过后运行之,点击工具->Addin Socut可以看到整个插件树的全貌:

 

  SharpDevelop的核心代码部分主要是以下几个项目:

 

   注意这个3.0的源代码,熟悉1.x的同志应该清楚最开始SD核心代码只有图中的前三个项目。后面的项目是从2.0开始重构时分离出来的。从命名上可以猜出个大概ICSharpCode.Widgets项目定义的是SD使用的一些界面控件。ICSharpCode.Dom项目应该是和源代码解析有关的(我也是猜的)。ICSharpCode.Sda从源代码内容能看出来主要是一些零碎的例如配置、日志、设置之类的小东西。ICSharpCode.SharpDevelop项目其实也是一个插件项目它是SD系统中的核心插件,根目录下有一个.addin的标准xml文件。这个文件是SD的插件定义文件,每一个插件必须有一个这样的文件并把它拷贝到Addin目录插件才能被正确的发现并初始化。ICSharpCode.Core项目顾名思义就是SD的内核了:服务和插件树。这里提到插件先说一下一个重要的概念,SD中的一个插件并不一定只包含一个功能模块。看看ICSharpCode.SharpDevelop的插件定义文件就知道它把很多功能都集成在一起定义在一个插件定义里面。这样不至于插件多得难以管理。

  好了今天就先做个简单介绍吧。下一篇说说ICSharpCode.Core这个项目和几个重要概念。敬请期待。