Through the Interface-AutoCAD项目的开发语言选择

来源:互联网 发布:新页进销存软件客服 编辑:程序博客网 时间:2024/04/27 18:55

原文:Choosing the programming language to use for an AutoCAD development project

一位意大利的开发者给我提出了这样一个问题:

我们已经在ObjectARX(gear)和VB(GUI)的基础上开发了一套复杂的AutoCAD软件。如果迁移到C#中,在对实体的操作、性能等其他方面我们能不能保持与之前同样的效果?简而言之,现在是不是到了离开棘手的和痛苦的ARX世界转而拥抱.NET的天堂的时候了:-)?

在回答这个问题前,I’m going to take a step back for a second…

近年来,我已经很多次被问过什么是开发AutoCAD项目中“最好”的API。即使开发技术本身已经变化了,我给出答案却是相当一致。我几乎总是说“看情况”(我知道这让我听起来像一个律师;-)API选择取决于许多因素,我试图列出其中一些,排序不分先后:

  • 遗留代码库——有没有遗留代码库?它能满足客户的需求吗?如果是这样的话,有没有使你的遗留代码和你正在考虑的编程语言协同工作的方法?
  • 功能覆盖——你需要编程语言的什么功能?是核心的数字运算能力还是漂亮、直观的用户界面?这些需求和a)编程语言的能力、b)AutoCAD以API形式提供的接口的匹配程度如何? 
  • 性能——跟前述的问题相关是问题或性能。你知道你正在考虑的编程语言的性能能够满足客户的需求吗?
  • 和其它技术的集成——你需要和其它的产品或服务的进行集成,并有记录表明该语言能支持这样的集成吗?
  • 版本支持-你需要支持的平台(操作系统和AutoCAD版本)都允许使用这门语言吗?
  • 人才–你和你的同事都有经验有能力有信心可以学会这门语言吗?现在人才市场上掌握这些技术的人多不多?如果你必须雇人来在你的代码上工作,是很容易的招到人,还是会因为人才稀缺而会开出额外的费用?
  • 供应商技术支持–厂商是否(在这种情况下,我们可以考虑微软和Autodesk作为主要的技术供应商)对技术提供长期支持,不仅提供技术支持,而且提供技术升级?一个明显的例子是VBA不提供64位版本的支持——除非在我睡觉的时候突然发生了。这实际上意味着微软没有打算对它提供长期的技术支持,这将明显的限制如Autodesk之类的下游厂商的技术支持。
  • 技术支持——这门技术有没有完善的知识库和合格、有经验的支持人员?如果你需要马上解决一个问题,你可以打电话寻找支持吗?

好的,到目前为止我已经回答了大约17人所提的问题。:-)让我们尝试更直接的解决这一问题…

我个人总是提倡用正确的工具做正确的事。我相信掌握许多不同的编程语言和方法在当今世界对一名专业程序员是非常有益的。它能在你周围的世界在不停的变化的时候增加你的灵活性。我也相信,正如这个意大利开发者所说的,在一个项目中混合应用各种技术是很实用的。核心开发人员用C++编写的核心引擎,UI界面开发人员则用VB进行开发也正是我几年前选择(可能是项目启动后)。如果要我进行一个“绿色领域”开发项目,在没有遗留代码考虑的情况下,我现在的选择将会倾向于一种或多种.NET语言(鉴于AutoCAD中托管代码的性能表现和原生C++的一样这种要求在大多数情况下并不重要,再加上由WinForms提供UI的可能性——甚至WPF)

我之所以说“一种或多种”是因为我认为不同的模块可以用不同的语言实现,在一些领域,C#和VB在大多数的层次上都互不相让(大多数决定使用哪种语言往往于基于信仰了;-),但是把F#加进来会使我的观点在函数化编程更加适合的一些领域更加有效(这些领域主要和数学有很强的联系,但也有其它领域,例如我上一篇博客所说的)

我会选择ObjectARX吗?可能,这取决于什么需求。到现在为止,自定义对象(custom objects)只能使用ObjectARX(即C++)来实现。 我会在决定采用自定义对象实现需求之前仔细考虑有没有其它的替代方案(现阶段有些功能只能通过自定义对象来实现,我们一直致力于通过各种方法减少这些实现起来需要巨大的资源投入的功能)。我个人只会在必须要用自定义对象实现的时候才采用ObjectARX。

采用统一语言编码的代码显然会带来效益:所有的代码都用同一种的语言,使用相同的工具,开发人员可以进入不同的代码,否则可能会花费多的精力。但这确实只是一种理想状况,根据这位意大利开发者的情况,我会非常仔细地考虑迁移整个代码库的好处:我觉得ObjectARX组件迁移到.NET的带来的好处会非常少,除了扩大司的可用skillbase(和长期看减少潜在的运行维护成本),但用更现代的界面替换VB截面会更加实惠。本地C++和托管代码之间的互操作非常复杂的,因此,这样做使生活更容易,特别是如果ObjectARX组件已经通过COM暴露给VB使用。

然而,因为我对这位意大利开发者的具体情况了解不多,这篇文字实际上并没有回答所提的问题——这篇文章只是朝解决方案靠近一点点,希望在评估各种选项时能使您了解应该要做什么。

原创粉丝点击