I do -- https://github.com/apache/openwhisk-runtime-dotnet/issues/34 - The commends below are based on the code @kamyker pointed out in https://github.com/kamyker/openwhisk-dotnet-csharp/commit/f9a739779887b4262c987c0be8bf2b77071c651b#diff-6bc49d26f451cad6d8312deca5a0eadeL89-L96. Comments are for everything in the diff, not just the extraction aspect of things as mentioned in his comments. - Things to avoid (I think at least, please provide comments): + The overall diff will essentially break the existing contract and introduce a method not used in any other runtimes (AFAIK, I haven't looked at other recently). + Right now, we pass a JObject (essentially a class that exposes the payload as a JSON object, it is from the Newtonsoft.JSON library, which in the .NET world is the most used library for JSON serialization and manipulation [That's why I picked it for handling JSON in the runtime]) + This change will remove that and essentially pass thru the HttpRequest object (the originating object going into calling the function -- this is where I don't think we have any other runtimes doing this) - Things to look into a bit (since the change is more than just extracting a zip): +@kamyker explicitly handles the steps of extracting the payload and that might be faster than the helper method provided by the .NET runtime https://github.com/apache/openwhisk-runtime-dotnet/issues/39 - I believe this is resolved with the latest code in GitHub, but I am not sure if it has been included in a release. https://github.com/apache/openwhisk-runtime-dotnet/issues/35 - I believe this is also resolved with a change to validating the payload size and allowing larger zip files based on configuration. If I recall, this is in the latest release. In regards to the .NET serialization library used, backwards capability always comes to mind. Changing the library used also changes the object passed between our runtime and the end user function. We might be able to implement some code at Initialization that analyzes the end user function to see what object type the function expects and route it to a Newtonsoft.JSON handler or another libraries (maybe the one included with .NET now, it's gotten a lot better) handler and make a recommendation to migrate to the new handler and eventually phase out the Newtonsoft.JSON one. Just a thought on how we can handle changing that -- which is another thing @kamyker pointed out. Again, Newtonsoft.JSON was picked since it is the de facto standard for JSON in .NET. Thanks!!Shawn On Wednesday, December 16, 2020, 08:08:53 AM CST, Rodric Rabbah <rod...@gmail.com> wrote: Deprecating 2.2 makes sense to me being out of support. I'm neutral on 5.0 vs waiting for .NET 6.0 (I am not a .NET developer though :).
There were a couple of issues in the repo about improving the performance of the .NET runtime by reducing dependencies and tweaking the JSON serdes. Do you have thoughts on those? -r On Wed, Dec 16, 2020 at 12:02 AM Shawn Black <endo...@yahoo.com.invalid> wrote: > Howdy, all! > > I wanted to get some feedback on the current state of .NET within the > OpenWhisk ecosystem. > > Right now, we support .NET Core 2.2 (not LTS and no longer supported) > and .NET Core 3.1 (LTS). > > .NET 5.0 was recently released, but I would like to skip supporting this > version as it is not an LTS release. > > I think it would make more sense to wait for .NET 6.0, which will be an > LTS release. > > Once that is out, we can add support for it and then deprecate .NET 2.2. > > The .NET Core 3.1 runtime supports running .NET Core 2.2 binaries (we > have a unit test to support this). > > Thoughts? Concerns? > > Thanks!! > > Shawn > >