Skip to content

Vision Roadmap

Daniel Svensson edited this page May 28, 2018 · 21 revisions

Open Ria Services - Roadmap/Vision

The below areas are areas that are identified as extra interesting for future development. The different points are not prioritized and none of them are promised to ever be implemented. In general most development is focused on small investments to unlock easy to reach but inpactful features. It is most about evolution and not revolution. Apart from the features below, performance improvements are always interesting.

This list contains areas where community investment is extra appreciated and contains issues of varying size. If you are interested in developing a feature, please open an issue if none exist in order to start an discussion so help and additional information/hints can be provided.

https://github.com/OpenRIAServices/OpenRiaServices/issues/127 can be used for feedback and other discussions.

Client

  • Add more transport (cross platform) options
  • Structural chagens
    • Split OpenRiaServices…Client.Web into .Wcf assembly and "web" ("binary endpoint"
    • Consider "transports" (DomainClientFactory) implementations from "Client.Core" nuget
      • Consider separate nuget for wcf rest transport
  • Improved EntityRef with FK based lookup in O(1) instead of O(n) ( https://github.com/OpenRIAServices/OpenRiaServices/issues/6)
  • Expose more internal types
    • For relection: MetaType and MetaMember
    • Entity visitors ?
  • Look into client side caching status (OutputCache support)
  • Extensibility
    • Consider allowing access to server headers (or just add hints to documentation)
  • Update supported target frameworks
    • Add netstandard2.0 target
    • Look into if netstandard 1.3 should remain
    • Reconsider Silverlight support (intends to include it in next update
  • Look into Controls package and se what can be useful for other targets
    • Primary WPF / desktop
  • Look into Silverlight.MVVM package and se what can be useful for other targets
    • Primary WPF / desktop
  • Look into moving ComboBox project into controls project
  • Investigations (long term)
    • Look into using EF.core for change tracking etc instead of current approach which mimics the "ObjectContext" approach popular in EF 4 and EF 5.
    • Look into using odata library or any other standard for query serialization/deserialization

Server

  • Consider shipping SOAP endpoint by default
  • Replace synchronous Invoke, Query, Submit with Task based "async" methods
    • Required to update Hosting (WCF) for true async invoke (for better perf)
  • Multitarget net4x and netstandard
  • sdd built in support for enitiyframeworkcore
  • NEW asp.net "MVC"/owin hosting with netsdandard 2.0 support

Look into using asp.net MVC hosting (DomainController project) for DomainService

Infrastructure/Other

  • Stop with dual release signed/unsigned (only keep signed)
    • Depreciate .signed. nuget packages and keep all assemblies signed
    • This will make mainanance, ci and testing a lot easier
  • Reconsider nuget package naming
    • Client packades should use "OpenRiaServices.Client.*"
    • Server packades should use "OpenRiaServices.Server.*"
    • Should "transports" have own "namespaces"?
      • Client.Transports.Wcf or Client. Wcf
  • Use VS 2017 for building all projects
    • The "hard part" of building Silverlight projects is already solved, what remains is to get CI builds working (VSTS build requires adding script for Silverlight SDK installation as part of build)
  • Reorganize folder structure

This should allow flattening the hierarcy as well as make it easier to use shared settings in the form of Directory.props and .targets

Since VS 2017 support multitargeting no separate folders are required for Silverlight/desktop etc. Should we have a "Transports" folder under client with Wcf, Web (binary), BinaryHttpClient

    • Framework/Source
      • Client
        • Client (OpenRiasServices.DomainServices.Client)
        • Web/WCf? (OpenRiasServices.DomainServices.Client.Web)
        • Controls
        • MVVM? ..
      • Server
        • Server
        • Hosting
    • Tooling (? Maybe separate repro)
    • Test
      • Client
      • Web
  • Documentation
    • Look into possibility of getting documentation from MSDN and updating it
    • Add more documentation for new features
    • Add Getting started project
  • Add samples repository
    • Silverlight sample
    • WPF sample
    • Silverlight+WPF with portable library
    • Xamarin mobile sample
  • Release updated tooling
    • Add all code generation settings to tooling window
    • Add official VS2017 support
    • Update nuget packages referenced by samples / items
  • Setup storage for large files required for testing