GIS集成技术之四:Office, AutoCAD, MatLab集成
1.介绍
毫无疑问,Office是与dotnet集成性,兼容性做的最好的。在visual studio 2005中,集成的vsto技术,提供了几乎完全的对象模型,现在可以对world,excel,powerpoint,outlook等进行design time support,给OA开发人员带来了强的的生产动力。结合Smart Client技术,可以开发出高性能的integration of desktop & web Applicaiton。
2。评论
在很多oa中,我们并不需要Office的全部功能,我们希望利用Office的core technology,而全部的开发模式有过多的缺点(必须安装office,交互性不强,自由度不大,升级维护难,过于臃肿。。。)好像微软一直都不想把office组件化,模型化。
二。AutoCAD
1。介绍
在AutoCAD2004及其以前,用高级语言,主要用ObjectARX,仅限于C++人员(VBA和Visual Lisp不值一提);而直接利用AutoCAD Type Library调用应用程序本身,我认为并不是一个合适合理的方法(实际上是两个程序)
在AutoCAD2005及其以后,增加了对dotnet的support:provide managed wrappered packed 对象模型,可以供dotnet调用,其原理是在dotnet编写namespace, class method, CommandMethod, 生成.dll链接库,在AutoCAD中,用netload命令,load .dll,然后9can call CommandMethod。
2。评论
AutoCAD Managed ObjectARX提供的对象类型,并不是基于dotnet的,仅仅是对C++的类库进行了进一步的wrappered,其编程模型与dotnet相差甚大,跟dos,win32关系倒是很密。在实际应用中,会发现有些member can nto be detected by intelli sense,而且,还有一些get_***,set_***这样的语法,这应该是对COM进行简单包装而产生的。这种对com组件进行包装的做法,对公司而言可以充分利用现有资源,避免因为对宣传的蛊惑而产生的垃圾新技术风险,但另一方面,提高二次开发的难度:基本上很多优秀的dotnet framework class base,很少能够用的上,仅仅使用dotnet语言而已,这于平台技术的目的相差甚远。例如AutoCAD自己提供了Class Color,但是ObjectARX的Color不可能做的比Framework class理的class好,我们需要去熟悉ObjectARX里的Color,而这个类除了对AutoCAD有用之外,对别的开发没有什么帮助,各种弊端由此产生...
AutoCAD好像也没有组件化的可能,不能嵌入在集成项目中。
三。MatLab
1。介绍
不管GIS有多么大的空间分析计算能力,不管他能管理多么海量的数据,他的科学计算功能还是很弱的。而且GIS的计算,大部分是一种基于统计的模糊算法,很多问题不能得到精确解。但GIS要与行业应用结合起来,基于组件库,模型库(数学模型,仿真模型,物理模型等,前面已提到)集成是一个很好的解决方案,这些模型的计算,如果能用上matlab强大的科学计算功能,将如虎添翼,迅速打入各个技术行业。遗憾的,matlab提供的集成开发功能很弱:一种基于m,mex等文件转换成com组件(com组件的缺点在此不谈),一种是直接操作MatLab应用程序本身。它的这种操作本身最低级:直接对有MatLab命令组成的字符串计算求值,相当与解释语言中的Macro,没有提供对象模型。从这里可以看出,这些世界工程科学计算大师的计算机水平是实在是不敢恭维:强的科学计算功能+丑陋的二次开发,典型的头重脚轻。到现在为止,用dotnet call MatLab 功能的最好的方法是把MatLab脚本程序 用comtool conver to com。
2。评论
MatLab大师们已经看到他们的弱点。
这两天,我在网上到处搜索MatLab新的二次开发技术,确实有很多人在关心这个问题,在Mathworks官方网站上我找到了他们的答复:
Subject:
Does The MathWorks offer a product that works with Microsoft's .NET technology?
Problem Description:
I would like to generate .NET objects from my MATLAB functionality. The MATLAB Compiler and Builder for COM allow me to generate shared libraries and COM objects. However, I would like to generate .NET objects which integrate directly with my .NET project.
Solution:We are investigating Microsoft's .NET technology and are determining how this technology fits into our development strategy. We do not offer specific products that work with Microsoft's .NET technology. |
Subject:
Does The MathWorks offer a product that works with Microsoft's .NET technology?
Problem Description:
I would like to generate .NET objects from my MATLAB functionality. The MATLAB Compiler and Builder for COM allow me to generate shared libraries and COM objects. However, I would like to generate .NET objects which integrate directly with my .NET project.
个人希望MathLab能够(1)提供一个完善的对象模型,(2)组件化他们的产品,(3)改变M文件的某些过于简化因而导致容易出错的语法,形成安全,快速,现代的开发语言(现在的M文件不安全,开发速度,运行速度过慢,部署复杂),(4)与dotnet无缝集成,(5)改进应用程序的管理机制,以namespace ,class等对象模式管理,或者以虚拟目录管理,抛弃文件路径管理方式(这种管理方式太低级,缺点太多,一直让我难以接受)
I 'll be right here waiting for you !