Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Completed

...

IDIEP-65
Author
Sponsor
Created

  

Status

Status
colour

Grey

Green
title

DRAFT

COMPLETED


Table of Contents

Motivation

...

  • Cross-platform (Windows, Linux, macOS)
  • CLI-friendly
    • Any example can be started from the command line without any extra steps
  • IDE-friendly
    • Examples are easy to select and run in all major IDEs (Visual Studio, VS Code, Rider, VS for Mac)
  • Easy to download and build
    • Do not require entire source or binary distribution
  • Standalone server
    • Nodes are easy to start: do not require complex commands
  • Produce nice output
    • Ignite logging should be minimal, example output should stand out
  • Both Thin and Thick examples are present where possible, and the code is as similar as possible

Implementation

  • .NET Core only (2.1)
    • .NET FW is more or less legacy now, and example code is the same for it anyway, only project files differ
  • One project (csproj) per example, all in the same solution (sln)
    • CLI friendly: cd ExampleName && dotnet run
    • IDE friendly
      • Visual Studio allows project selection on the toolbar
      • Rider allows project selection on the toolbar and an icon to start the program in the source code
      • VS Code needs special treatment: every example should be added to launch.json so that a list of them is visible in UI
  • NuGet-based (same way as Java examples are Maven-based)
    • Examples reference Ignite.NET packages, not Ignite source code or downloaded binaries (as it is right now)
    • Examples folder can be downloaded separately (git clone --filter) 
    • Compilation is quick
  • Contains ServerNode project which references all required types (query filters, compute jobs, etc) and can be started with `dotnet run` or directly from the IDE
    • Does not require fiddling with the command line like it is currently
  • Uses custom colored logger in thick mode so that example output stands out among all the logging


Proof of concept: #8651

Risks and Assumptions

None (those are just examples, after all)

Discussion Links

TODOhttp://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-IEP-65-NET-Examples-Modernization-td50997.html

Tickets

Jira
serverASF JIRA
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyIGNITE-13979