• ArcObjects、ArcGIS Engine、ArcGIS Runtime、Pro SDK详细区别


    ArcObjects、ArcGIS Engine、ArcGIS Runtime、Pro SDK详细区别

    众所周知,ArcGIS的产品种类很多,光ArcGIS桌面端的二次开发产品就包括ArcGIS Engine、ArcGIS Runtime以及ArcGIS Pro SDK。初学者时常被这些产品搞乱,既不清楚这些产品的区别与联系,也不清楚做开发时应该选择哪种产品。由于这个问题被问的频率实在太高了,所以这里写个普及贴,以帮助大家更好的定位各个产品。

    1,ArcObjects和ArcGIS Engine的区别和联系

    ArcObjects:是一整套组件式开发接口的统称,ArcGIS Desktop(不含ArcGIS Pro)、ArcGIS Engine、ArcGIS Server都是基于ArcObjects开发出来的产品,下图一看便知:

    在这里插入图片描述
    所有这些功能模块都是ArcObjects,所以说ArcObjects的功能非常强大,既可以进行Desktop的扩展开发,也可以进行Server的功能扩展,如Server Object Extension(俗称SOE),也可以进行ArcGIS Engine开发。

    ArcGIS Engine:于2004年发布,是基于COM技术的可嵌入的组件库和工具包,构建在核心的ArcObjects之上,完全可扩展。它提供多种开发接口,可以适应.NET,Java和C++等开发环境,开发者可以使用这些组件来开发和GIS相关的地图应用。ArcGIS Engine既可以开发出具有地图界面的独立应用程序,也可以开发出进行后台数据处理的控制台程序,还可以进行嵌入式开发。ArcGIS Engine在10.0及之前版本又称为ArcGIS Engine Runtime,这里要和ArcGIS Runtime产品进行区分,经常有用户以为ArcGIS Runtime就是之前的Engine Runtime,这两者是不同的产品。此外,需要注意:目前ArcGIS Engine 10.7版本仅支持.Net和Java开发平台。

    TipsVC++属于.Net平台仍是支持的,但Cross Platform C++(例如Qt等)以及Engine的Linux版本从10.5版本起已经不再提供。

    综上,ArcGIS Engine是ArcObjects的一部分,使用Engine可以开发出具有独立地图界面的应用程序,能够进行非常细粒度的控制,可以实现大部分ArcMap的功能(界面部分需要自定义);而ArcObjects除了可以进行Engine开发,还可以进行ArcMap以及Server的扩展开发。

    2,ArcGIS Engine与ArcGIS Runtime区别和联系

    ArcGIS Runtime:是伴随ArcGIS 10.1发布而诞生的一款基于服务架构的全新产品,是一款轻量级桌面移动端跨平台开发产品。目前提供了5种API:.Net、Java、Qt、Android、IOS,支持6种平台:Windows、Linux、MacOS、UWP、Android、IOS,可以轻松构建跨平台应用程序。

    ArcGIS Engine和ArcGIS Runtime 都属于开发软件,可以用来开发独立的C/S程序。但是两者的底层是不同的,Engine是基于ArcObjects的,Runtime是基于Runtime API的;另一方面其开发模式也不同,Engine是单线程、同步、32位程序,而Runtime是多线程、异步、64位程序。所以如果想从Engine迁移到Runtime上来,代码是需要重写的。此外,Engine和Runtime在功能上也各有利弊:

    ArcGIS Engine:

    优点:功能强大,可以实现ArcMap的大部分功能,包括操作复杂对象如拓扑,几何网络等,可以进行精细化编辑,还可以进行专业级制图。

    缺点:只能32位,部署繁重,不支持矢量切片、三维场景、portal等。

    ArcGIS Runtime:

    优点:Esri大力发展,64位,部署简单,跨平台,展示效果好,支持矢量切片、三维场景、可以操纵Portal、此外还支持VR/AR等。

    缺点:对于复杂对象、精细化编辑和专业级制图的支持稍显不足。

    3,ArcGIS Runtime 10.2.x和ArcGIS Runtime 100.x的区别和联系

    10.2.x和100.x都是ArcGIS Runtime的产品,所以其功能是差不多的。10.2.x是早期的Runtime版本,相信进行早期Runtime开发的用户都不陌生;而100.x采用了全新的底层架构,API进行了重新设计,使得用户熟悉了一种API可以很容易的迁移到另一种,因为其API的名称、功能、参数都是一样的,比如熟悉了Runtime .Net API可以很容易迁移到移动端如Runtime Android API上。由于10.2.x版本已经不再更新,推荐直接使用100.x。10.2.x与100.x版本在结构和功能实现上都有区别,下面简单看一下:

    结构上

    ArcGIS Runtime SDK for .NET包括:
    Windows Presentation Framework (WPF)
    Universal Windows Platform (UWP) – 替代了10.2.x Windows Store and Windows Phone APIs.
    Xamarin.Android
    Xamarin.iOS
    Xamarin.Forms - Supports cross-platform development for Android, iOS, and UWP.

    Local Server之前是必装的,现在变为可选,程序中如果用到LocalServer的功能就安装,如果没有用到就不需要安装,更加轻量化。另外,部署Runtime产品时不再需要ArcGIS Runtime .NET Deployment Manifest,详细信息

    功能实现上

    API是不同的,如果将Runtime 10.2.x版本的程序迁移到100.x上的话,代码需要改写。100.x实现了Map和View的分离,采用了Loadable模式,GraphicsOverlay代替了之前的GraphicsLayer等等。此外,100.x版本增加了对一些新的离线格式如mmpk、mspk的支持,详细信息可以参考官方帮助

    4,Pro SDK与ArcObjects、ArcGIS Engine的区别

    Pro SDK:利用它可以实现对ArcGIS Pro的定制与扩展。Pro SDK是基于Pro API的,目前只有.Net,同样采用的是Add-ins的开发模式。需要注意,目前有部分Pro API是没有公开的。
    在这里插入图片描述
    下面以提问题和回答的方式让大家对Pro SDK有个初步认识:

    Q:ArcGIS Pro .NET SDK支持开发独立程序吗?
    A:可以开发独立程序,但是没有地图界面,ArcGIS.Core.dll中的Geometry和Geodatabase 类是可以的,参考CoreHost

    Q:ArcGIS Pro SDK是ArcObjects的替代品吗?
    A:不是,ArcObjects SDK用于定制和扩展ArcMap、ArcCatalog、ArcScene以及ArcGlobe。Pro SDK只用于ArcGIS Pro的定制和扩展。

    Q:ArcGIS Pro SDK是ArcGIS Engine的替代品吗?
    A:不是,ArcGIS Engine Developer Kit会继续提供。

    Q:之前的ArcObjects代码可以用于Pro吗?
    A:不行,ArcObjects代码必须使用Pro SDK进行重写。

  • 相关阅读:
    Garnet: 力压Redis的C#高性能分布式存储数据库
    你辛辛苦苦写的文章可能不是你的原创
    springboot 配置kafka批量消费,并发消费
    Flutter简单聊天界面布局及语音录制播放
    .NET 6.0.6 和 .NET Core 3.1.26、Visual Studio 2022 17.2 和 17.3 Preview 2 和 .NET 7.0 Preview 5 同时发布
    静态HTML个人音乐网页 大学生网页设计作业 简单音乐娱乐网页制作 DW个人网站模板下载 大学生简单音乐网页作品代码
    达人评测i7 12700kf和i9 12900kf选哪个好
    博客园美化
    这次彻底搞定CSS层叠、优先级!
    PHP+MySQL制作简单动态网站(附详细注释+源码)
  • 原文地址:https://blog.csdn.net/u012685544/article/details/126315904