arcgis runtime sdk for .net: building windows apps › content › dam › esrisites › en-us ›...
TRANSCRIPT
Mike BranscombMorten Nielsen
ArcGIS Runtime SDK for .NETBuilding Windows Apps
Agenda
• Overview• ArcGIS Runtime Architecture• Getting Started• Enhancements
• Toolkit• Performance• .NET Core• Advanced Symbology
• Road Ahead
ArcGIS Runtime SDK for .NETOverview
• Develop native mapping and location analysis apps with .NET• 2D and 3D Visualization• Ready to use maps and data• Search and geocode• Directions and routing• Demographic data• Spatial analysis• Hosted data• Offline workflows
Overview: ArcGIS Runtime SDK for .NET
Apps
DesktopAPIs
Online
Enterprise
• Build native apps for popular platforms and devices- Standalone map-centric apps- Integrate GIS into your line-of-business apps
• Match the UI and UX conventions of the platform on which the app runs• Access native device capabilities e.g. GPS• Connected to ArcGIS Online or ArcGIS Enterprise• Offline with local data• Distribute through an app store
Overview: Why use ArcGIS Runtime?
• APIs- Windows Presentation Foundation (WPF)
- .NET Framework- .NET Core 3.1
- Universal Windows Platform (UWP)- Xamarin.Android- Xamarin.iOS- Xamarin.Forms (Android, iOS, and UWP)
• SDK- Templates, Toolkit controls, Doc, Sample code, Tutorials, Open Source Apps
• Cross-platform- Share your .NET C# business logic code across Android, iOS, and Windows
Overview
ArcGIS Runtime SDK for .NETArcGIS Runtime Architecture
Overview – ArcGIS Runtime SDK for .NETAn Architecture Designed to Maximize Performance and Reuse
C++ runtime core
WinLinux macOSAndroid iOS UWP
x86 x64 ARM64DirectXOpenGLOpenGL ES
Overview – ArcGIS Runtime SDK for .NETAn Architecture Designed to Maximize Performance and Reuse
C++ runtime core
x86 x64 ARM64DirectXOpenGLOpenGL ES
WPFUWPiOSAndroid
Xamarin.Forms
WinAndroid iOS UWP
ArcGIS Runtime SDK for .NETGetting Started
• Visual Studio extension (VSIX)- Install directly in Visual Studio
- Project templates for each supported platform- Download from developers.arcgis.com/downloads
- Project templates for each supported platform- Plus local NuGet packages for offline development
• NuGet packages on NuGet.org - WPF - UWP - Xamarin.Android- Xamarin.iOS- Xamarin.Forms (Android, iOS, UWP)- Toolkit- AR Toolkit
Installing ArcGIS Runtime SDK for .NET
Getting StartedDemo
• System requirements depend on the apps you plan to build
Prerequisites for development
• Toolkit• Performance• .NET Core• Modernizing Symbology
Enhancements
ToolkitArcGIS Runtime SDK for .NET
• Toolkit 100.7 – Released February 2020• Support for .NET Core with WPF• New Bookmarks control• Complete rewrite of Legend control and TableOfContents controls
- TableOfContents is currently in Preview
• Dark Mode support for iOS• New DocFX-based website with API reference and concept documentation
- Over time this will migrate to the ArcGIS Developers site
• Augmented Reality Toolkit incl. new project templates
Toolkit
PerformanceArcGIS Runtime SDK for .NET
• The dev team analyzed where time is spent and where memory is allocated• Reducing time
- = Faster response times
• Reducing allocations- = Fewer out-of-memory events - = Less work for the Garbage Collector
• Main focus has been on common customer scenarios e.g.- Creating and updating many Graphics, Features, and Geometries- Querying many Features and Graphics- Accessing and setting Feature and Graphic Attribute values
Performance Improvements
Performance Improvements - Graphics
0
0.2
0.4
0.6
0.8
1
1.2
100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0 100.8.0
Get Graphics Attributes
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0 100.8.0
Set Graphics Attributes
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0
Add 20000 Graphics
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
1.4
100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0 100.8.0
Update 20000 Graphics Attributes
Relative execution time Allocations
Performance Improvements - Geometry
0
0.2
0.4
0.6
0.8
1
1.2
1.4
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0 100.8.0
Set Graphics Geometry
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0
Create Spatial Reference
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
Create Point
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.6.0 100.7.0
Create Polygon
Relative execution time Allocations
Performance Improvements - Geometry
0
0.2
0.4
0.6
0.8
1
1.2
1.4
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0 100.8.0
Set Graphics Geometry
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0
Create Spatial Reference
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
Create Point
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.6.0 100.7.0
Create Polygon
Relative execution time Allocations
Performance Improvements – Feature Tables
0
0.2
0.4
0.6
0.8
1
1.2
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0 100.8.0
Query Feature Table
Relative execution time Allocations
0
0.2
0.4
0.6
0.8
1
1.2
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0 100.8.0
Add 40000 Features To Table
Relative execution time Allocations
Performance Improvements – MapView
0
100
200
300
400
500
600
100.0.0 100.1.0 100.2.0 100.2.1 100.3.0 100.4.0 100.5.0 100.6.0 100.7.0
MapView Control Load time (ms)
.NET CoreArcGIS Runtime SDK for .NET
• ArcGIS Runtime 100.7 supports .NET Core 3.1 with *WPF* for Windows Desktop apps• Removes dependency on system-wide .NET Framework
- Self-contained app folders- Deploys .NET Core to your app publish folder
• Benefit from .NET Core performance improvements
WPF & .NET Core 3.1
WPF & .NET Core 3.1
• Single File executables- Tooling packages your app- Includes .NET Core- Includes native libraries (e.g. ArcGIS Runtime)
• Full C#8 Support• Future enhancements with .NET 5, AOT compilation, etc.
• .NET Framework 4.8 is the last version of .NET Framework- Fully supported, but bug fixes only- Already several new .NET features not available with .NET Framework
• Open source:- Step right into source-code- Rapid and open development with the help of the community
Why .NET Core?
“While we do recommend that new desktop apps should consider targeting .NET Core, the .NET Framework will keep the high compatibility bar and will provide support for your apps for a very long time to come”
Can I move to .NET Core?
• Install the .NET Portability Analyzer Tool• Or run APIPort tool against binaries
- https://github.com/Microsoft/dotnet-apiport
• Move class libraries to .NET Standard if you can• Good porting resource from Microsoft
- http://esriurl.com/NetCorePort
Building and deploying .NET Core Apps
Demo.NET Core
• .NET Portability Analyzer- https://aka.ms/portabilityAnalyzer
• Try-Convert- dotnet tool install –g try-convert
• How to port desktop applications to .NET Core- http://esriurl.com/NetCorePort
• Modernizing the enterprise desktop application- http://esriurl.com/ModernDesktop
.NET Core Resources
Modernizing SymbologyArcGIS Runtime SDK for .NET
• Cartographic Information Model (CIM) - Published content specification used to persist and transfer cartographic descriptions - Works across the ArcGIS Platform- Represented in JSON
• Style files (.stylx)- Symbols can be stored, managed, and shared in collections called styles- ArcGIS Runtime uses Mobile Styles
• Symbols- Composed from one or more symbol layers with visual properties and geometry- Vectorized for crisp rendering on any device as any resolution
• Runtime API contains MultiLayerSymbol types- Replacement for the CompositeSymbol
• These concepts support the DictionaryRenderer
Modernizing Symbology
Symbol EditorDemo
• Source Available from:https://github.com/Esri/arcgis-runtime-demos-dotnet/
• Install right now with MSIX:• http://esriurl.com/SymbolEditor
Symbol Editor Sample
Road AheadArcGIS Runtime SDK for .NET
• Nullability• .NET 5• WinUI• iOS: Metal support
What will we be working in 2020?
Thank you!
Recommended session pairing:ArcGIS Runtime SDK for .NET: Building Xamarin Apps
Continue the discussion on: GeoNet: https://community.esri.com/