-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Description
This issue will track the CRAWL phase of Orleans 2.X milestone as tracked by #2143
The idea with this task is to basically make Orleans Core compatible with .Net Core, by having it target .Net Standard and have the minimal impact as possible in the current codebase.
Since .Net Core tooling still unreliable and will (drastically) change before it reach RTM, we are following the guidelines from here and in a new temporary solution we will work at master
branch.
The target is to have Orleans building and running on .Net Full CLR and .Net Core (hence why target .Net Standard) on Windows and have the full test set only for the .Net Full CLR (.Net 4.6.1+) while having basic validation on .Net Core on Windows.
We will focus on Windows as a baseline but that doesn't mean people can't run tests on Linux/OSX once this work is done. That means that the core test set will focus on .Net Full CLR and basic .Net Core on Windows but you can test your Orleans application on .Net Core supported OSes. The test framework should stay as is. That means the major efforts will not be to update the test kit to multiple OSes and full .Net Core coverage but, if you feel comfortable, we still accept (and really encourage and appreciate!) PRs however, it will take lower priority (and of course efforts on review) from the core team and people from the community working on this port.
Here are the macro tasks and its issues that will be tracked for this phase:
- Add new solution targeting .Net Standard Library 1.5 (
netstandard15
) - Solution for .NET Standard using linked files #2177 - Build Orleans.vNext.sln in the CI Build.cmd script - Run .NET Standard tests in CI #2353 Build NuGet packages for Orleans 2.0 (.NET Standard) #2362
- Replace Binary Serializer - IL-based fallback serializer #2162
- Move Performance Counters to its own TelemetryConsumer - Moved Performance Counters to its own Telemetry Consumer #2122
- Use supported overloads from Socket class - .NET Standard compat: use supported overloads from Socket class #2195
- Remove usage of named mutexes Remove usage of named mutexes #2366
- Remove AppDomain usage for assembly loading/scanning - Assembly Catalog #2025 and in continued progress by @attilah
- Run non-silo tests (not blocked by Silo not working in memory) - in progress by @xiazen
- Avoid Silo being MarshalByRefObject but support running tests - .NET Standard compat: Avoid Silo being MarshalByRefObject but support running tests #2196
- Avoid test hooks being MarshalByRefObject (a few still pending) - Convert AppDomain test hooks to SystemTarget #2333
- Avoid usages of CallContext - .NET Standard compat: Avoid usages of CallContext #2197
- Run all silo tests that do not use extensibility features (such as external storage providers)
- Add storage providers with tests (all implementations that support .net standard out of the box) - Adding missing Orleans Extensions to .Net Core #2615
- Add stream providers with tests (all implementations that support .net standard out of the box) - Adding missing Orleans Extensions to .Net Core #2615 and EventHubs Stream provider ported to netstandard #2637
- Extract client implementation from main Orleans.dll (with should have the minimal abstractions)
- Migrate off the MSBuild hack for building .NET Standard once new tooling is available
- Support codegen in the final tooling
- Remove all
NETSTANDARD_TODO
comments by implementing workarounds - Clean up: Remove all
NETSTANDARD
comments by moving platform specific components to platform specific DLLs - Design our desired 2.0 nuget package structure (IDs and contents)
- Restructure vNext projects to recreate our expected 2.0 nuget packages output structure
- Full test set passing on .Net Framework 4.6.2 (
net462
) - Basic validation tests on .Net Core 1.0 (
netcoreapp10
)
Note: This list will be updated as new sub-tasks (issues and/or PRs) will emerge from this work.