Skip to content

ProjectStructuration

Vianney Doleans edited this page Sep 6, 2020 · 2 revisions

Project Structuration

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 :

Idea in this structuration has been to simplify development of Isogeo Add-In.

Isogeo.AddIn

  • Main core of Isogeo Add-In
  • Contains Views and ViewModels folders (see MVVM Pattern), but also configuration files (config.daml, app.config, log4net.config)

Isogeo.Language

  • 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.

Isogeo.Map

  • Contains fonctions and classes necessary to communicate with ArcGis Pro software (change current zoom, add data, etc).

Isogeo.Models

  • Contains Models of Isogeo Add-In (see MVVM Pattern)
    • Filters and Network folders are the most important part of Isogeo.Models
    • Variables.cs is 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.cs singleton 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)

Isogeo.Resources

  • 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

Isogeo.Utils

  • Contains tools to use inside solution :
    • Log Manager (log4net)
    • Encrypt password Manager (security)
    • multiple other tools

MVVMPattern

  • 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.

Tests

  • 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.

Clone this wiki locally