AutoCAD开发人员从AutoCAD 2004开始提供了"托管"的API("托管”后来被称为".NET")。这些托管API在当时是非常具有革命性的东西——它创建了一种混合模式的DLL来开放托管的界面并且将这些函数调用转换为“非托管”的ObjectARX调用。有许多理由使得开发人员曾经并且将一直对.NET非常感兴趣
.NET以前只通过COM对Visual Basic用户(至少主要是)提供更简单的开发工具。用户可以在项目中使用COM或NET组件,但是可以用更加高级的语言(就其本身的能力来说,VB .NET确实比VB6更高级的一门语言)产生简单的客户端代码。
对Autodesk来说,最主要的好处是托管API映射复杂的数据类型(如ObjectARX的定义的那些)的能力。当设计一个COM API时,你会受到更多的限制 ——你可以使用某些基本类型,或者不这么干,你也可以定义更复杂的基于IDispatch的接口,但这些都回带来一些潜在的设计和开发成本:对复杂的C++类开放COM自动化接口非常困难。但是使用.NET却不一样... ObjectARX的一致性的设计极大的提高了我们自动化的处理能力,我们从内部API定义数据库中半自动生成代码(这个数据库也用来生成AutoCAD的ObjectARX和托管API的参考资料) 。
对于使用AutoCAD中.NET API的一些基本指导可以参见AutoCAD开发者中心——正如之前提到的,Labs是一个很好的开始。在我接下来的的几个帖子中,我将讨论一下AutoCAD的.NET应用程序的基本结构,以及如何分别通过COM Interop和P/Invoke利用现有的COM和非托管的ObjectARX API。