-
Notifications
You must be signed in to change notification settings - Fork 0
ProjectStructuration
Vianney Doleans edited this page Sep 6, 2020
·
2 revisions
ArcGis Pro Isogeo Add-In is composed of multiple projects :
- Isogeo.AddIn
- Isogeo.Language
- Isogeo.Map
- Isogeo.Models
- Isogeo.Resources
- Isogeo.Utils
- MVVMPattern
- Tests (empty)
And different dependencies :
- log4net (Log Manager)
- Newtonsoft.Json (JSON management)
- RestSharp (REST API communication)
Idea in this structuration has been to simplify development of Isogeo Add-In.
- Main core of Isogeo Add-In
- Contains Views and ViewModels folders (see MVVM Pattern), but also configuration files (config.daml, app.config, log4net.config)
- Translation core of Isogeo Add-In
- Contains 2 files (Resources.FR.resx and Resources.resx)
- Currently, this 2 files support respectively french and english
- You just have to add another file to add a new supported language (with good name, like FR for french), it will be automatically added inside ArcGis Pro software.
- Contains fonctions and classes necessary to communicate with ArcGis Pro software (change current zoom, add data, etc).
- Contains Models of Isogeo Add-In (see MVVM Pattern)
- Filters and Network folders are the most important part of Isogeo.Models
-
Variables.csis also an important part of Isogeo.Models- It's a singleton from ArcMap that I modified a lot to minimize impact/utilization on Isogeo Add-In
- Couldn't totally remove it in this short time, but still a lot better. There no more harmful interdependences and problems of structuration because of this singleton
- If one day, utilization of threads/parallelism/etc. inside ArcGis Pro Add-In is ever done : Don't forget to either totally removed
Variables.cssingleton from code, or, make utilization of mutex/lock etc. depending of necessity (if two threads/processes can simultaneously modify an element from variables singleton, it can make a lot of mess inside Isogeo Add-In). - Same for Isogeo.Map (MapFunctions) (unless you modify it to not use anymore singleton pattern, or alternatives)
- It's a singleton from ArcMap that I modified a lot to minimize impact/utilization on Isogeo Add-In
- Contains resources of Isogeo ArcGis Pro Add-In :
- Images
- Icons
- Styles (xaml)
- Themes (dark and light) (xaml)
- ControlTemplates.xaml (templates to design Isogeo Add-In components)
They're currently 2 themes realized :
- Dark
- Light
- Contains tools to use inside solution :
- Log Manager (log4net)
- Encrypt password Manager (security)
- multiple other tools
- Contains MVVM Pattern and Mediator Pattern used for the structuration of Isogeo ArcGis Pro Add-In.
- I didn't take a library/NuGet package to do it (like MVVM Light), because an ESRI developer announce that ArcGis Pro 3.0 will use WPF .NET Core.
- .NET and .NET Core libraries aren't compatibles, so request changes to go to .NET Core.
- Less the Add-In have dependencies, less it will be difficult to go to .NET Core
- Also, log4net, Newtonsoft.Json and RestSharp have just few lines inside Isogeo ArcGis Pro Add-In, so not complicate to find alternatives in the future.
- So, Code relative to .NET 4.8 is the only part that will require time for this migration.
- (.NET Core Framework have been renaming .NET 5.0, .NET 5.0 is .NET Core with some elements retrieved from .NET, it's not original .NET Framework (deprecated since 4.8))
- It will be a lot simpler than make a migration from WinForm to WPF, so don't worry, the hardest part is behind.
- I didn't take a library/NuGet package to do it (like MVVM Light), because an ESRI developer announce that ArcGis Pro 3.0 will use WPF .NET Core.
- Empty
- Setup is present, but only default test is present inside the project
- Project took a lot more time that specified in contract : I wanted to deliver a good product (need time), and Isogeo wanted to add a lot of elements (need time) + recipe was unclear. That explains why there are no tests.
Isogeo ArcGis Pro Add-In Documentation