2008年8月28日
使用 Visual Studio Tools for Office 可以创建两种类型的解决方案:文档级自定义项和应用程序级外接程序。它们具有以下配置:
使用Visual Studio Tools for Office 开发的应用程序是基于CLR的托管应用程序,而Office 是基于COM 组件的非托管应用程序.所以在此觉得有必要复习一下托管应用程序在CLR中的执行过程.就举一个最简单的例子吧,代码如下:

Code
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello Word");
}
}
下图为执行的流程图

简单说说执行过程,VS.NET IDE 调用CSC.exe编译器生成EXE程序集.以32位操作系统为例.当执行EXE程序集时,首行创建一个32位的进程,这个进程中的主线程会去调用MSCorEE.dll组件来初始化CLR,MSCorEE.dll位于C:\WINDOWS\system32目录下,用来判断一台机器是否安装.NET Framework.初如化的CLR会去加载EXE程序集,并从函数入口点Main()开始执行程序,CLR为Main方法中调用的Console类型分配一个单独的内部结构,并为每个该类型的每个方法付上地址,以便该方法调用的时候使用,当首次调用WriteLine()方法时,会去调用JIT编译器,JIT编译器从元数据中查找WriteLine方法,把它编译成本地的CPU代码.并修改存储在Console类型中WriteLine的指针,这样子第二次开始调用WriteLine方法可直接执行本地的CPU代码.另外对元数据有点补充,元数据有二张表,一张是类型表,如用来核对编译时的参数类型.另一个是成员表.说明该托管模块有哪些成员.
还没写完.........
2008年8月1日
摘要: 耦合与变化耦合是软件不能抵御变化灾难的根本性原因。不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系。 动机(Motivation)在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需要对行为进行“记录、撤销/重做(undo/redo)、事务...
阅读全文
2008年7月28日
2008年7月25日
2008年7月20日
摘要: 面向对象的代价面向对象很好地解决了系统抽象性的问题,同时在大多数情况下,也不会损及系统的性能。但是,在某些特殊的应用中下,由于对象的数量太大,采用面向对象会给系统带来难以承受的内存开销(拆箱操作)。比如图形应用中的图元等对象、字处理应用中的字符对象等。 动机(Motivation)采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价——主要指内存需求方面的代价(空...
阅读全文
2008年7月16日
摘要: 意图(Intent)为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。——《设计模式》GoF 下列的图形只是我自己对软件产品的了解Facade模式的两层含义:1.简单 2.解藕 [代码]结构(Structure)Facade模式的几个要点• 从客户程序的角度来看, Facade模式不仅简化了整个组件系统的接口,同...
阅读全文
2008年7月4日
摘要: 动机(Motivation)上述描述的问题根源在于我们“过度地使用了继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀(多继承)。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”...
阅读全文
2008年7月1日