New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NetCore meta-issue / Status #2153

Closed
alexvaluyskiy opened this Issue Jul 7, 2016 · 74 comments

Comments

Projects
None yet
@alexvaluyskiy
Member

alexvaluyskiy commented Jul 7, 2016

What has been done

  • Converted all projects to the new MSBuild 15 (Visual Studio 2017 required)
  • Added support for netstandard1.6 for all core modules
  • Switched all old protobuf2 serialization for remoting to the new protobuf3
  • All test projects target net452 and netcoreapp1.1
  • Rewrote all build scripts

Critical

  • Akka.IO - currently is not present in netstandard1.6 build, Tests are commented on all platforms. Waiting for (#2405)
  • NetCore nightly builds on MyGet (#2755)

In progress

  • Fix FsCheck tests on for Akka.Remote project (#2827)
  • NetCore in FSharp projects (#2826)
  • Remove protobuf2 serialization from Persistence (#2748)
  • Akka.DI.Core and Akka.DI.TestKit should support netcore (#2732)
  • Akka.Persistence.Sqlite should support netcore (#2682)
  • Switch to protobuf3 in Akka.Remote.Testkit (#2664)
  • Fix FsCheck tests on for Akka project
  • Fix OutOfMemoryException for Windows Unit Tests CI task (#2658)
  • Fix unit tests on Linux (both Mono and NetCoreApp1.1) (#2659)
  • Run NBench tests on Windows for .NET (#2660)
  • Fix tests in Akka.Streams.Tests (#2663)

Tests

  • Run MultiNode tests for netstandard1.6 target on Windows and Linux
  • Run NBench tests for netstandard1.6 target on Windows and Linux (#2768)
  • Fix FsCheck tests on for Akka.Remote project (#2827)
  • Invalid spec name on NetCore (#2690)
  • Fix Akka.MultiNodeTestRunner.Shared.Tests on NET 4.5.2 and NetCore (#2828)

Working branch
https://github.com/akkadotnet/akka.net/tree/v1.3

Alpha packages
https://www.myget.org/gallery/akkadotnet-netcore

@alexvaluyskiy alexvaluyskiy added this to the 1.2.0 milestone Jul 7, 2016

@alexvaluyskiy alexvaluyskiy changed the title from NetCore tasks to NetCore tasks / Status Jul 8, 2016

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 9, 2016

We don't have Delegate.Clone on NetCore, So this code won't work
https://github.com/akkadotnet/akka.net/blob/dev/src/core/Akka/Actor/Props.cs#L766
We should find an equivalent.
Is it a proper conversion?

var invokerCopy = (Func<TActor>)Delegate.CreateDelegate(typeof(TActor), invoker.Method);
@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 9, 2016

NetCore doesn't have LambdaExpression.CompileToMethod

expression.CompileToMethod(method);

We should find an equivalent.

@rogeralsing

This comment has been minimized.

Contributor

rogeralsing commented Jul 9, 2016

Hmm why would we need Delegate.Clone in the Props example to begin with?
I'm failing to see how that delegate should ever change as Props are immutable.

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 9, 2016

Props.cs looks like very outdated and contains a lot of TODOs. It even contains JsonIgnore attributes. Probably we don't need Delegate.Clone here

@rogeralsing

This comment has been minimized.

Contributor

rogeralsing commented Jul 10, 2016

One thing that we need to think about is what is idiomatic to .NET core.
My impression is that the Microsoft.Extensions.Logging and Microsoft.Extensions.DependencyInjection will be the way to go on .NET core for integration with the rest of the ecosystem.

So the question is, should we align the .NET core API of Akka.NET to this?

@adamhathcock

This comment has been minimized.

Contributor

adamhathcock commented Jul 10, 2016

I agree with @rogeralsing about using the ME.Logging and ME.DI. They're good all purpose shims.

I've been using them at work in large shared projects with success for a while now. The logging one especially allows for teams to use their logging framework of choice.

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

Why MS made this method as abstract in TextWriter class?
alexvaluyskiy@a5b57a2#diff-d033e8e925734250aa0ff60cc83e1714R90

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

@rogeralsing @adamhathcock I agree, DI and logging parts should be changed in Akka.NET. But it is out of scope here. Someone should do proof of concept.

@adamhathcock

This comment has been minimized.

Contributor

adamhathcock commented Jul 10, 2016

I'll see if I can find time in the coming days/weeks

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

@cconstantin We have a dependency on Akka.Remote assembly in Akka.Persistence.Tests.
Here: https://github.com/akkadotnet/akka.net/blob/dev/src/core/Akka.Persistence.Tests/Serialization/SerializerSpec.cs#L362
So we can't port these tests to NetCore right now. Because we can't port Akka.Remote and co at the moment.
Why we have Persistence + Remoting tests here?

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

@adamhathcock it is ahead of time. We should fix all NetCore issues before. I did all what I had planned to do in NetCore branch. So I need an assistance

@adamhathcock

This comment has been minimized.

Contributor

adamhathcock commented Jul 10, 2016

@alexvaluyskiy well, I'll help with some tasks on that if I can find time then :) It's just you can't rely on me for a stream of work between my job and two young kids

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

We should load App.config here in a some way
alexvaluyskiy@cd5d931#diff-390a43cf44056dff8f1c42cee7ab169aR67

@adamhathcock

This comment has been minimized.

Contributor

adamhathcock commented Jul 10, 2016

@alexvaluyskiy could the Microsoft.Extensions.Configuration be done there instead? It's possible to make a HOCON reader for it as well as the usual JSON option they use. I use a YAML one personally.

Looking at HOCON and the config (from the light knowledge of it) I think YAML and IConfiguration could be dropped in place.

@adamhathcock

This comment has been minimized.

Contributor

adamhathcock commented Jul 10, 2016

For a smaller task, just loading directly from any file could be implemented. App.config just doesn't exist anymore in .NET Core land

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

But Akka will target both net45 and netcore. So we should not break compatibility on NET45

@adamhathcock

This comment has been minimized.

Contributor

adamhathcock commented Jul 10, 2016

Can keep the System.Configuration stuff in on a flag and support loading HOCON just from any file. I guess that's the most straight forward thing.

Personally, System.Configuration is a mess to me and encouraging many different config file that can merged into a single Configuration like Microsoft.Extensions.Configuration does is pretty nice. The only issue is that HOCON supports objects and arrays while ME.Configuration really only deals with string values.

@adamhathcock

This comment has been minimized.

Contributor

adamhathcock commented Jul 10, 2016

Actually, ME.Config allows for arrays but you have to address them in the key. If HOCON doesn't require values to be objects or arrays then it can be done.

All my research is done while holding a baby...so armchair coding here.

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

Yes, it will be under the flag and we should test it. But App.Config don't load automatically in XPROJ. And we should load the config somehow for the test.

@marcpiechura

This comment has been minimized.

Contributor

marcpiechura commented Jul 10, 2016

It seems that not everybody is happy with the way ME.DI abstraction was designed. Don't now if these remarks are valid points or not since I haven't used DI container that much, but we should take them into account before we make the final decision.

https://simpleinjector.org/blog/2016/06/whats-wrong-with-the-asp-net-core-di-abstraction/

http://blog.ploeh.dk/2014/05/19/conforming-container/

@adamhathcock

This comment has been minimized.

Contributor

adamhathcock commented Jul 10, 2016

That's true but they're working on it aspnet/DependencyInjection#379

I think it will get sorted out and picking an interface such as IServiceProvider is a good idea

@annymsMthd

This comment has been minimized.

Member

annymsMthd commented Jul 10, 2016

Hey guys I would like to help out with this. Has anyone taken the Build/CI task yet?

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

@annymsMthd noone, you can take it

@annymsMthd

This comment has been minimized.

Member

annymsMthd commented Jul 10, 2016

Looks the Xunit2 project isn't implemented yet. Anyone on this? I can take this one too

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 10, 2016

It has implemented. I 've skipped only xunit1 project

@annymsMthd

This comment has been minimized.

Member

annymsMthd commented Jul 10, 2016

I see it now. Looks like my dotnet restore fails though. Ill look into it

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Jul 11, 2016

Why we reference both Xunit1 and Xunit2 projects in Akka.TestKit.Tests?
We can't port Xunit1 to NetCore, so it causes problems
Should we support Xunit1 package? Xunit2 looks pretty mature

@johnvanloon

This comment has been minimized.

johnvanloon commented Mar 7, 2017

Is there any progress on this issue. As VS2017 has been released today with a lot more support for .NET Core we are looking into migrating some solutions to .NET Core. These solutions do however rely heavily on Akka.NET.

As it's quiet in here since november I'm wondering if there is any progress? Maybe even an ETA?

Thanks!

@Horusiath

This comment has been minimized.

Contributor

Horusiath commented Mar 8, 2017

@johnvanloon we're constantly working on this. From my perspective, we're quite close to get in on board. Some of the packages (core + persistence) already have .net core compatible feeds on MyGet. @alexvaluyskiy will know the details.

@ArturKarbone

This comment has been minimized.

ArturKarbone commented Mar 14, 2017

Hi @alexvaluyskiy. How can I contribute to porting to .NET Core part of the project?

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Mar 14, 2017

@ArturKarbone look at thic PR #2532
It should be merged anyway.

It has some blockers, some of them I can't fix right now

@MonneOnrust

This comment has been minimized.

MonneOnrust commented Mar 16, 2017

I'm getting this error about the Google.ProtocolBuffers dependency while restoring the Akka.Persistence package:
image
I'm using a .NET Standard 1.4 class library. Am I doing something wrong or is Akka.Persistence not yet compatible with .NET Standard 1.4?

@Aaronontheweb

This comment has been minimized.

Member

Aaronontheweb commented Mar 16, 2017

@MonneOnrust I believe there's a new protobuff package we'll need to switch to that is .NET Standard compatible.

@MonneOnrust

This comment has been minimized.

MonneOnrust commented Mar 16, 2017

@Aaronontheweb thanks for your answer. BTW, the same goes for Reactive.Streams in the Akka.Streams package.

@OlegZee

This comment has been minimized.

Contributor

OlegZee commented Mar 26, 2017

@alexvaluyskiy I would like to contribute to netcore too. I successfully updated Akka.Remote to use Google Protobuf3 but have no idea where to push PR.

Also got some technical questions such as if Akka supports communication between different versions such as application compiler with Akka 1.1 could sent messages to application compiled with Akka 1.5?

If yes proto2 cannot be replaced by Hyperion.

Update: I see coreclr_final was updated just now and it compiles. Is it correct branch to contribute to?

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Mar 26, 2017

@OlegZee yes, coreclr_final is up-to-date coreclr branch.
I've also tried to convert all proto2 code to proto3 (converted all projects, except Remote).
And right now I want to try Hyperion instead of proto2. It works good in almost everywhere, except two cases with these types
Akka.Persistence.UnconfirmedWarning
Akka.Cluster.GossipEnvelope
If you could help to determine, why those messages are not processed correctly in the tests, it would be helpful. You can use this branch https://github.com/alexvaluyskiy/akka.net/tree/hyperionakka

@alexvaluyskiy alexvaluyskiy modified the milestones: 1.3.0, 1.5.0 May 6, 2017

@alexvaluyskiy alexvaluyskiy changed the title from NetCore tasks / Status to NetCore meta-issue / Status May 6, 2017

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented May 18, 2017

dotnet pack does not support a version suffix properly. NuGet/Home#4337
We should use this workaround

@Aaronontheweb

This comment has been minimized.

Member

Aaronontheweb commented May 31, 2017

@alexvaluyskiy as of petabridge/NBench#195, we should be all finished with NBench tooling for .NET Standard 1.6. @heynickc had to resolve some issues with how assembly loading behaves differently on .NET Core for dependent assemblies, but he's got that working now. Pushing out a new release of the NBench tools tomorrow and we should be able to drop them into Akka.NET without any further issues there, god-willing.

@kvinther

This comment has been minimized.

kvinther commented Jul 17, 2017

Would I be able to use akka.net for dotnet core by building the v1.3 branch? I only need the core runtime actor functionality. It is for a prototype project build in dotnet core, so I am happy to use a "beta" version of Akka.

@kantora

This comment has been minimized.

Contributor

kantora commented Jul 17, 2017

@kvinther yes, you will. Some modules are not yet ported but the core is working perfectly.

@ryudice

This comment has been minimized.

ryudice commented Jul 17, 2017

@kantora Would Akka.Cluster work?

@kantora

This comment has been minimized.

Contributor

kantora commented Jul 18, 2017

@ryudice I've tested it on Docker with Ubuntu and it worked fine. Hyperion serializer is still not supported, but JSON should do well.

@VenkateshSrini

This comment has been minimized.

VenkateshSrini commented Aug 1, 2017

Is the porting complete. Can I get the feed from NuGet for Akka.NET core packages

@Danthar

This comment has been minimized.

Member

Danthar commented Aug 1, 2017

@VenkateshSrini It will be complete when we release 1.3

@VenkateshSrini

This comment has been minimized.

VenkateshSrini commented Aug 1, 2017

@alexvaluyskiy

This comment has been minimized.

Member

alexvaluyskiy commented Aug 14, 2017

done

@ayoung

This comment has been minimized.

Contributor

ayoung commented Aug 14, 2017

What?!

@manigandham

This comment has been minimized.

@VenkateshSrini

This comment has been minimized.

VenkateshSrini commented Aug 15, 2017

Is it available in NuGET. I want to try this in .NET core.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment