Visual C++ .NET托管扩展编程
基本信息
内容简介回到顶部↑
[font color="#ff6600"]来自visual c++ .net托管扩展权威专家的真知灼见,助您深入了解microsoft .net框架的方方面面。
[/font]
对microsoft visual c++语言进行扩展可以生成.net代码,这些扩展称为c++.net托管扩展。c++是惟一一种可以在同一个源文件中混合.net代码和非托管代码的语言,是真正的.net系统语言。 本书内容根据开发过程进行组织。全书分7章,首先描述语言的基本特性,然后探讨.net的特性,如interop、委托和gui应用程序,最后介绍visual studio.net的项目管理和调试功能。 本书适合准备使用c++.net托管扩展进行开发的中、高级读者阅读。
对microsoft visual c++语言进行扩展可以生成.net代码,这些扩展称为c++.net托管扩展。c++是惟一一种可以在同一个源文件中混合.net代码和非托管代码的语言,是真正的.net系统语言。 本书内容根据开发过程进行组织。全书分7章,首先描述语言的基本特性,然后探讨.net的特性,如interop、委托和gui应用程序,最后介绍visual studio.net的项目管理和调试功能。 本书适合准备使用c++.net托管扩展进行开发的中、高级读者阅读。
作译者回到顶部↑
本书提供作译者介绍
Richard Grimes是诺丁汉大学的半导体物理博士,曾担任研究科学家、计算机培训师、软件开发人员和专职作家。他曾出版过多本关于COM、DCOM、MTS、COM+、ATL和.NET方面的著作(侧重C++方面),并是多种开发者杂志,包括MSDN Magazine、Developer Net work journal、Visual Systems Jouronal和Visual C++ Developers Journal(现为Visual Studio Magazine)的.NET专栏作家。Richard还定期在各种全球范围的开发者大会上进行演讲,包括VCDC、VSLive、DevWeek、WinDev和XML in Action等。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
前言
第1章 托管类型
1.1 visual c++.net中的新关键字
1.1.1 msil和标准代码
1.1.2 c++基元类型
1.2 托管类型和值类型
1.2.1 托管对象
1.2.2 值类型
1.2.3 托管指针
1.2.4 通过引用传递和通过值传递
1.2.5 属性
1.2.6 委托和事件
1.2.7 属性(attribute)
1.2.8 托管接口
1.2.9 托管字符串
1.2.10 托管数组
1.2.11 异常和托管代码
1.3 实现.net类型
1.3.1 命名空间
1.3.2 继承
第1章 托管类型
1.1 visual c++.net中的新关键字
1.1.1 msil和标准代码
1.1.2 c++基元类型
1.2 托管类型和值类型
1.2.1 托管对象
1.2.2 值类型
1.2.3 托管指针
1.2.4 通过引用传递和通过值传递
1.2.5 属性
1.2.6 委托和事件
1.2.7 属性(attribute)
1.2.8 托管接口
1.2.9 托管字符串
1.2.10 托管数组
1.2.11 异常和托管代码
1.3 实现.net类型
1.3.1 命名空间
1.3.2 继承
前言回到顶部↑
.NET最显著的特性是运行库,Microsoft称它为公共语言运行库(CommonLanguageRuntime,CLR)。运行库的概念在Microsoft技术中并不是刚刚出现的一-VisualBasic应用程序总是带有VisualBasic运行库的包袱。Microsoft对Java领域的入侵带来了MicrosoftJava虚拟机(JVM)。但是与VisualBasic运行库和JVM不同,.NET运行库不局限于特定的语言。Microsoft和第三方公司的几种语言都可以编写在.NET运行库中运行的代码。其中有些语言比较新,如C#,而另一些浯言使用现有语言的语法。MicrosoftVisualC++.NET是一种现有的语言,通过对它进行扩展可以产生.NET代码,这些扩展被称为C++托管扩展。
托管扩展使C++类可以利用.NET垃圾回收和内存保护机制。更重要的是,它们使C++代码可以访问.NET框架类库和用其他支持.NET的语言编写的库,而其他语言可以使用C++编写的托管库。C++开发人员要创建功能全面的应用程序不再需要使用COM、DLL导出函数和模板库等所有技术来访向它们所需要的库,所有必需的库代码都可以通过.NET框架类库中的.NET类获得。
从本质上讲,托管扩展定义了C++语言的一个子集——它看起来像C++,感觉像C++,但是实际上是.NET。您可能会问:“既然.NET让笔者可以选择多种语言,为什么还要用C++编写.NET代码?”C++一直是一种系统语言,它为您提供了创建具有创造性的解决方案所需的能力和灵活性。这种特性也延续到了托管扩展中,在其中不仅有.NET运行库和类库的全部功能,也有非托管语言的全部功能。确实,C++是惟一一种可以在同一个源文件中混合.NET代码和非托管代码的语言。编译器还让您可以无缝地访问所有非托管库:静态链接库、模板库、COM对象和DLL。这种访问的方便性意味着可以重用所有现有的代码,并且当.NET框架类库没有合适的类时,可以使用现有的非托管库。同样,没有其他语言可以有这种能力,所以其他语言不会被视为.NET系统语言。
本书内容
本书将引导您从头到尾经历开发过程。首先描述语言的基本特性,然后探讨.NET的特性,如Interop、委托和GUI应用程序。本书的最后两章分别介绍VisualStudio.NET的项目管理和调试功能。用C++开发.NET代码不一定要用VisualStudio.NET,但是正如您在第6章和第7章可以看到的,如果使用它,开发工作将容易得多。下面是每一章内容的更详细说明。
第1章
第1章讨论了托管扩展的基本特性。首先解释如何开发托管类型以及它们与非托管类型的区别,包括它们的声明和用法。本章介绍了如何使用托管数组、接口和异常。以继承和强制类型转换(cast)来说,用托管扩展编写的C++遵循.NET模型而不是C++模型,所以这一章的最后描述了.NET在这些方面与非托管C++的不同。
第2章
使用C++的理由之一是它允许在.NET项目中使用现有的非托管代码。托管扩展编译器有一种称为It Just Works!(IJW)的技术。这种技术使您可以在托管项目中使用非托管库,并且混合托管和非托管类。这一章会介绍如何使用IJW,并揭示IJW的工作原理。
.NET还有一种名为平台调用(platform invoke)的基于属性的技术,它可以让所有支持.NET的语言访问从DLL导出的代码。本章解释了如何使用平台调用,并描述了如何自定义它所执行的封送处理。平台调用的一个变种是COMInterop,这是这一章的最后一个主题。COMInterop让托管代码可以使用COM对象,就像它们是.NET对象一样;也使非托管代码可以使用.NET对象,就像它们是COM对象一样。本章将讲述COM Interop是如何工作的,以及如何注册COM Interop所需要的类并生成COM Interop所需要的属性。
第3章
在非托管项目中,函数指针很有用,因为通过它们可以在运行时而不是在编译时进行函数绑定。C++虚函数和COM接口是基于函数指针的,函数指针使您可以定义通知系统。.NET有自己的函数指针——委托(delegate)——它是类型安全的,因为它消除了非托管函数指针的一大缺点:即在函数指针类型之间进行强制类型转换。
这一章将展示如何在C++中使用委托、这种方式与非托管函数指针的区别,以及如何对非托管代码使用委托。本章还将解释如何通过委托进行异步调用(使用系统提供的线程),并且介绍如何用.NET编写多线程代码。最后,将讲述.NET如何用委托实现名为.NET事件(event)的正式通知机制。
第4章
.NET框架用一种称为GDI+的图形库扩展了Windows。这是一个非托管库,但是.NET框架带有.NET包装类。在.NET中的窗口技术称为Windows窗体。可以用GDI+在窗体上绘图,可以将窗体作为控件的容器。这一章将解释如何在C++中用Windows窗体创建GUI应用程序,并描述如何用Win32窗口实现这种应用程序。本章还展示如何通过.NET事件处理Windows消息,以及如何绕过这种机制,从而取得对窗口行为的最大控制权。
本章还将讨论如何在托管类中有效地使用托管资源和标准资源,使得应用程序不再需要它们时可以释放这些资源。最后,本章定义了什么是托管资源,并解释了如何向应用程序中添加托管资源,还讨论如何本地化资源。
第5章
这一章描绘.NET代码是如何存储在可执行文件中的。首先解释.NET程序集的格式,并且描述它们是如何实现为Win32可移植可执行(PE)文件的。然后讨论如何用.NET框架提供的COM对象得到有关.NET元数据以及程序集中的代码的信息。.NET运行库是用非托管代码实现的,Microsoft将运行库设计为非托管代码可以通过COM对象访问运行库。这一章将解释如何用这些对象从非托管代码中访问并配置运行库,以及如何指示运行库运行托管代码。
托管应用程序可以通过与该应用程序相关联的XML文件进行配置。当应用程序启动时运行库读取这个配置文件,这样它就可以得到有关应用程序所需要的资源的信息。运行库的一大好处是它只会加载生成应用程序时指定要使用的库。您可以配置这些规则——运行库通过配置文件查找这些库时要用到这些规则。代码也可以访问配置文件中的信息,这一章将展示如何做到这一点以及如何扩展配置文件和API以读取它们。
最后,本章描述代码访问安全,并展示如何在代码中应用这种安全机制。本章还展示用C++托管扩展编写的.NET代码所需要的默认权限。
托管扩展使C++类可以利用.NET垃圾回收和内存保护机制。更重要的是,它们使C++代码可以访问.NET框架类库和用其他支持.NET的语言编写的库,而其他语言可以使用C++编写的托管库。C++开发人员要创建功能全面的应用程序不再需要使用COM、DLL导出函数和模板库等所有技术来访向它们所需要的库,所有必需的库代码都可以通过.NET框架类库中的.NET类获得。
从本质上讲,托管扩展定义了C++语言的一个子集——它看起来像C++,感觉像C++,但是实际上是.NET。您可能会问:“既然.NET让笔者可以选择多种语言,为什么还要用C++编写.NET代码?”C++一直是一种系统语言,它为您提供了创建具有创造性的解决方案所需的能力和灵活性。这种特性也延续到了托管扩展中,在其中不仅有.NET运行库和类库的全部功能,也有非托管语言的全部功能。确实,C++是惟一一种可以在同一个源文件中混合.NET代码和非托管代码的语言。编译器还让您可以无缝地访问所有非托管库:静态链接库、模板库、COM对象和DLL。这种访问的方便性意味着可以重用所有现有的代码,并且当.NET框架类库没有合适的类时,可以使用现有的非托管库。同样,没有其他语言可以有这种能力,所以其他语言不会被视为.NET系统语言。
本书内容
本书将引导您从头到尾经历开发过程。首先描述语言的基本特性,然后探讨.NET的特性,如Interop、委托和GUI应用程序。本书的最后两章分别介绍VisualStudio.NET的项目管理和调试功能。用C++开发.NET代码不一定要用VisualStudio.NET,但是正如您在第6章和第7章可以看到的,如果使用它,开发工作将容易得多。下面是每一章内容的更详细说明。
第1章
第1章讨论了托管扩展的基本特性。首先解释如何开发托管类型以及它们与非托管类型的区别,包括它们的声明和用法。本章介绍了如何使用托管数组、接口和异常。以继承和强制类型转换(cast)来说,用托管扩展编写的C++遵循.NET模型而不是C++模型,所以这一章的最后描述了.NET在这些方面与非托管C++的不同。
第2章
使用C++的理由之一是它允许在.NET项目中使用现有的非托管代码。托管扩展编译器有一种称为It Just Works!(IJW)的技术。这种技术使您可以在托管项目中使用非托管库,并且混合托管和非托管类。这一章会介绍如何使用IJW,并揭示IJW的工作原理。
.NET还有一种名为平台调用(platform invoke)的基于属性的技术,它可以让所有支持.NET的语言访问从DLL导出的代码。本章解释了如何使用平台调用,并描述了如何自定义它所执行的封送处理。平台调用的一个变种是COMInterop,这是这一章的最后一个主题。COMInterop让托管代码可以使用COM对象,就像它们是.NET对象一样;也使非托管代码可以使用.NET对象,就像它们是COM对象一样。本章将讲述COM Interop是如何工作的,以及如何注册COM Interop所需要的类并生成COM Interop所需要的属性。
第3章
在非托管项目中,函数指针很有用,因为通过它们可以在运行时而不是在编译时进行函数绑定。C++虚函数和COM接口是基于函数指针的,函数指针使您可以定义通知系统。.NET有自己的函数指针——委托(delegate)——它是类型安全的,因为它消除了非托管函数指针的一大缺点:即在函数指针类型之间进行强制类型转换。
这一章将展示如何在C++中使用委托、这种方式与非托管函数指针的区别,以及如何对非托管代码使用委托。本章还将解释如何通过委托进行异步调用(使用系统提供的线程),并且介绍如何用.NET编写多线程代码。最后,将讲述.NET如何用委托实现名为.NET事件(event)的正式通知机制。
第4章
.NET框架用一种称为GDI+的图形库扩展了Windows。这是一个非托管库,但是.NET框架带有.NET包装类。在.NET中的窗口技术称为Windows窗体。可以用GDI+在窗体上绘图,可以将窗体作为控件的容器。这一章将解释如何在C++中用Windows窗体创建GUI应用程序,并描述如何用Win32窗口实现这种应用程序。本章还展示如何通过.NET事件处理Windows消息,以及如何绕过这种机制,从而取得对窗口行为的最大控制权。
本章还将讨论如何在托管类中有效地使用托管资源和标准资源,使得应用程序不再需要它们时可以释放这些资源。最后,本章定义了什么是托管资源,并解释了如何向应用程序中添加托管资源,还讨论如何本地化资源。
第5章
这一章描绘.NET代码是如何存储在可执行文件中的。首先解释.NET程序集的格式,并且描述它们是如何实现为Win32可移植可执行(PE)文件的。然后讨论如何用.NET框架提供的COM对象得到有关.NET元数据以及程序集中的代码的信息。.NET运行库是用非托管代码实现的,Microsoft将运行库设计为非托管代码可以通过COM对象访问运行库。这一章将解释如何用这些对象从非托管代码中访问并配置运行库,以及如何指示运行库运行托管代码。
托管应用程序可以通过与该应用程序相关联的XML文件进行配置。当应用程序启动时运行库读取这个配置文件,这样它就可以得到有关应用程序所需要的资源的信息。运行库的一大好处是它只会加载生成应用程序时指定要使用的库。您可以配置这些规则——运行库通过配置文件查找这些库时要用到这些规则。代码也可以访问配置文件中的信息,这一章将展示如何做到这一点以及如何扩展配置文件和API以读取它们。
最后,本章描述代码访问安全,并展示如何在代码中应用这种安全机制。本章还展示用C++托管扩展编写的.NET代码所需要的默认权限。
序言回到顶部↑
自2000年6月微软宣布自己的.NET战略以来,在不到两年的时间里,.NET已经从战略变成现实。.NET带来了全新的、快速而敏捷的企业计算能力,也给软件开发商和软件开发人员提供了支持未来计算的高效Web服务开发工具。作为微软.NET战略的重要组成部分——VisualStudio.NET(中文版)已经于2002年3月22日正式在中国推出。
VisualStudio.NET是一个功能强大、高效并且可扩展的编程环境。它充分展现了应用程序开发的潜能,并提供了生成应用程序所需的工具和技术。这些应用程序将给当今的企业、机构提供强大的支持,并推动下一代基于XMLWeb服务软件的发展。
有了VisualStudio.NET,那些对全世界数百万的专业和业余程序员来说曾一度极端复杂、费时费力,甚至让人望而生畏的编程任务现在已不再神秘。更重要的是,VisualStudio.NET使开发人员能运用既有的技能和知识来迎接新的编程挑战。
在10年前,VisualBasicl.0成为数以百万计的开发人员的革命性的应用程序开发语言。现在,VisualStudio.NET为未来的10年做好了准备。
微软出版社为了配合VisualStudio.NET的推广以及.NET技术的普及,邀请VisualStudio.NET项目开发组的核心开发人员和计算机图书专业作家精心编写了英文版《微软.NET程序员系列》丛书;该丛书自面市以来,在美国图书销量排行榜上一直高居前列,颇受好评,成为程序开发人员和网络开发人员了解.NET技术的权威工具书。尤其是《Microsoft.NET Framework程序设计》一书,长期占据美国及欧洲此类书籍的排行榜冠军位置,程序开发人员不可不读此书。
清华大学出版社为了满足中国广大程序开发人员、网络开发人员学习最新技术的渴望,在微软出版社的配合下,从《微软.NET程序员系列》这套丛书中精选了50余本翻译成中文,以满足国内广大读者的需要。这套丛书阵容庞大(且在不断扩充之中),几乎涵盖了.NET技术及其应用的各个方面;也正因为如此,翻译和编辑加工的工作量也大得惊人。但为了保持国外优秀技术图书的魅力,同时使读者领会新技术的真谛,本丛书的翻译和编辑都是经过严格筛选的、具有很高的翻译水平或丰富编辑经验的技术人员;另外,我们还聘请微软公司VisualStudio.NET产品组的技术专家审读每一本书,确保在技术上准确无误。
相信这套丛书定会帮助程序开发人员、网络开发人员以及那些具有一定编程基础的中、高级读者,快速、全面地掌握.NET技术,协助他们为技术生涯的下一个10年做好准备,为培养新一代软件人才,并推动中国软件产业的快速发展起到积极的作用!
这套丛书分为3个子系列:技术内幕系列、语言参考系列和程序员系列。目前,已出版和在编的共有36本,已从2002年6月份起陆续和读者见面。
技术内幕系列
目前共有7本:
《Visual C++.NET技术内幕(第6版)》
本书是Visual C++和MFC开发的经典著作。它秉承了第4版和第5版的风格,已根据该编程语言的最新版本VisualC++.NET进行了全面更新和补充,是.NET时代的C++程序员必读的教材。此外,本版仍由第4版译者潘爱民先生翻译。
《Microsoft.NET Compact Framework技术内幕》
《Visual Basic.NET技术内幕》
《Visual C#.NET技术内幕》
《ADO.NET技术内幕》
《Microsoft.NET程序设计技术内幕》
《Visual J#.NET技术内幕》
语言参考系列
目前共有3本:
VisualStudio.NET是一个功能强大、高效并且可扩展的编程环境。它充分展现了应用程序开发的潜能,并提供了生成应用程序所需的工具和技术。这些应用程序将给当今的企业、机构提供强大的支持,并推动下一代基于XMLWeb服务软件的发展。
有了VisualStudio.NET,那些对全世界数百万的专业和业余程序员来说曾一度极端复杂、费时费力,甚至让人望而生畏的编程任务现在已不再神秘。更重要的是,VisualStudio.NET使开发人员能运用既有的技能和知识来迎接新的编程挑战。
在10年前,VisualBasicl.0成为数以百万计的开发人员的革命性的应用程序开发语言。现在,VisualStudio.NET为未来的10年做好了准备。
微软出版社为了配合VisualStudio.NET的推广以及.NET技术的普及,邀请VisualStudio.NET项目开发组的核心开发人员和计算机图书专业作家精心编写了英文版《微软.NET程序员系列》丛书;该丛书自面市以来,在美国图书销量排行榜上一直高居前列,颇受好评,成为程序开发人员和网络开发人员了解.NET技术的权威工具书。尤其是《Microsoft.NET Framework程序设计》一书,长期占据美国及欧洲此类书籍的排行榜冠军位置,程序开发人员不可不读此书。
清华大学出版社为了满足中国广大程序开发人员、网络开发人员学习最新技术的渴望,在微软出版社的配合下,从《微软.NET程序员系列》这套丛书中精选了50余本翻译成中文,以满足国内广大读者的需要。这套丛书阵容庞大(且在不断扩充之中),几乎涵盖了.NET技术及其应用的各个方面;也正因为如此,翻译和编辑加工的工作量也大得惊人。但为了保持国外优秀技术图书的魅力,同时使读者领会新技术的真谛,本丛书的翻译和编辑都是经过严格筛选的、具有很高的翻译水平或丰富编辑经验的技术人员;另外,我们还聘请微软公司VisualStudio.NET产品组的技术专家审读每一本书,确保在技术上准确无误。
相信这套丛书定会帮助程序开发人员、网络开发人员以及那些具有一定编程基础的中、高级读者,快速、全面地掌握.NET技术,协助他们为技术生涯的下一个10年做好准备,为培养新一代软件人才,并推动中国软件产业的快速发展起到积极的作用!
这套丛书分为3个子系列:技术内幕系列、语言参考系列和程序员系列。目前,已出版和在编的共有36本,已从2002年6月份起陆续和读者见面。
技术内幕系列
目前共有7本:
《Visual C++.NET技术内幕(第6版)》
本书是Visual C++和MFC开发的经典著作。它秉承了第4版和第5版的风格,已根据该编程语言的最新版本VisualC++.NET进行了全面更新和补充,是.NET时代的C++程序员必读的教材。此外,本版仍由第4版译者潘爱民先生翻译。
《Microsoft.NET Compact Framework技术内幕》
《Visual Basic.NET技术内幕》
《Visual C#.NET技术内幕》
《ADO.NET技术内幕》
《Microsoft.NET程序设计技术内幕》
《Visual J#.NET技术内幕》
语言参考系列
目前共有3本:
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· InfoQ中文站论坛:.NET讨论区(InfoQ .NET)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· WCF的开山之作 WCF画卷的清明上河图(WCF WF WPF)







点击看大图




加载中...

