aumcode / nfx

C# Server UNISTACK framework [MOVED]
https://github.com/agnicore/nfx
Other
391 stars 93 forks source link

Move NFX Pile to separate NuGet #76

Closed jakoss closed 7 years ago

jakoss commented 7 years ago

I would love to use your pile in our application, but it's not possible to move whole app to your framework (it's just too deep in akka.net).

Is there a possibility to get Pile as single library (apart from every other dependency from NFX Core)?

itadapter commented 7 years ago

@Nekromancer you do not need to move anything in your application to NFX to use Pile. Just use the classes that you need (i.e. DefaultPile, Cache etc.). - Pile works as a library without NFX framework context.

It is not possible to move Pile in a separate library because a). it serves no purpose but making dll smaller (2mb-> 800kb), b). Pile it is highly optimized for storing distributed data types - to you this does not matter, other than having a 2mb dll instead of 800K dll in a server app.

However, at any point in future you may want to get detailed logging and instrumentation of pile - all it would take is adding a few lines in config.

The .NET Core support comes after 2.0 official release in late fall.

jakoss commented 7 years ago

Ok, 2mb seem fair enough :) Thanks for the answer

itadapter commented 7 years ago

Anytime!

You can take a look here, notice there is no "NFX Framework" involved, as both pile and cache work as plain library. Internally it uses lots of stuff - but you are not going to get coupled to it.

Also, VERY IMPORTANT: to get the performance you need to run 64 bit app in GC SERVER MODE set in App.config. Otherwise CLR allocates objects very slowly.

https://github.com/aumcode/nfx/blob/master/Source/Testing/NUnit/NFX.NUnit/AppModel/Pile/CacheTest.cs

https://github.com/aumcode/nfx/blob/master/Source/Testing/NUnit/NFX.NUnit/AppModel/Pile/PileCacheTestCore.cs#L555-L572