aumcode / nfx

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

.NET Standard #47

Closed igitur closed 6 years ago

igitur commented 7 years ago

After reading https://www.infoq.com/articles/Big-Memory-Part-2 I want to try NFX Pile in the ClosedXML project to improve memory and performance issues. However, we have a separate goal of support .NET Standard at some stage. Do you have any idea of the effort involved in making NFX Pile .NET Standard compliant?

itadapter commented 7 years ago

The answer depends on the stability of .NET standards - as far as surface contracts of .NET standards 2 and beyond. The ISerializable mechanisms have been absent in first incarnations of Core, however they have added it back-in. The serializability is a primary functionality of any distributed app, so looks like .NET Standard 2+ will most likely cover what we need. As for the NFX roadmap: NFX like no other framework is suitable for CORE/Standards as it is pretty much a clean implementation not coupled with "fat" legacy classes.

To summarize, we expect that NFX will be Standards compliant realistically when MS stabilizes their stuff, which would probably be in 2018.

Please take a look at SealedString class, also we can create a Pile version without Slim, that would be sufficient for storing hundreds of millions of strings - I think that is what you need for you XML project

igitur commented 7 years ago

Thank you. That response was a lot more encouraging than I expected!

Despite the name ClosedXML, it actually has little to do with XML. ClosedXML is a wrapper project around OpenXML, which the XML specification for Microsoft Office files (.xlsx for example). ClosedXML attempts to provide a user-friendly API around it. So, for a large spreadsheet, we load a complex object for each cell into memory. The object would contain the formula, value, formats and styles for the cell. There are a few places where we could use the SealedString class though.

I'm going to try NFX Pile - hopefully the serialization reduces the memory footprint at little performance impact.

itadapter commented 6 years ago

We now support .NET CORE/ NET STANDARD in NFXv5 https://github.com/agnicore/nfx