一 构建可扩展的应用程序
什么是可扩展的应用程序?没有标准的定义,一些实例:
Eclipse,Firefox,Office,Ogre, AutoCAD, pro/e, other design software...
二 可扩展应用程序开发过程
开发过程我们尽量的使我们的软件能够适应变化,能够很容易的增加或修改功能,不可避免的要使用design pattern,当有新的需求进入的时候,原有的架构不能满足要求,这时要refactoring,其实agile software 他强调的就使软件是一个不断的迭代的过程,要跟着用户的需求不对的变化,总之使我们的应用程序有好的framework,好的architecture!
三 Plug-ins插件模式
1) C++ 主要技术:
LoadLibrary()/GetProcAddress()/FreeLibrary()
C++类图如下:
samples代码下载:http://www.cppblog.com/Files/mzty/Plugins.zip
2)C#主要技术:
Assembly.Load() / LoadFile() / LoadFrom() (区别:LoadFile只load本dll,LoadFrom会load其他引用到的dll)
Type.GetInterface() / IsInterface() / GetMethod() / GetProperty() / / …
Activator.CreateInstance (Type) / Assembly.CreateInstance(String) / Type.GetConstructor().invoke()
C#类图如下:
sample代码下载:
http://www.cppblog.com/Files/mzty/Plugins.zip3)CLI\C++,Managed C++主要目的:(使应用程序可以同时支持NativeC++和net的plugins)
4)总之,经过上面的三步,我们可以实现一个应用程序,可以加载C++和C#的plugins(使用CLI\C++封装),能够动态的加载(C#用Appdomain),能够控制只加载需要的dll(配置文件或C++的dll改为其他的名字)。
四 VBA\VSTA集成环境中开发
VBA和VSTA都是microsoft提过的可以被嵌入的其他的应用程序中的开发工作,VBA是用集成VB的开发IDE,VSTA是集成基于.net的开发IDE。
架构如下图:
其他:
http://msdn.microsoft.com/en-us/isv/bb190538.aspx 和
http://www.summsoft.com/五 支持脚本的集成开发
关于是应用程序支持脚本语言的集成开发,可以查看脚本语言的帮助,一般都有这方面的支持,可以看Python :
www.python.org, 比如python嵌入到AutoCAD的开源项目PyACAD,
http://pyacad.sourceforge.net/ 。
六 总结
在开发我们自己的应用程序的时候考虑,开放性,可扩展性!