Architecture proposal

Introduction

The most important goals of Catel v5 are:

  1. Simplify feature sets (remove as much features we don't use as possible)
  2. Improve performance, see the benchmark summary
  3. Convert to .net standard to simplify the project structure (minimize platform-specific libraries)
  4. Support all important relevant / modern platforms (WPF, UWP, Xamarin Android / iOS, Xamarin.Forms)

Overview

Below is a visual representation of the library set up which should minimize the platform specific libraries as much as possible.

Catel.Core

Goal is to drop all the different platform implementations and provide a single Catel.Core based on net standard 2.0.

Actions required

  • Convert to .net standard 2.0

Features added

FeatureDescription




Features removed

FeatureDescription




Catel.MVVM

The Catel.MVVM library will be based on net standard 2.0. This means there will be a base version of Catel.MVVM.

  • Catel.MVVM
    • Catel.MVVM.Xamarin.iOS
    • Catel.MVVM.Xamarin.Android
    • Catel.MVVM.Windows.Shared => shared library for all windows libraries, will contain items from Catel.Extensions.Controls
      • Catel.MVVM.Windows.WPF.NET46
      • Catel.MVVM.Windows.UWP
    • Catel.MVVM.Xamarin.Forms.Shared
      • Catel.MVVM.Xamarin.Forms.Android
      • Catel.MVVM.Xamarin.Forms.iOS
      • Catel.MVVM.Xamarin.Forms.Tizen
      • Catel.MVVM.Xamarin.Forms.UWP

Actions required

  • Convert Catel.MVVM to .net standard 2.0
  • Create Catel.MVVM.Windows.Shared
  • Create Catel.MVVM.Xamarin.Forms.Shared
  • Create platform-specific libraries

Features added

FeatureDescription





Features removed

FeatureDescription
InterestedInThere are better ways to communicate between view models, this will improve performance



Catel.Extensions.Controls

This library will be fully removed. There are only 2 important features left.

Actions required

  • Move StackGrid to Catel.MVVM.Windows.Shared
  • Move StyleHelper to Orchestra (is WPF only)

Catel.Extensions.Data

Actions required

  • Convert to .net standard 2.0

Features added

FeatureDescription




Features removed

FeatureDescription




Catel.Extensions.DynamicObjects

Actions required

  • Convert to .net standard 2.0

Features added

FeatureDescription




Features removed

FeatureDescription




Catel.Extensions.EntityFramework

Actions required

  • Convert to .net standard 2.0

Features added

FeatureDescription




Features removed

FeatureDescription




Catel.Extensions.FluentValidation

Actions required

  • Convert to .net standard 2.0

Features added

FeatureDescription




Features removed

FeatureDescription




Catel.Serialization.Json

Actions required

  • Convert to .net standard 2.0

Features added

FeatureDescription




Features removed

FeatureDescription