资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,江西理工大学,Developing GIS Applications with ArcObjects using C#.NET,GIS,应 用 开 发,Developing GIS Applications with ArcObjects using C#.NET,江西省研究生优质课程,主讲:,兰小机,GIS,博士、教授,Email:landcom8835,QQ,:,305333315,课件:,ftp:/218.87.136.94/,兰小机简历,主要经历,1988,年,7,月,毕业于南方冶金学院工程测量专业,获,学士学位,,并留校任教,1994,年,6,月,毕业于武汉测绘科技大学工程测量专业,获,硕士学位,,回校任教,2005,年,6,月,毕业于南京师范大学,地图学与地理信息系统,专业,获,理学博士学位,,回校任教,主要研究方向,GML,空间数据挖掘,GML,空间数据库理论与,GMLGIS,空间数据集成与共享,GIS,应用开发,科研,项目,国家自然科学基金项目,-,面向,GML,的时空关联规则及序列模式挖掘研究,(,编号:,40971234,),,,35,万元,主持,国家自然科学基金项目,-,本原,GML,空间数据库理论及,GMLGIS,与传统,GIS,集成研究,(编号:,40761017,),,,16,万元,主持,国家自然科学基金项目,-,GML,空间数据存储索引机制研究,(编号:,40401045,),,,26,万元,排名第二,地理信息科学江苏省重点实验室开发基金项目,-,面向对象的,GML,空间数据库及其应用研究,(编号:,JK20050302,),,,5,万元主持,江西省教育厅科技项目,GML,空间数据库理论及,GMLGIS,研究,,,1,万元,主持,萍乡市基础地理信息系统研究与开发,,22,万元,主持,城市公众地理信息服务系统研究与开发,,10,万元,主持,教学目标,GIS,应用开发,课程是,GIS,本科生、研究生重要的专业课程,通过课程的学习,,了解,ArcGIS,软件体系结构及,ArcObjects,组件构成,并能熟练使用,ArcObjects,进行,应用型,GIS,开发,;,掌握应用型,GIS,开发的基本思路、技术方法,.,教学内容及时间安排,序号,教学内容,学时,1,开发基础,5,2,ArcGIS Application framework,5,3,使用,ArcObjects,控件编程,6,4,几何形体对象,-GEOMETRY,4,5,地图的组成,6,6,空间数据的符号化,5,7,空间数据管理,5,8,地理处理框架,2,9,空间分析,4,10,空间数据编辑,8,11,三维,GIS,开发基础,6,教材及参考材料,教材:,基于,ArcObjects,与,C#.NET,的,GIS,应用开发,,兰小机等编著,冶金工业出版社,,2011,年,12,月,最新课件,参考材料:,ArcObjects SDK 10 Microsoft .NET Framework,Desktop,(,ArcMap,、,ArcCatalog,)基本操作;,了解,Geodatabase,、,ArcSDE,基本概念;,会用,C#,进行程序设计,。,课程考核,开发一个小型的,GIS,应用系统,按,GIS,软件工程的要求进行设计,并提供完整的设计开发方案,开发的小系统应具备,GIS,的基本功能,主要包括:,打开、保存地图文档、添加数据,自定义命令、工具、菜单,空间数据符号化,空间数据管理,空间查询与空间分析,空间数据编辑功能:基本编辑功能、高级编辑功能,计算机组件技术,组件,GIS,组件式的,GIS,应用开发,Chap.1 Fundamentals of developing with ArcObjects,ArcGIS,系列产品与开发方式,ArcGIS Visual Studio IDE Integration Framework,ArcObjects,基础,组件对象模型,.NET,平台概述,.NET,组件与,COM,组件的互操作,ArcGIS,开发资源,1,ArcGIS,系列产品与开发方式,ArcGIS Desktop,ArcGIS Engine,ArcGIS Server,ArcGIS Mobile,开发类型,:,To customize or extend the ArcGIS Desktop applications,Tobuild standalone mapping applications,To develop Web applications,1.1,ArcGIS Desktop,及其扩展,ArcGIS Desktop,是,GIS,专业人员编辑、使用和管理地理信息的主要平台,它按功能分为三个不同级别的产品:,ArcView,ArcEditor,ArcInfo,每个产品主要包括:,ArcMap,、,ArcCatlog,、,ArcGlobe,、,ArcScene,桌面应用程序,.,ArcGIS,桌面应用程序定制,/,扩展方式,使用,ArcGIS,桌面应用程序的定制功能,(Customzie),配置应用程序界面;,使用,Python,脚本,自动化,GIS,工作流,开发插件,(add-in),,定制,/,扩展,ArcGIS,桌面应用程序,开发定制组件,扩展,ArcGIS,桌面应用程序,无需使用,ArcObjects,,,后续版本不支持,VBA,定制,需要使用,ArcObjects,,,可以使用,C#,,,VB.NET,Java,,,C+,语言,1.1.1,使用,Python,脚本,自动化,GIS,工作流,Python,是一种,免费的、跨平台,的,开源,编程语言,它功能强大且简单易学,因而得到了广泛应用和支持。,ESRI,已将,Python,完全纳入,ArcGIS,中,成为了一种用于,数据分析、数据转换、数据管理和地图自动化,的语言,因而有助于提高工作效率。,易于学习,非常适合初学者,也特别适合专家使用,可伸缩程度高,适于大型项目或小型的一次性程序(称为脚本),可移植,跨平台,可嵌入(使,ArcGIS,可脚本化),稳定成熟,用户社区规模大,ArcGIS,中的,Python,Python,是地理处理框架的重要组成,Python,在,ArcGIS,中的发展,ArcPy,ArcPy-ArcGIS,新的,Python,库,由,arcgisscripting,升级而来,包含有函数,(Function),、类(,Class,)和模块,(Module),功能实现,能访问所有,gp,工具,数据转换、数据管理,数据分析,自动化制图,ArcPy,详细参考,:,ArcGIS,Desktop,10,帮助,专业库,地理处理,ArcPy,站点包,ArcPy,模块,模块为通常包含函数和类的,Python,文件。,有一系列模块支持,ArcPy,,包括制图模块,(,arcpy.mapping,),、,Spatial Analyst,模块,(,arcpy.sa,),和,Geostatistical Analyst,模块,(,arcpy.ga,),。,ArcPy,类,ArcPy,类,如,SpatialReference,和,Extent,类,通常用作地理处理工具参数设置的快捷方式,否则的话,这些参数会使用更加复杂的字符串。,ArcPy,函数,函数是用于执行某项特定任务程序单元。,在,ArcPy,中,所有地理处理工具均以函数形式提供,但并非所有函数都是地理处理工具。,除工具之外,,ArcPy,还提供多种函数来更好地支持,Python,地理处理工作流。,函数或方法可用于列出某些数据集、检索数据集的属性、在将表添加到地理数据库之前验证表名称,或执行其他许多有用的脚本任务。,独立的,Python,脚本,Python,脚本是可以执行的,.py,文件。独立,Python,脚本可通过两种方式执行:通过操作系统提示或开发应用程序(如,PythonWin,),或在,Windows,资源管理器中双击,.py,文件。,Python,脚本工具,Python,脚本工具是已添加到地理处理工具箱的,Python,脚本。,添加为脚本工具后,便可以像使用其他地理处理工具一样使用此脚本工具,-,可以从工具对话框打开和执行、可以在,Python,窗口和,ModelBuilder,中使用,并可以从其他脚本和脚本工具中调用。,Python,窗口,ArcGIS 10,使用,Python,窗口代替原来的命令行窗口,通过,Python,窗口,用户可以快捷地在,ArcGIS,内部使用,Python,,从而以交互方式运行地理处理工具和功能以及充分利用其他,Python,模块和库。,此窗口还为用户学习,Python,提供了一个途径。,Python,窗口提供了智能感知和代码自动完成功能,.,可以直接从,Catalog,中拖放过来,即时的帮助信息,简单实例:,ArcGIS,引入了后台地理处理,(Background,Geoprocessing),的概念,允许,Geoprocessing,工具、,ArcGIS,操作同时运行,(,使用多核,CPU),。,1.1.2,使用,DLL,组件扩展,ArcGIS,桌面,使用,DLL,组件扩展,ArcGIS,桌面的优势,:,They can be easily delivered to end users via custom setup programs.,You can hide your code and logic in a binary file.,You can extend and customize virtually every aspect of the ArcGIS technology.,使用,DLL,组件扩展,ArcGIS,桌面,开发插件,(add-in),,定制,/,扩展,ArcGIS,桌面应用程序,(,New in ArcGIS 10,),开发定制组件,扩展,ArcGIS,桌面应用程序,ArcGIS,Desktop,Add-in,Add-in,是一种能够快速扩展桌面应用程序功能的全新扩展方式,更加容易创建,更加容易共享,更加安全,更易安装管理,ArcGIS,10 Add-in,所支持的类型,按钮和工具,组合框,菜单和右键菜单,Multi-items,工具条,Tool palettes,可停靠窗体,Application extensions,Editor extensions,ArcGIS,10 Add-in,支持的开发环境,Visual Studio 2008+.Net3.5,Visual Studio 2010+.Net3.5,或者,.Net4.0,Visual Basic/C#,2008 Express Edition+.Net3.5,Visual Basic/C#2010 Express Edition+.Net3.5,或者,.Net4.0,Eclipse IDE for Java Developers,XML Metadata,(,Config.esriaddinx,),Add-in,的部署,复制,/,邮件发送,编译好的,esriaddin,文件到需要部署机器上,(,已经安装好,ArcGIS,桌面,);,在部署机器上双击,esriaddin,文件,弹出,Add-in,安装界面,让用户查看该插件的一些元信息,然后让用户决定是否安装该插件;,安装插件是不需要重启任何,ArcGIS Desktop,应用程序的。安装完之后,就可以通过相应,ArcGIS Desktop,应用程序的,Add-in Manager,来查看已安装的,Add-in,,也可以通过它来卸载。,一些,Add-in,所包含的对象,例如,Command,、,Tool,、,Toolbar,,是需要用户通过,Customize,窗口定制添加到界面上的。,Extension,对象,则需要用户通过,Extensions,窗口勾选加载。,Add-in,共享与安全,实现局域网内共享,设置共享目录、设置安全级别,Add-in,数字签名,工具:,ESRISignAddin.exe,C:Program FilesCommon FilesArcGISbinESRISignAddIn.exe,1.2,ArcGIS,Engine,ArcGIS Engine,是一个完整的嵌入,GIS,组件库和工具,开发人员可以用来创建新的独立的,GIS,应用程序或者在自定义的应用程序或已经存在的应用程序中嵌入,GIS,功能。,ArcGIS Engine,是,ArcObjects,的子集,主要用于独立的,GIS,应用开发,它,不依赖于,ArcGIS Desktop,。,ArcGIS Engine,由两部分组成:,一个软件开发包,(SDK),和,一个可分发的运行时,(Runtime),。除此之外,应用程序的功能可以使用可选的扩展模块来进行扩展。,ArcGIS Engine,支持,Windows,平台及跨平台开发。,Windows,平台开发,有以下,APIs:,.NET,VC+,跨平台开发,有以下,APIs:,Java,C+for Windows,C+for Solaris/Linux,使用,ArcGIS Engine,控件开发独立的,GIS,应用,Using the Winforms ArcGIS Engine controls,Using ArcGIS Engine Controls in,WPF(New in ArcGIS 10,),1.3,ArcGIS Server,ArcGIS Server,是功能强大的基于服务器的,GIS,产品,用于构建集中管理的、支持多用户的、具备高级,GIS,功能的企业级,GIS,应用与服务。,开发者使用ArcGIS Server可以构建Web应用、Web服务、以及其它运行在标准的.NET和J2EE Web服务器上的企业应用,。,ArcGIS Server,包含两个主要部分:,GIS,服务器,和,多种的开发框架,。,ArcGIS Server,提供的开发环境:,ArcGIS Server SDK for.NET and Java,ArcGIS JavaScript,API,ArcGIS JavaScript extension for the Google Maps API,ArcGIS JavaScript extension for Bing Maps,ArcGIS API for Microsoft Silverlight/Windows Presentation Foundation(WPF),ArcGIS API for Flex,ArcGIS Server Representational State Transfer(REST)API,ArcGIS Server Simple Object Access Protocol(SOAP)SDK,1.4,Mobile,GIS,ArcGIS,技术可以部署到一系列的移动设备上,,从轻量级的设备到,PDA,、笔记本电脑以及平板电脑。,在野外工作中使用,GIS,,主要依靠将应用程序定制成简单的移动工作任务以及对中心,GIS Web,服务器的无线访问。,ArcGIS,为用户提供了三种移动,GIS,解决方案。,ArcGIS Desktop,和使用,ArcGIS Engine,建立的应用程序:,这种方案常常部署在用于野外的笔记本电脑或者平板电脑上。,ArcPad,:,ArcPad,为使用,Windows CE,兼容设备的野外工作人员提供了一个以,GIS,为中心的解决方案。,ArcGIS Mobile,SDK,:,ArcGIS Server,包含的一个软件开发包,可以被用于智能手机、,PocketPC,等设备上的应用开发。,2,ArcGIS Visual Studio IDE Integration Framework,为了提高软件开发效率,,ArcGIS,开发包为开发人员提供了集成于,VS,环境的模板、向导、命令、代码段等。,ArcGIS,开发包的安装,ArcGIS,桌面开发包,ArcObjects,(,AO,),ArcGIS Engine,开发包,-ArcGIS Engine,(,AE,),ArcGIS Server,开发包,ArcGIS,开发包安装后,VS,IDE,集成框架(开发环境元素),开发类库,开发文档,ArcGIS Visual Studio IDE Integration Framework,ArcGIS Visual Studio IDE Integration Framework,for add-ins,(,New,in,ArcGIS,10,),ArcGIS Visual Studio IDE Integration Framework,for extending ArcObjects,ArcGIS Visual Studio IDE Integration Framework,for server object extensions,Web,Mapping Application,2.1,ArcGIS Visual Studio IDE Integration Framework,for add-ins,在,VS,环境下开发:,创建解决方案(,Solution,),一到多个项目(,Projects,),一到多个类(,Classes,),2.2,ArcGIS Visual Studio IDE Integration Framework for extending ArcObjects,ArcGIS VS,IDE,集成框架元素:,ArcGIS Project templates,(,项目模板,),ArcGIS Project wizard,ArcGIS Item templates,(,类模板,),ArcGIS Add Class wizard,ArcGIS Snippets,ArcGIS Reference dialog box,ArcGIS Component Category Registrar dialog box,ArcGIS License Initializer dialog box,ArcGIS Toolbox Reference dialog box,ArcGIS.Net Code Converter,Toolbox configuration,2.1,ArcGIS Project templates(,项目模板,),The following are the available project templates:,Desktop:,Windows Application Console Application,Class Library(General)Class Library(ArcMap),Class Library(ArcCatalog)Class Library(ArcScene),Class Library(ArcGlobe),Engine:,Windows Application Console Application,Class Library(General),MapControl Application,GlobeControl Application,server object extensions,REST SOAP,Server Web Application,Web Mapping Application,Toolbox configuration,:,Adds ArcGIS controls in the Visual Studio Toolbox window.,ArcGIS Project wizard(,项目向导,),当使用,ArcGIS,项目模板来创建一个新项目时,,ArcGIS,项目向导,会自动打开,,,通过,自动添加,ArcGIS,引用及许可初始化代码,,来帮助你高效地搭建新的,ArcGIS,定制项目,。,Class,Library,(,ArcMap,),Windows,Application,(Desktop),Windows Application(Engine),2.3,ArcGIS item templates,Add-in,组件模板,类模板,ArcGIS Add Class,(,最通用的类模板,),Wizard,当选择“,ArcGIS,Class,”模板后,,添加类向导,会自动显示,指导你完成类的创建。,ArcGIS Add Class Wizard include the following 3 steps:,Base Implementation option,Component Category option,Optional Interfaces option,Base Implementation option,Customization group,Base component,Component Category option,Categories,Category properties,Optional Interfaces option,Available optional interfaces,Selected interfaces,2.4,ArcGIS Reference dialog box,2.5,ArcGIS Component Category Registrar dialog box,2.6,ArcGIS License Initializer dialog box,不管是,ArcGIS,桌面应用程序还是独立的,GIS,应用程序,在访问,ArcObjects,组件之前,需要,明确地,使用合适的,ArcGIS,产品许可,进行初始化。,开发人员可以使用“,ArcGIS License Initializer dialog box,”,来产生并添加许可初始化代码到项目中的适当位置。,但如果选用项目模板,创建过程中包含选择合适的产品许可选项。,2.7,ArcGIS Toolbox Reference dialog box,This dialog box allows you to create a managed assembly for a custom ArcGIS toolbox,with one class representing each geoprocessing tool in the toolbox.,You can then use these classes to set up and run geoprocessing tools.,2.8,Snippets in ArcGIS for.NET developers,为了帮助,ArcGIS,软件开发人员进一步提高软件的开发效率,“,ArcGIS Visual Studio IDE Integration Framework,”提供了可重用的代码段供开发人员使用。,ArcGIS 10 offers a fully integrated ArcGIS Snippet insertion and finder tool.,C:Program FilesMicrosoft Visual Studio 10.0VC#SnippetsArcObjects,VS-,工具,-,代码段管理器(,T,),使用代码段,管理代码段,编辑、重建、查找代码段,ArcGIS,Snippet,Editor,Manager,ArcGIS,Snippet,Editor,Wizard,ArcGIS,Snippet,Finder,在,VS,中根据已有代码生成,Snippet,2.9,Walkthrough:Create a command by inheriting from BaseCommand,Create a simple command that zooms the extent of the selected layer,Create a new class library,Add references,Create a ZoomToLayer command,Change the default icon bitmap,Inherit the BaseCommand abstract class,Add code to the overridden constructor of BaseCommand,Add the ZoomToLayer functionality,Expose the ZoomToLayer class to COM,Compile the project,Use the command in ArcMap,Debugging the command,Demo:,Creating a command that zooms the extent of the selected layer,Snippets,3,ArcObjects,基础,ArcObjects,简介,ArcObjects,的组件库,理解对象模型图,3.1 ArcObjects,简介,ArcObjects,是,ESRI,公司,ArcGIS,系列产品的开发平台,它是基于,Microsoft COM,技术,所构建的,GIS,组件产品,,是一套可重用的通用的二次开发组件产品,它可以用于大量开发框架中,包括流行的像,.NET,、,Visual C+,、,Java,等开发环境。,ArcObjects,不是为最终用户而是专门为开发人员提供的二次开发组件。,ArcObjects,是,ArcGIS,系列产品的基础,大部分,ArcGIS,产品都是由,ArcObjects,构建的。,3.2,ArcObjects,的组件库,ArcObjects,是一套庞大的,COM,组件集合,,ArcGIS,各版本各种,COM,类型统计见下表:,Enums,Structs,Interfaces,Classes,Total,ArcGIS 9.0,628,35,3029,2322,6014,ArcGIS 9.1,933,36,3918,3043,7930,ArcGIS 9.2,1100,40,4798,3832,9770,ArcGIS 9.3,1195,51,5206,4050,10502,ArcGIS 10.0,1053,93,5555,4081,10782,为了更好地管理,ArcObjects,中数目众多的,COM,对象,,ESRI,将它们放置在不同的组件库中,,对于,.NET,来说,一个组件库就是一个,assembly,(程序集),,一个,assembly,有多个不同的命名空间。如,ESRI.ArcGIS.ADF,Assembly,的,Namespaces,:,ESRI.ArcGIS.ADF,ESRI.ArcGIS.ADF.BaseClasses,ESRI.ArcGIS.ADF.CATIDs,ESRI.ArcGIS.ADF.COMSupport,ESRI.ArcGIS.ADF.Resources,ArcObjects,10,的组件库共,65,个,(65assemblies),,,详细内容参见,Learning ArcObjects,、,ArcObjects,SDK,API,Reference,如果不记得某个接口或对象属于哪个命名空间的时候,可以通过开发帮助查找。,3.3,理解对象模型图,ESRI,提供了多种方法让用户了解,ArcObjects,组件及不同组件之间的关系,ESRI,提供的一系列,OMD,的,PDF,文件,开发帮助、,API,Reference,VS.NET,中的对象浏览器,通过阅读,ArcObjects,的对象模型图,(Object Model Diagram,,,OMD),,可以快速了解,ArcObjects,的结构和不同组件之间的关系。,OMD,使用,UML(Unified Modeling Language,,统一建模语言,),描述,它补充了在对象浏览器中看不到的信息,,可以帮助程序员了解类之间的关系,如何从一个类到另一个类,选择正确的接口,获取需要的属性和方法等。,VS,中的对象浏览器,3.3.1,类与对象,在,ArcObjects,中存在三种类型的类:,抽象类,(Abstract Class),组件类,(CoClass),普通类,(Class),抽象类,不能用于产生一个新的对象,但是可以用于定义一个子类。,组件类,是一个可以直接用,new,创建对象实例的类,它的实例对象不依赖其他对象的存在而存在,其生存周期也不用其他的对象管理。,普通类,不能够直接产生一个对象,但它可以用其他的普通类或组件类的方法产生,,而不是使用,new,关键字来完成,。,3.3.2,类与类的关系,ArcObjects,的类之间存在四种关系,依赖关系,关联关系,组合关系,类型继承,WorkspaceFactory,Workspace,MapControl,Map,Map,Layer,*,Curve,Segment,Path,PolyCurve,4,组件对象模型,软件开发历史,什么是组件对象模型,4.1,软件开发历史,软件重用,和,开发效率,始终是软件开发的核心问题。,在早期(面向过程语言),人们为了重用,将一些基本的数学计算函数和界面设计函数设计成函数库,让其他软件开发人员调用。它为应用开发者提供了方便,但是重用的粒度太小。,面向对象语言的出现,提高编程的粒度。面向对象语言的基本单位是类,它封装了数据成员和函数成员,将最小组件的粒度提高了一个等级。但是,一个类提供了很多种方法和属性,使用和管理很不方便。,COM,技术(接口)的出现,解决了以上问题,将类的内部属性和方法进行分类。,例如在,Map,类中有好几个接口,在这些接口中定义不同功能组的方法和属性,,Map,实现了这些接口,这样就可以使用接口进行定义。,但,COM,也存在一个严重的问题:,DLL,灾难。,.NET,技术的出现解决了,“,DLL,灾难,”,问题。,4.2,什么是组件对象模型,组件技术标准,COM,(,DCOM,):,微软的组件对象模型,(Distributed),Component Object Model,),JavaBean,:,Sun,公司的基于,Java,的组件技术,CORBA,:,对象管理组织,(Object Management Group,,,OMG),的组件技术标准,,公共对象请求代理结构,(Common,Object Request Broker,Architecture,,,CORBA),。,COM,知识要点,COM,是一种二进制级别的组件通信标准,-,接口,(Interface),,它定义了组件之间应该如何通信、一个,COM,对象之间的不同接口如何查询等。,COM,对象也是基于面向对象标准的。,COM,对象可以以,DLL,或者,EXE,文件形式存在,它包含着接口的具体实现。使用者可以通过接口来访问它内部的方法、属性。,COM,对象必须实现,IUnknown,接口,它负责管理,COM,对象生命周期并在运行时刻提供类型查询,,当,COM,对象不使用的时候,是这个接口定义的方法负责释放内存,。,QI(,Query Interface,),,即所谓查询接口,由于一个,COM,对象有很多个接口,不同的接口管理着,COM,的不同类型的方法、属性,因此从一个接口可以使用的属性方法转到另一个接口可以使用的属性方法的过程称为,QI,。这个过程也是由,IUnknown,接口管理的。,IMap,pMap;,IActiveView,pActiveView;,pMap=axMapControl1.Map;/,获取控件中的地图,pActiveView=pMap as IActiveView;/QI,(,Or,pActiveView=(IActiveView)pMap;,),每个组件都有一个独一无二的标识,GUID,。接口的,GUID,称为,IID,,而组件类的,GUID,称为,CLSID,。,CLSID,还有一个文本别名,即所谓的,ProgID,,它是一个由项目名加组件类类名组成的字符串。,一个,COM,对象可以有多个接口,一个接口也可以被多个,COM,对象实现。,接口分为两种,即内向接口和外向接口。,内向接口,(Inbound Interface),是组织,COM,对象相关的方法和属性,,COM,对象必须实现所有的接口内容;,外向接口,(Outbound Interface),是用于组织,COM,对象相关的事件,,开发人员根据需要实现事件接口,。,接口可以从多个父接口继承(,C#,类呢),接口继承机制是非常有用的,在很多时候程序员可以将一个子接口类型的对象定义为父接口类型的对象,从而实现一般化的操作,如:,Private void CreateGeometry(,IPolygon,pPolygon),Private void CreateGeometry(,IGeometry,pPolygon),COM,对象的接口一旦被公布,就不能再修改,但可以增加新接口,在,ArcObjects,中有很多以“,2”,、“,3”,结尾的接口,都是这样发展的产物。,COM,组件必须被注册后才能使用。,COM,的缺陷:,由于,COM,对象可以被重用,这样多个程序可能共用一个,COM,对象,如果这个,COM,组件升级了,就很可能出现其中某个程序无法使用新组件,导致程序不能运行的情况,这种情况被称为,“,DLL HELL,”,(DLL,灾难),。,5 .NET,平台概述,针对,Windows,平台存在的缺陷,微软提出了全新的,.NET,技术体系,其主要包括,.NET Framework,Visual Studio.NET,Visual Studio.NET,是一套完整的开发工具,用于生成各种类型的应用程序,包括,ASP Web,应用程序,、,XML Web services,、,桌面应用程序,和,移动应用程序,。,.NET Framework,是生成、部署和运行 各种应用程序的平台。,.NET Framework,具有两个主要组成部分:,通用语言运行时(,Common Language Runtime-CLR,),是,.NET Framework,的基础,.NET Framework,类库。,.NET Framework,体系结构,Operating System,Common Language Runtime,(CTS,JIT,Memory Management),Base Class Library,(System.IO,System.Drawing,System.Threading),Data Classes,(ADO.NET,XML,SQL),Windows Forms,Web Applications Web Services,Web Forms ASP.NET Mobile,Common Language Specification,VB,C+,C#,J#,Operating System,Common Language Runtime,(CTS,JIT,Memory Management),Base Class Library,(System.IO,System.Drawing,System.Threading),Data Classes,(ADO.NET,XML,SQL),Windows Forms,Web Applications Web Services,Web Forms ASP.NET Mobile,Visual Studio.NET,5.1,通用语言运行时(,CLR,),通用语
展开阅读全文