C++ Programmer's Cookbook

{C++ 基础} {C++ 高级} {C#界面,C++核心算法} {设计模式} {C#基础}

构建可扩展的应用程序


一 构建可扩展的应用程序

什么是可扩展的应用程序?没有标准的定义,一些实例:
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.zip

3)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/ 。

六 总结
在开发我们自己的应用程序的时候考虑,开放性,可扩展性!

posted on 2008-06-06 17:26 梦在天涯 阅读(5791) 评论(5)  编辑 收藏 引用 所属分类: My Project

评论

# re: 构建可扩展的应用程序 2008-06-07 10:20 true

精彩  回复  更多评论   

# re: 构建可扩展的应用程序 2008-07-26 03:56 冷不防

谢谢!  回复  更多评论   

# re: 构建可扩展的应用程序 2008-07-31 10:20 无名

牛  回复  更多评论   

# re: 构建可扩展的应用程序 2012-01-30 04:23 MaynardJordan34

I had a dream to begin my organization, however I did not earn enough of money to do that. Thank God my mate told to use the <a href="http://goodfinance-blog.com">loan</a>. Therefore I took the commercial loan and realized my old dream.   回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

EMail:itech001#126.com

导航

统计

  • 随笔 - 461
  • 文章 - 4
  • 评论 - 746
  • 引用 - 0

常用链接

随笔分类

随笔档案

收藏夹

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

积分与排名

  • 积分 - 1783936
  • 排名 - 5

最新评论

阅读排行榜