Browse Source

Update .NET frameworks to .NET 5.0 (#6000)

* Update some frameworks to .NET 5.0

* Extra frameworks

* F# frameworks

* I hear VB wants in too

* Update VB

* Peachpie target 5.0

* F# target 5.0

* C# targeting

* Update C# lib refs

* Update F# libs

* Fix F#

* Fix VB

* Update platform

* Fix corert

* Fix Nancy

* Fix tetsuweb docker

* Fix zysocket-v

* Partially revert corert

* fix giraffe

* Fix Nancy url length

* revert corert more

* Revert BeetleX

* Revert zysocket-v
Ben Adams 4 years ago
parent
commit
a29dc9edec
87 changed files with 351 additions and 353 deletions
  1. 2 2
      frameworks/CSharp/aspnetcore-corert/PlatformBenchmarks/BenchmarkApplication.Json.cs
  2. 119 31
      frameworks/CSharp/aspnetcore-corert/PlatformBenchmarks/BenchmarkApplication.cs
  3. 1 1
      frameworks/CSharp/aspnetcore-corert/aspcore-corert-rhtx.dockerfile
  4. 1 1
      frameworks/CSharp/aspnetcore-corert/aspcore-corert.dockerfile
  5. 5 5
      frameworks/CSharp/aspnetcore/Benchmarks/Benchmarks.csproj
  6. 46 87
      frameworks/CSharp/aspnetcore/PlatformBenchmarks/BenchmarkApplication.cs
  7. 1 1
      frameworks/CSharp/aspnetcore/PlatformBenchmarks/PlatformBenchmarks.csproj
  8. 2 2
      frameworks/CSharp/aspnetcore/aspcore-ado-my.dockerfile
  9. 2 2
      frameworks/CSharp/aspnetcore/aspcore-ado-pg-up.dockerfile
  10. 2 2
      frameworks/CSharp/aspnetcore/aspcore-ado-pg.dockerfile
  11. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc-ado-my.dockerfile
  12. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc-ado-pg-up.dockerfile
  13. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc-ado-pg.dockerfile
  14. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc-dap-my.dockerfile
  15. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc-dap-pg-up.dockerfile
  16. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc-dap-pg.dockerfile
  17. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc-ef-pg-up.dockerfile
  18. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc-ef-pg.dockerfile
  19. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mvc.dockerfile
  20. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-ado-my.dockerfile
  21. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-ado-pg-up.dockerfile
  22. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-ado-pg.dockerfile
  23. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-dap-my.dockerfile
  24. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-dap-pg-up.dockerfile
  25. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-dap-pg.dockerfile
  26. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-ef-pg-up.dockerfile
  27. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-ef-pg.dockerfile
  28. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw-json.dockerfile
  29. 2 2
      frameworks/CSharp/aspnetcore/aspcore-mw.dockerfile
  30. 2 2
      frameworks/CSharp/aspnetcore/aspcore-rhtx-pg-up.dockerfile
  31. 2 2
      frameworks/CSharp/aspnetcore/aspcore-rhtx-pg.dockerfile
  32. 2 2
      frameworks/CSharp/aspnetcore/aspcore-rhtx.dockerfile
  33. 2 2
      frameworks/CSharp/aspnetcore/aspcore.dockerfile
  34. 4 4
      frameworks/CSharp/beetlex/PlatformBenchmarks/PlatformBenchmarks.csproj
  35. 2 2
      frameworks/CSharp/beetlex/beetlex-core-updb.dockerfile
  36. 2 2
      frameworks/CSharp/beetlex/beetlex-core.dockerfile
  37. 2 2
      frameworks/CSharp/beetlex/beetlex-debug.dockerfile
  38. 0 1
      frameworks/CSharp/beetlex/beetlex.dockerfile
  39. 2 2
      frameworks/CSharp/carter/Benchmarks/Benchmarks.csproj
  40. 2 2
      frameworks/CSharp/carter/carter.dockerfile
  41. 4 4
      frameworks/CSharp/easyrpc/Benchmarks/Benchmarks.csproj
  42. 2 2
      frameworks/CSharp/easyrpc/easyrpc.dockerfile
  43. 3 3
      frameworks/CSharp/genhttp/Benchmarks/Benchmarks.csproj
  44. 2 2
      frameworks/CSharp/genhttp/genhttp.dockerfile
  45. 2 2
      frameworks/CSharp/nancy/benchmark_config.json
  46. 3 3
      frameworks/CSharp/nancy/nancy-netcore.dockerfile
  47. 1 1
      frameworks/CSharp/nancy/src/DbModule.cs
  48. 7 6
      frameworks/CSharp/nancy/src/NancyBenchmark.csproj
  49. 2 2
      frameworks/CSharp/nancy/src/QueryModule.cs
  50. 2 2
      frameworks/CSharp/tetsuweb/Benchmark/Benchmark.csproj
  51. 2 2
      frameworks/CSharp/tetsuweb/tetsuweb.dockerfile
  52. 1 1
      frameworks/CSharp/zysocket-v/PlatformBenchmarks/Properties/PublishProfiles/FolderProfile.pubxml
  53. 2 2
      frameworks/FSharp/falco/falco-rhtx.dockerfile
  54. 2 2
      frameworks/FSharp/falco/falco.dockerfile
  55. 3 3
      frameworks/FSharp/falco/src/App/App.fsproj
  56. 2 2
      frameworks/FSharp/frank/frank-rhtx.dockerfile
  57. 2 2
      frameworks/FSharp/frank/frank.dockerfile
  58. 5 4
      frameworks/FSharp/frank/src/App/App.fsproj
  59. 1 1
      frameworks/FSharp/frank/src/App/HtmlViews.fs
  60. 2 2
      frameworks/FSharp/giraffe/giraffe-stripped.dockerfile
  61. 2 2
      frameworks/FSharp/giraffe/giraffe-utf8direct.dockerfile
  62. 2 2
      frameworks/FSharp/giraffe/giraffe-utf8json.dockerfile
  63. 2 2
      frameworks/FSharp/giraffe/giraffe.dockerfile
  64. 4 4
      frameworks/FSharp/giraffe/src/App/App.fsproj
  65. 1 1
      frameworks/FSharp/giraffe/src/App/Custom.fs
  66. 1 1
      frameworks/FSharp/giraffe/src/App/HtmlViews.fs
  67. 8 3
      frameworks/FSharp/giraffe/src/App/StatefullRendering.fs
  68. 2 3
      frameworks/FSharp/giraffe/src/App/Stock.fs
  69. 3 2
      frameworks/FSharp/suave/src/App/App.fsproj
  70. 1 1
      frameworks/FSharp/suave/suave.dockerfile
  71. 3 3
      frameworks/FSharp/zebra/src/App/App.fsproj
  72. 2 2
      frameworks/FSharp/zebra/src/App/Middleware.fs
  73. 2 2
      frameworks/FSharp/zebra/zebra-simple.dockerfile
  74. 2 2
      frameworks/FSharp/zebra/zebra.dockerfile
  75. 1 1
      frameworks/PHP/peachpie/Server/Server.csproj
  76. 2 2
      frameworks/PHP/peachpie/peachpie.dockerfile
  77. 3 4
      frameworks/VB/aspnetcore/Benchmarks/Benchmarks.vbproj
  78. 5 11
      frameworks/VB/aspnetcore/Benchmarks/Middleware/JsonMiddleware.vb
  79. 2 7
      frameworks/VB/aspnetcore/Benchmarks/Middleware/MultipleQueriesRawMiddleware.vb
  80. 2 6
      frameworks/VB/aspnetcore/Benchmarks/Middleware/MultipleUpdatesRawMiddleware.vb
  81. 2 8
      frameworks/VB/aspnetcore/Benchmarks/Middleware/SingleQueryRawMiddleware.vb
  82. 2 2
      frameworks/VB/aspnetcore/Benchmarks/Startup.vb
  83. 2 3
      frameworks/VB/aspnetcore/aspcore-vb-mw-ado-my.dockerfile
  84. 2 3
      frameworks/VB/aspnetcore/aspcore-vb-mw-ado-pg.dockerfile
  85. 0 12
      frameworks/VB/aspnetcore/aspcore-vb-mw-utf8json.dockerfile
  86. 2 3
      frameworks/VB/aspnetcore/aspcore-vb-mw.dockerfile
  87. 0 18
      frameworks/VB/aspnetcore/benchmark_config.json

+ 2 - 2
frameworks/CSharp/aspnetcore-corert/PlatformBenchmarks/BenchmarkApplication.Json.cs

@@ -20,7 +20,7 @@ namespace PlatformBenchmarks
             writer.Write(_jsonPreamble);
 
             // Date header
-            writer.Write(DateHeader.HeaderBytes);            
+            writer.Write(DateHeader.HeaderBytes);
 
             writer.Commit();
 
@@ -28,4 +28,4 @@ namespace PlatformBenchmarks
             writer.Write(jsonPayload);
         }
     }
-}
+}

+ 119 - 31
frameworks/CSharp/aspnetcore-corert/PlatformBenchmarks/BenchmarkApplication.cs

@@ -2,6 +2,11 @@
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using System;
+using System.Buffers.Text;
+using System.IO.Pipelines;
+using System.Text.Json;
+using System.Threading.Tasks;
+
 using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http;
 
 namespace PlatformBenchmarks
@@ -12,62 +17,107 @@ namespace PlatformBenchmarks
         public static AsciiString ApplicationName => _applicationName;
 
         private readonly static AsciiString _crlf = "\r\n";
+        private readonly static AsciiString _eoh = "\r\n\r\n"; // End Of Headers
         private readonly static AsciiString _http11OK = "HTTP/1.1 200 OK\r\n";
+        private readonly static AsciiString _http11NotFound = "HTTP/1.1 404 Not Found\r\n";
         private readonly static AsciiString _headerServer = "Server: K";
         private readonly static AsciiString _headerContentLength = "Content-Length: ";
         private readonly static AsciiString _headerContentLengthZero = "Content-Length: 0";
         private readonly static AsciiString _headerContentTypeText = "Content-Type: text/plain";
         private readonly static AsciiString _headerContentTypeJson = "Content-Type: application/json";
+        private readonly static AsciiString _headerContentTypeHtml = "Content-Type: text/html; charset=UTF-8";
+
+        private readonly static AsciiString _dbPreamble =
+            _http11OK +
+            _headerServer + _crlf +
+            _headerContentTypeJson + _crlf +
+            _headerContentLength;
 
         private readonly static AsciiString _plainTextBody = "Hello, World!";
 
+        private static readonly JsonSerializerOptions SerializerOptions = new JsonSerializerOptions();
+
+        private readonly static AsciiString _fortunesTableStart = "<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>";
+        private readonly static AsciiString _fortunesRowStart = "<tr><td>";
+        private readonly static AsciiString _fortunesColumn = "</td><td>";
+        private readonly static AsciiString _fortunesRowEnd = "</td></tr>";
+        private readonly static AsciiString _fortunesTableEnd = "</table></body></html>";
+        private readonly static AsciiString _contentLengthGap = new string(' ', 4);
+
+#if DATABASE
+        public static RawDb Db { get; set; }
+#endif
+
+        [ThreadStatic]
+        private static Utf8JsonWriter t_writer;
+
         public static class Paths
         {
             public readonly static AsciiString Json = "/json";
             public readonly static AsciiString Plaintext = "/plaintext";
+            public readonly static AsciiString SingleQuery = "/db";
+            public readonly static AsciiString Fortunes = "/fortunes";
+            public readonly static AsciiString Updates = "/updates/";
+            public readonly static AsciiString MultipleQueries = "/queries/";
+            public readonly static AsciiString Caching = "/cached-worlds/";
         }
 
         private RequestType _requestType;
+        private int _queries;
 
 #if NETCOREAPP5_0 || NET5_0
         public void OnStartLine(HttpVersionAndMethod versionAndMethod, TargetOffsetPathLength targetPath, Span<byte> startLine)
         {
-            var requestType = RequestType.NotRecognized;
-            if (versionAndMethod.Method == HttpMethod.Get)
-            {
-                var pathLength = targetPath.Offset;
-                if (pathLength == 10 && startLine.SequenceEqual(Paths.Plaintext))
-                {
-                    requestType = RequestType.PlainText;
-                }
-                else if (pathLength == 5 && startLine.SequenceEqual(Paths.Json))
-                {
-                    requestType = RequestType.Json;
-                }
-            }
-
-            _requestType = requestType;
+            _requestType = versionAndMethod.Method == HttpMethod.Get ? GetRequestType(startLine.Slice(targetPath.Offset, targetPath.Length), ref _queries) : RequestType.NotRecognized;
         }
 #else
         public void OnStartLine(HttpMethod method, HttpVersion version, Span<byte> target, Span<byte> path, Span<byte> query, Span<byte> customMethod, bool pathEncoded)
         {
-            var requestType = RequestType.NotRecognized;
-            if (method == HttpMethod.Get)
+            _requestType = method == HttpMethod.Get ? GetRequestType(path, ref _queries) : RequestType.NotRecognized;
+        }
+#endif
+
+        private RequestType GetRequestType(ReadOnlySpan<byte> path, ref int queries)
+        {
+#if !DATABASE
+            if (path.Length == 10 && path.SequenceEqual(Paths.Plaintext))
             {
-                if (path.Length == 10 && path.SequenceEqual(Paths.Plaintext))
-                {
-                    requestType = RequestType.PlainText;
-                }
-                else if (path.Length == 5 && path.SequenceEqual(Paths.Json))
-                {
-                    requestType = RequestType.Json;
-                }
+                return RequestType.PlainText;
+            }
+            else if (path.Length == 5 && path.SequenceEqual(Paths.Json))
+            {
+                return RequestType.Json;
+            }
+#else
+            if (path.Length == 3 && path[0] == '/' && path[1] == 'd' && path[2] == 'b')
+            {
+                return RequestType.SingleQuery;
+            }
+            else if (path.Length == 9 && path[1] == 'f' && path.SequenceEqual(Paths.Fortunes))
+            {
+                return RequestType.Fortunes;
+            }
+            else if (path.Length >= 15 && path[1] == 'c' && path.StartsWith(Paths.Caching))
+            {
+                queries = ParseQueries(path.Slice(15));
+                return RequestType.Caching;
+            }
+            else if (path.Length >= 9 && path[1] == 'u' && path.StartsWith(Paths.Updates))
+            {
+                queries = ParseQueries(path.Slice(9));
+                return RequestType.Updates;
+            }
+            else if (path.Length >= 9 && path[1] == 'q' && path.StartsWith(Paths.MultipleQueries))
+            {
+                queries = ParseQueries(path.Slice(9));
+                return RequestType.MultipleQueries;
             }
-
-            _requestType = requestType;
-        }
 #endif
+            return RequestType.NotRecognized;
+        }
+
 
+#if !DATABASE
         private void ProcessRequest(ref BufferWriter<WriterAdapter> writer)
         {
             if (_requestType == RequestType.PlainText)
@@ -83,9 +133,42 @@ namespace PlatformBenchmarks
                 Default(ref writer);
             }
         }
+#else
+
+        private static int ParseQueries(ReadOnlySpan<byte> parameter)
+        {
+            if (!Utf8Parser.TryParse(parameter, out int queries, out _) || queries < 1)
+            {
+                queries = 1;
+            }
+            else if (queries > 500)
+            {
+                queries = 500;
+            }
+
+            return queries;
+        }
 
+        private Task ProcessRequestAsync() => _requestType switch
+        {
+            RequestType.Fortunes => Fortunes(Writer),
+            RequestType.SingleQuery => SingleQuery(Writer),
+            RequestType.Caching => Caching(Writer, _queries),
+            RequestType.Updates => Updates(Writer, _queries),
+            RequestType.MultipleQueries => MultipleQueries(Writer, _queries),
+            _ => Default(Writer)
+        };
+
+        private static Task Default(PipeWriter pipeWriter)
+        {
+            var writer = GetWriter(pipeWriter, sizeHint: _defaultPreamble.Length + DateHeader.HeaderBytes.Length);
+            Default(ref writer);
+            writer.Commit();
+            return Task.CompletedTask;
+        }
+#endif
         private readonly static AsciiString _defaultPreamble =
-            _http11OK +
+            _http11NotFound +
             _headerServer + _crlf +
             _headerContentTypeText + _crlf +
             _headerContentLengthZero;
@@ -102,7 +185,12 @@ namespace PlatformBenchmarks
         {
             NotRecognized,
             PlainText,
-            Json
+            Json,
+            Fortunes,
+            SingleQuery,
+            Caching,
+            Updates,
+            MultipleQueries
         }
     }
-}
+}

+ 1 - 1
frameworks/CSharp/aspnetcore-corert/aspcore-corert-rhtx.dockerfile

@@ -5,7 +5,7 @@ WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out -r linux-x64
 
-FROM mcr.microsoft.com/dotnet/core/runtime-deps:3.1 AS runtime
+FROM mcr.microsoft.com/dotnet/core/runtime-deps:3.1.2 AS runtime
 WORKDIR /app
 COPY --from=build /app/out ./
 

+ 1 - 1
frameworks/CSharp/aspnetcore-corert/aspcore-corert.dockerfile

@@ -5,7 +5,7 @@ WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out -r linux-x64
 
-FROM mcr.microsoft.com/dotnet/core/runtime-deps:3.1 AS runtime
+FROM mcr.microsoft.com/dotnet/core/runtime-deps:3.1.2 AS runtime
 WORKDIR /app
 COPY --from=build /app/out ./
 

+ 5 - 5
frameworks/CSharp/aspnetcore/Benchmarks/Benchmarks.csproj

@@ -1,6 +1,6 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <OutputType>Exe</OutputType>
   </PropertyGroup>
 
@@ -12,11 +12,11 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.0" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.0-rc.1.20451.17" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.0-rc.1.20451.13" />
 
-    <PackageReference Include="Dapper" Version="2.0.30" />
+    <PackageReference Include="Dapper" Version="2.0.35" />
     <PackageReference Include="MySqlConnector" Version="1.0.1" />
-    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.0" />
+    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.0-rc1" />
   </ItemGroup>
 </Project>

+ 46 - 87
frameworks/CSharp/aspnetcore/PlatformBenchmarks/BenchmarkApplication.cs

@@ -6,6 +6,7 @@ using System.Buffers.Text;
 using System.IO.Pipelines;
 using System.Text.Json;
 using System.Threading.Tasks;
+
 using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http;
 
 namespace PlatformBenchmarks
@@ -18,6 +19,7 @@ namespace PlatformBenchmarks
         private readonly static AsciiString _crlf = "\r\n";
         private readonly static AsciiString _eoh = "\r\n\r\n"; // End Of Headers
         private readonly static AsciiString _http11OK = "HTTP/1.1 200 OK\r\n";
+        private readonly static AsciiString _http11NotFound = "HTTP/1.1 404 Not Found\r\n";
         private readonly static AsciiString _headerServer = "Server: K";
         private readonly static AsciiString _headerContentLength = "Content-Length: ";
         private readonly static AsciiString _headerContentLengthZero = "Content-Length: 0";
@@ -59,102 +61,58 @@ namespace PlatformBenchmarks
         }
 
         private RequestType _requestType;
-#if DATABASE
         private int _queries;
-#endif
 
 #if NETCOREAPP5_0 || NET5_0
         public void OnStartLine(HttpVersionAndMethod versionAndMethod, TargetOffsetPathLength targetPath, Span<byte> startLine)
         {
-            var requestType = RequestType.NotRecognized;
-            if (versionAndMethod.Method == HttpMethod.Get)
-            {
-#if !DATABASE
-                var pathLength = targetPath.Offset;
-                if (pathLength == 10 && startLine.SequenceEqual(Paths.Plaintext))
-                {
-                    requestType = RequestType.PlainText;
-                }
-                else if (pathLength == 5 && startLine.SequenceEqual(Paths.Json))
-                {
-                    requestType = RequestType.Json;
-                }
-#else
-                var pathLength = targetPath.Offset;
-                if (Paths.SingleQuery.Length == pathLength && startLine.SequenceEqual(Paths.SingleQuery))
-                {
-                    requestType = RequestType.SingleQuery;
-                }
-                else if (Paths.Fortunes.Length == pathLength && startLine.SequenceEqual(Paths.Fortunes))
-                {
-                    requestType = RequestType.Fortunes;
-                }
-                else if (Paths.Caching.Length <= pathLength && startLine.StartsWith(Paths.Caching))
-                {
-                    _queries = ParseQueries(startLine, Paths.Caching.Length);
-                    requestType = RequestType.Caching;
-                }
-                else if (Paths.Updates.Length <= pathLength && startLine.StartsWith(Paths.Updates))
-                {
-                    _queries = ParseQueries(startLine, Paths.Updates.Length);
-                    requestType = RequestType.Updates;
-                }
-                else if (Paths.MultipleQueries.Length <= pathLength && startLine.StartsWith(Paths.MultipleQueries))
-                {
-                    _queries = ParseQueries(startLine, Paths.MultipleQueries.Length);
-                    requestType = RequestType.MultipleQueries;
-                }
-#endif
-            }
-
-            _requestType = requestType;
+            _requestType = versionAndMethod.Method == HttpMethod.Get ? GetRequestType(startLine.Slice(targetPath.Offset, targetPath.Length), ref _queries) : RequestType.NotRecognized;
         }
 #else
         public void OnStartLine(HttpMethod method, HttpVersion version, Span<byte> target, Span<byte> path, Span<byte> query, Span<byte> customMethod, bool pathEncoded)
         {
-            var requestType = RequestType.NotRecognized;
-            if (method == HttpMethod.Get)
-            {
+            _requestType = method == HttpMethod.Get ? GetRequestType(path, ref _queries) : RequestType.NotRecognized;
+        }
+#endif
+
+        private RequestType GetRequestType(ReadOnlySpan<byte> path, ref int queries)
+        {
 #if !DATABASE
-                if (path.Length == 10 && path.SequenceEqual(Paths.Plaintext))
-                {
-                    requestType = RequestType.PlainText;
-                }
-                else if (path.Length == 5 && path.SequenceEqual(Paths.Json))
-                {
-                    requestType = RequestType.Json;
-                }
+            if (path.Length == 10 && path.SequenceEqual(Paths.Plaintext))
+            {
+                return RequestType.PlainText;
+            }
+            else if (path.Length == 5 && path.SequenceEqual(Paths.Json))
+            {
+                return RequestType.Json;
+            }
 #else
-                var pathLength = path.Length; 
-                if (Paths.Fortunes.Length == pathLength && path.SequenceEqual(Paths.Fortunes))
-                {
-                    requestType = RequestType.Fortunes;
-                }
-                else if (Paths.SingleQuery.Length == pathLength && path.SequenceEqual(Paths.SingleQuery))
-                {
-                    requestType = RequestType.SingleQuery;
-                }
-                else if (Paths.Caching.Length <= pathLength && path.StartsWith(Paths.Caching))
-                {
-                    _queries = ParseQueries(path, Paths.Caching.Length);
-                    requestType = RequestType.Caching;
-                }
-                else if (Paths.MultipleQueries.Length <= pathLength && path.StartsWith(Paths.MultipleQueries))
-                {
-                    _queries = ParseQueries(path, Paths.MultipleQueries.Length);
-                    requestType = RequestType.MultipleQueries;
-                }
-                else if (Paths.Updates.Length <= pathLength && path.StartsWith(Paths.Updates))
-                {
-                    _queries = ParseQueries(path, Paths.Updates.Length);
-                    requestType = RequestType.Updates;
-                }
-#endif
+            if (path.Length == 3 && path[0] == '/' && path[1] == 'd' && path[2] == 'b')
+            {
+                return RequestType.SingleQuery;
+            }
+            else if (path.Length == 9 && path[1] == 'f' && path.SequenceEqual(Paths.Fortunes))
+            {
+                return RequestType.Fortunes;
+            }
+            else if (path.Length >= 15 && path[1] == 'c' && path.StartsWith(Paths.Caching))
+            {
+                queries = ParseQueries(path.Slice(15));
+                return RequestType.Caching;
+            }
+            else if (path.Length >= 9 && path[1] == 'u' && path.StartsWith(Paths.Updates))
+            {
+                queries = ParseQueries(path.Slice(9));
+                return RequestType.Updates;
+            }
+            else if (path.Length >= 9 && path[1] == 'q' && path.StartsWith(Paths.MultipleQueries))
+            {
+                queries = ParseQueries(path.Slice(9));
+                return RequestType.MultipleQueries;
             }
-
-            _requestType = requestType;
-        }
 #endif
+            return RequestType.NotRecognized;
+        }
 
 
 #if !DATABASE
@@ -174,9 +132,10 @@ namespace PlatformBenchmarks
             }
         }
 #else
-        private static int ParseQueries(Span<byte> path, int pathLength)
+
+        private static int ParseQueries(ReadOnlySpan<byte> parameter)
         {
-            if (!Utf8Parser.TryParse(path.Slice(pathLength), out int queries, out _) || queries < 1)
+            if (!Utf8Parser.TryParse(parameter, out int queries, out _) || queries < 1)
             {
                 queries = 1;
             }
@@ -207,7 +166,7 @@ namespace PlatformBenchmarks
         }
 #endif
         private readonly static AsciiString _defaultPreamble =
-            _http11OK +
+            _http11NotFound +
             _headerServer + _crlf +
             _headerContentTypeText + _crlf +
             _headerContentLengthZero;
@@ -232,4 +191,4 @@ namespace PlatformBenchmarks
             MultipleQueries
         }
     }
-}
+}

+ 1 - 1
frameworks/CSharp/aspnetcore/PlatformBenchmarks/PlatformBenchmarks.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
 
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <OutputType>Exe</OutputType>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
   </PropertyGroup>

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-ado-my.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out /p:IsDatabase=true
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-ado-pg-up.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out /p:IsDatabase=true
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-ado-pg.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out /p:IsDatabase=true
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc-ado-my.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc-ado-pg-up.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc-ado-pg.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc-dap-my.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc-dap-pg-up.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc-dap-pg.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc-ef-pg-up.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc-ef-pg.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mvc.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-ado-my.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-ado-pg-up.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-ado-pg.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-dap-my.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-dap-pg-up.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-dap-pg.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-ef-pg-up.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-ef-pg.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw-json.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-mw.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-rhtx-pg-up.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out /p:IsDatabase=true
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-rhtx-pg.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out /p:IsDatabase=true
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore-rhtx.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/CSharp/aspnetcore/aspcore.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 4 - 4
frameworks/CSharp/beetlex/PlatformBenchmarks/PlatformBenchmarks.csproj

@@ -2,15 +2,15 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <ServerGarbageCollection>true</ServerGarbageCollection>
    
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="BeetleX" Version="1.4.0.1" />
-    <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="3.1.5" />
-    <PackageReference Include="Microsoft.Extensions.Hosting" Version="2.2.0" />
+    <PackageReference Include="BeetleX" Version="1.5.4" />
+    <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="5.0.0-rc.1.20451.14" />
+    <PackageReference Include="Microsoft.Extensions.Hosting" Version="5.0.0-rc.1.20451.14" />
     <PackageReference Include="Npgsql" Version="5.0.0-alpha1" />
     <PackageReference Include="SpanJson" Version="3.0.1" />
   </ItemGroup>

+ 2 - 2
frameworks/CSharp/beetlex/beetlex-core-updb.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 WORKDIR /app
 COPY --from=build /app/out ./
 ENTRYPOINT ["dotnet", "PlatformBenchmarks.dll","updb"]

+ 2 - 2
frameworks/CSharp/beetlex/beetlex-core.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 WORKDIR /app
 COPY --from=build /app/out ./
 ENTRYPOINT ["dotnet", "PlatformBenchmarks.dll"]

+ 2 - 2
frameworks/CSharp/beetlex/beetlex-debug.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 WORKDIR /app
 COPY --from=build /app/out ./
 ENTRYPOINT ["dotnet", "PlatformBenchmarks.dll","debug"]

+ 0 - 1
frameworks/CSharp/beetlex/beetlex.dockerfile

@@ -4,7 +4,6 @@ COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
 FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
-ENV COMPlus_ReadyToRun 0
 WORKDIR /app
 COPY --from=build /app/out ./
 ENTRYPOINT ["dotnet", "Benchmarks.dll"]

+ 2 - 2
frameworks/CSharp/carter/Benchmarks/Benchmarks.csproj

@@ -1,11 +1,11 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Carter" Version="5.1.0" />
+    <PackageReference Include="Carter" Version="5.2.0" />
     <PackageReference Include="Utf8Json" Version="1.3.7" />
   </ItemGroup>
 </Project>

+ 2 - 2
frameworks/CSharp/carter/carter.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 4 - 4
frameworks/CSharp/easyrpc/Benchmarks/Benchmarks.csproj

@@ -1,13 +1,13 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="EasyRpc.AspNetCore" Version="5.0.0-Beta1167" />
-    <PackageReference Include="EasyRpc.AspNetCore.Utf8Json" Version="5.0.0-Beta1167" />
-    <PackageReference Include="EasyRpc.AspNetCore.Views" Version="5.0.0-Beta1167" />
+    <PackageReference Include="EasyRpc.AspNetCore" Version="5.0.0-Beta1173" />
+    <PackageReference Include="EasyRpc.AspNetCore.Utf8Json" Version="5.0.0-Beta1173" />
+    <PackageReference Include="EasyRpc.AspNetCore.Views" Version="5.0.0-Beta1173" />
     <PackageReference Include="Npgsql" Version="5.0.0-alpha1" />
   </ItemGroup>
 </Project>

+ 2 - 2
frameworks/CSharp/easyrpc/easyrpc.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 3 - 3
frameworks/CSharp/genhttp/Benchmarks/Benchmarks.csproj

@@ -2,7 +2,7 @@
   
   <PropertyGroup>
     
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
 
     <LangVersion>8.0</LangVersion>
     <Nullable>enable</Nullable>
@@ -19,8 +19,8 @@
   </PropertyGroup>
     
   <ItemGroup>
-    <PackageReference Include="GenHTTP.Core" Version="3.2.0" />
-    <PackageReference Include="GenHTTP.Modules.Webservices" Version="3.2.0" />
+    <PackageReference Include="GenHTTP.Core" Version="3.2.1" />
+    <PackageReference Include="GenHTTP.Modules.Webservices" Version="3.2.1" />
   </ItemGroup>
   
 </Project>

+ 2 - 2
frameworks/CSharp/genhttp/genhttp.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1-alpine AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0-alpine AS build
 WORKDIR /source
 
 # copy csproj and restore as distinct layers
@@ -10,7 +10,7 @@ COPY Benchmarks/ .
 RUN dotnet publish -c release -o /app -r linux-musl-x64 --self-contained true --no-restore /p:PublishTrimmed=true /p:PublishReadyToRun=true
 
 # final stage/image
-FROM mcr.microsoft.com/dotnet/core/runtime-deps:3.1-alpine
+FROM mcr.microsoft.com/dotnet/core/runtime-deps:5.0-alpine
 WORKDIR /app
 COPY --from=build /app .
 

+ 2 - 2
frameworks/CSharp/nancy/benchmark_config.json

@@ -5,7 +5,7 @@
       "plaintext_url":"/plaintext",
       "json_url": "/json",
       "db_url": "/db",
-      "query_url": "/query/",
+      "query_url": "/queries/",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Micro",
@@ -26,7 +26,7 @@
       "plaintext_url":"/plaintext",
       "json_url": "/json",
       "db_url": "/db",
-      "query_url": "/query/",
+      "query_url": "/queries/",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Micro",

+ 3 - 3
frameworks/CSharp/nancy/nancy-netcore.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /source
 COPY src .
-RUN dotnet publish -c Release -f netcoreapp3.1 -o /app
+RUN dotnet publish -c Release -f net5.0 -o /app
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.2 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app .

+ 1 - 1
frameworks/CSharp/nancy/src/DbModule.cs

@@ -4,7 +4,7 @@
     using System.Data;
     using System.Threading.Tasks;
     using Dapper;
-    using MySql.Data.MySqlClient;
+    using MySqlConnector;
     using Nancy;
 
     public class DbModule : NancyModule

+ 7 - 6
frameworks/CSharp/nancy/src/NancyBenchmark.csproj

@@ -1,6 +1,6 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
   <PropertyGroup>
-    <TargetFrameworks>netcoreapp3.1;net471</TargetFrameworks>
+    <TargetFrameworks>net5.0;net471</TargetFrameworks>
     <OutputType>Exe</OutputType>
   </PropertyGroup>
   
@@ -14,19 +14,20 @@
   </ItemGroup>
 
   <ItemGroup>
+    <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
     <PackageReference Include="Nancy" Version="2.0.0" />
-    <PackageReference Include="MySqlConnector" Version="0.61.0" />
-    <PackageReference Include="Dapper" Version="2.0.30" />
+    <PackageReference Include="MySqlConnector" Version="1.0.1" />
+    <PackageReference Include="Dapper" Version="2.0.35" />
   </ItemGroup>
 
-  <ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">
-    <PackageReference Include="Microsoft.AspNetCore.Owin" Version="3.1.2" />
+  <ItemGroup Condition=" '$(TargetFramework)' == 'net5.0' ">
+    <PackageReference Include="Microsoft.AspNetCore.Owin" Version="5.0.0-rc.1.20451.17" />
   </ItemGroup>
   
   <ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
     <PackageReference Include="Microsoft.AspNetCore" Version="2.1.7" />
     <PackageReference Include="Microsoft.AspNetCore.Owin" Version="2.1.1" />
-    <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0"/>
+    <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" />
   </ItemGroup>
 
 </Project>

+ 2 - 2
frameworks/CSharp/nancy/src/QueryModule.cs

@@ -4,7 +4,7 @@ namespace Nancy.Benchmark
     using System.Data;
     using System.Threading.Tasks;
     using Dapper;
-    using MySql.Data.MySqlClient;
+    using MySqlConnector;
     using Nancy;
 
     public class QueryModule : NancyModule
@@ -16,7 +16,7 @@ namespace Nancy.Benchmark
          * Return a list of World objects as JSON, selected randomly from the World
          * table.  Assume the table has 10,000 rows.
          */
-        public QueryModule(IAppConfiguration appConfig) : base("/query")
+        public QueryModule(IAppConfiguration appConfig) : base("/queries")
         {
             ConnectionString = appConfig.ConnectionString;
 

+ 2 - 2
frameworks/CSharp/tetsuweb/Benchmark/Benchmark.csproj

@@ -2,12 +2,12 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.2</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
   </PropertyGroup>
 
   <ItemGroup>
       <PackageReference Include="Tetsu.Web" Version="0.1.5" />
-      <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
+      <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
   </ItemGroup>
 
 </Project>

+ 2 - 2
frameworks/CSharp/tetsuweb/tetsuweb.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmark .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/runtime:2.2
+FROM mcr.microsoft.com/dotnet/core/runtime:5.0
 WORKDIR /app
 COPY --from=build /app/out ./
 

+ 1 - 1
frameworks/CSharp/zysocket-v/PlatformBenchmarks/Properties/PublishProfiles/FolderProfile.pubxml

@@ -7,7 +7,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
     <PublishProtocol>FileSystem</PublishProtocol>
     <Configuration>Release</Configuration>
     <Platform>Any CPU</Platform>
-    <TargetFramework>netcoreapp2.2</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <PublishDir>bin\Release\netcoreapp2.2\publish\</PublishDir>
   </PropertyGroup>
 </Project>

+ 2 - 2
frameworks/FSharp/falco/falco-rhtx.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/FSharp/falco/falco.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 3 - 3
frameworks/FSharp/falco/src/App/App.fsproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
 
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
   </PropertyGroup>
 
   <ItemGroup>
@@ -13,10 +13,10 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Update="FSharp.Core" Version="4.7.*" />
+    <PackageReference Update="FSharp.Core" Version="5.0.0-beta.20417.1" />
     <PackageReference Include="Donald" Version="3.0.*" />
     <PackageReference Include="Falco" Version="2.0.*" />    
-    <PackageReference Include="Npgsql" Version="4.1.3.1" />
+    <PackageReference Include="Npgsql" Version="5.0.0-alpha1" />
   </ItemGroup>
 
 </Project>

+ 2 - 2
frameworks/FSharp/frank/frank-rhtx.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/FSharp/frank/frank.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 5 - 4
frameworks/FSharp/frank/src/App/App.fsproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <DebugType>portable</DebugType>
     <AssemblyName>App</AssemblyName>
     <OutputType>Exe</OutputType>
@@ -12,9 +12,10 @@
     <PackageReference Include="Dapper" Version="2.0.35" />
     <PackageReference Include="Frank" Version="6.1.0" />
     <PackageReference Include="FSharp.Data.JsonSchema" Version="0.1.0" />
-    <PackageReference Include="Giraffe" Version="4.1.0" />
-    <PackageReference Include="Npgsql" Version="4.1.3.1" />
-    <PackageReference Update="FSharp.Core" Version="4.7.2" />
+    <PackageReference Include="Giraffe" Version="5.0.0-alpha-003" />
+    <PackageReference Include="Giraffe.ViewEngine" Version="1.2.0" />
+    <PackageReference Include="Npgsql" Version="5.0.0-alpha1" />
+    <PackageReference Update="FSharp.Core" Version="5.0.0-beta.20417.1" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
frameworks/FSharp/frank/src/App/HtmlViews.fs

@@ -1,6 +1,6 @@
 module HtmlViews
 
-open Giraffe.GiraffeViewEngine
+open Giraffe.ViewEngine
 open Models
 
 let private fortunesHead = 

+ 2 - 2
frameworks/FSharp/giraffe/giraffe-stripped.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/FSharp/giraffe/giraffe-utf8direct.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/FSharp/giraffe/giraffe-utf8json.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/FSharp/giraffe/giraffe.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 4 - 4
frameworks/FSharp/giraffe/src/App/App.fsproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
 
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <DebugType>portable</DebugType>
     <AssemblyName>App</AssemblyName>
     <OutputType>Exe</OutputType>
@@ -10,9 +10,9 @@
 
   <ItemGroup>
     <PackageReference Include="Dapper" Version="2.0.35" />
-    <PackageReference Include="Giraffe" Version="4.1.0" />
-    <PackageReference Include="Npgsql" Version="4.1.3.1" />
-    <PackageReference Update="FSharp.Core" Version="4.7.2" />
+    <PackageReference Include="Giraffe" Version="5.0.0-alpha-003" />
+    <PackageReference Include="Npgsql" Version="5.0.0-alpha1" />
+    <PackageReference Update="FSharp.Core" Version="5.0.0-beta.20417.1" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
frameworks/FSharp/giraffe/src/App/Custom.fs

@@ -81,7 +81,7 @@ let application : HttpHandler =
 
                 let html = MemoryStreamCache.Get()
                 let view = fortunes |> HtmlViews.fortunes 
-                StetefullRendering.renderHtmlToStream html view
+                StatefullRendering.renderHtmlToStream html view
 
                 ctx.Response.ContentType <- "text/html;charset=utf-8"
                 ctx.Response.ContentLength <- contentLength html.Length

+ 1 - 1
frameworks/FSharp/giraffe/src/App/HtmlViews.fs

@@ -1,6 +1,6 @@
 module HtmlViews
 
-open Giraffe.GiraffeViewEngine
+open Giraffe.ViewEngine
 open Models
 
 let private fortunesHead = 

+ 8 - 3
frameworks/FSharp/giraffe/src/App/StatefullRendering.fs

@@ -1,10 +1,10 @@
 namespace App
 open System.Text
-open Giraffe.GiraffeViewEngine
+open Giraffe.ViewEngine
 open System.Net
 open System.IO
 
-module rec StetefullRendering =
+module rec StatefullRendering =
 
     let private UTF8WithoutBOM = new UTF8Encoding(false)
 
@@ -75,4 +75,9 @@ module rec StetefullRendering =
     let renderHtml node =
         let ms = new MemoryStream()
         renderHtmlToStream ms node
-        ms
+        ms
+
+    let renderHtmlToBytes node =
+        let ms = new MemoryStream()
+        renderHtmlToStream ms node
+        ms.ToArray()

+ 2 - 3
frameworks/FSharp/giraffe/src/App/Stock.fs

@@ -5,7 +5,7 @@ open Dapper
 open Npgsql
 open Models
 open FSharp.Control.Tasks
-open System.Text
+open App
 
 let application : HttpHandler = 
     
@@ -25,8 +25,7 @@ let application : HttpHandler =
 
                 let bytes = 
                     view 
-                    |> GiraffeViewEngine.renderHtmlDocument 
-                    |> Encoding.UTF8.GetBytes
+                    |> StatefullRendering.renderHtmlToBytes
 
                 ctx.SetContentType "text/html;charset=utf-8"
                 return! ctx.WriteBytesAsync bytes

+ 3 - 2
frameworks/FSharp/suave/src/App/App.fsproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <ServerGarbageCollection>true</ServerGarbageCollection>
   </PropertyGroup>
 
@@ -11,7 +11,8 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Suave" Version="2.5.3" />
+    <PackageReference Include="Suave" Version="2.6.0-beta" />
+    <PackageReference Update="FSharp.Core" Version="5.0.0-beta.20417.1" />
   </ItemGroup>
 
 </Project>

+ 1 - 1
frameworks/FSharp/suave/suave.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.1
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out

+ 3 - 3
frameworks/FSharp/zebra/src/App/App.fsproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
 
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <DebugType>portable</DebugType>
     <AssemblyName>App</AssemblyName>
     <OutputType>Exe</OutputType>
@@ -10,9 +10,9 @@
 
   <ItemGroup>
     <PackageReference Include="Dapper" Version="2.0.35" />
-    <PackageReference Include="Npgsql" Version="4.1.3.1" />
+    <PackageReference Include="Npgsql" Version="5.0.0-alpha1" />
     <PackageReference Include="Utf8Json" Version="1.3.7" />
-    <PackageReference Update="FSharp.Core" Version="4.7.2" />
+    <PackageReference Update="FSharp.Core" Version="5.0.0-beta.20417.1" />
   </ItemGroup>
 
   <ItemGroup>

+ 2 - 2
frameworks/FSharp/zebra/src/App/Middleware.fs

@@ -24,7 +24,7 @@ type ZebraMiddleware<'T>(
     
     member __.Invoke (ctx : HttpContext) = 
         
-        let tcs = TaskCompletionSource()
+        let tcs = TaskCompletionSource<unit>()
                 
         let mutable state = State<'T>(ctx,Dependencies,tcs)
         appNode.Apply state
@@ -42,7 +42,7 @@ type ZebraSimpleMiddleware<'T>(
     
     member __.Invoke (ctx : HttpContext) = 
         
-        let tcs  = TaskCompletionSource()
+        let tcs  = TaskCompletionSource<unit>()
                 
         let mutable state = State<'T>(ctx,Dependencies,tcs)
         App state

+ 2 - 2
frameworks/FSharp/zebra/zebra-simple.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 2 - 2
frameworks/FSharp/zebra/zebra.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1.300 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY src/App .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.4 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
 WORKDIR /app
 COPY --from=build /app/out ./

+ 1 - 1
frameworks/PHP/peachpie/Server/Server.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
 
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <OutputType>Exe</OutputType>
   </PropertyGroup>
 

+ 2 - 2
frameworks/PHP/peachpie/peachpie.dockerfile

@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY . .
 RUN dotnet publish -c Release -o out Server
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV COMPlus_ReadyToRun 0
 WORKDIR /app
 COPY --from=build /app/out ./

+ 3 - 4
frameworks/VB/aspnetcore/Benchmarks/Benchmarks.vbproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
   </PropertyGroup>
   
   <ItemGroup>
@@ -11,9 +11,8 @@
 
   <ItemGroup>
     <PackageReference Include="Utf8Json" Version="1.3.7" />
-    <PackageReference Include="Npgsql" Version="4.0.2" />
-    <PackageReference Include="MySqlConnector" Version="0.62.0-beta5" />
-    <PackageReference Include="Microsoft.AspNetCore.App" />
+    <PackageReference Include="Npgsql" Version="5.0.0-alpha1" />
+    <PackageReference Include="MySqlConnector" Version="1.0.1" />
   </ItemGroup>
 
 </Project>

+ 5 - 11
frameworks/VB/aspnetcore/Benchmarks/Middleware/JsonMiddleware.vb

@@ -1,17 +1,12 @@
 ' Copyright (c) .NET Foundation. All rights reserved. 
 ' Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. 
 
-Imports System.IO
 Imports System.Runtime.CompilerServices
-Imports System.Text
+Imports System.Text.Json
 Imports Microsoft.AspNetCore.Builder
 Imports Microsoft.AspNetCore.Http
-Imports Newtonsoft.Json
 
 Public Class JsonMiddleware
-
-    Private Shared ReadOnly Json As JsonSerializer = New JsonSerializer()
-    Private Shared ReadOnly Encoding As UTF8Encoding = New UTF8Encoding(False)
     Private Const BufferSize As Integer = 27
     Private ReadOnly NextStage As RequestDelegate
 
@@ -26,13 +21,12 @@ Public Class JsonMiddleware
             httpContext.Response.ContentType = "application/json"
             httpContext.Response.ContentLength = BufferSize
 
-            Using sw = New StreamWriter(httpContext.Response.Body, Encoding, bufferSize:=BufferSize)
-                Json.Serialize(sw, New With {
+            Return JsonSerializer.SerializeAsync(
+                httpContext.Response.Body,
+                New JsonMessage With
+                {
                     .message = "Hello, World!"
                 })
-            End Using
-
-            Return Task.CompletedTask
         End If
 
         Return NextStage(httpContext)

+ 2 - 7
frameworks/VB/aspnetcore/Benchmarks/Middleware/MultipleQueriesRawMiddleware.vb

@@ -2,18 +2,13 @@
 ' Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. 
 
 Imports System.Runtime.CompilerServices
+Imports System.Text.Json
 Imports Microsoft.AspNetCore.Builder
 Imports Microsoft.AspNetCore.Http
 Imports Microsoft.Extensions.DependencyInjection
-Imports Newtonsoft.Json
-Imports Newtonsoft.Json.Serialization
 
 Public Class MultipleQueriesRawMiddleware
 
-    Private Shared ReadOnly JsonSettings As JsonSerializerSettings = New JsonSerializerSettings With {
-        .ContractResolver = New CamelCasePropertyNamesContractResolver()
-    }
-
     Private ReadOnly NextStage As RequestDelegate
 
     Public Sub New(ByVal NextStage As RequestDelegate)
@@ -26,7 +21,7 @@ Public Class MultipleQueriesRawMiddleware
             Dim count = MiddlewareHelpers.GetMultipleQueriesQueryCount(httpContext)
             Dim db = httpContext.RequestServices.GetService(Of RawDb)()
             Dim rows = Await db.LoadMultipleQueriesRows(count)
-            Dim result = JsonConvert.SerializeObject(rows, JsonSettings)
+            Dim result = JsonSerializer.Serialize(rows)
             httpContext.Response.StatusCode = StatusCodes.Status200OK
             httpContext.Response.ContentType = "application/json"
             httpContext.Response.ContentLength = result.Length

+ 2 - 6
frameworks/VB/aspnetcore/Benchmarks/Middleware/MultipleUpdatesRawMiddleware.vb

@@ -2,16 +2,12 @@
 ' Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. 
 
 Imports System.Runtime.CompilerServices
+Imports System.Text.Json
 Imports Microsoft.AspNetCore.Builder
 Imports Microsoft.AspNetCore.Http
 Imports Microsoft.Extensions.DependencyInjection
-Imports Newtonsoft.Json
-Imports Newtonsoft.Json.Serialization
 
 Public Class MultipleUpdatesRawMiddleware
-    Private Shared ReadOnly JsonSettings As JsonSerializerSettings = New JsonSerializerSettings With {
-        .ContractResolver = New CamelCasePropertyNamesContractResolver()
-    }
 
     Private ReadOnly NextStage As RequestDelegate
 
@@ -25,7 +21,7 @@ Public Class MultipleUpdatesRawMiddleware
             Dim count = MiddlewareHelpers.GetMultipleQueriesQueryCount(httpContext)
             Dim db = httpContext.RequestServices.GetService(Of RawDb)()
             Dim rows = Await db.LoadMultipleUpdatesRows(count)
-            Dim result = JsonConvert.SerializeObject(rows, JsonSettings)
+            Dim result = JsonSerializer.Serialize(rows)
             httpContext.Response.StatusCode = StatusCodes.Status200OK
             httpContext.Response.ContentType = "application/json"
             httpContext.Response.ContentLength = result.Length

+ 2 - 8
frameworks/VB/aspnetcore/Benchmarks/Middleware/SingleQueryRawMiddleware.vb

@@ -3,18 +3,12 @@
 
 
 Imports System.Runtime.CompilerServices
+Imports System.Text.Json
 Imports Microsoft.AspNetCore.Builder
 Imports Microsoft.AspNetCore.Http
 Imports Microsoft.Extensions.DependencyInjection
-Imports Newtonsoft.Json
-Imports Newtonsoft.Json.Serialization
 
 Public Class SingleQueryRawMiddleware
-
-    Private Shared ReadOnly JsonSettings As JsonSerializerSettings = New JsonSerializerSettings With {
-        .ContractResolver = New CamelCasePropertyNamesContractResolver()
-    }
-
     Private ReadOnly NextStage As RequestDelegate
 
     Public Sub New(ByVal NextStage As RequestDelegate)
@@ -26,7 +20,7 @@ Public Class SingleQueryRawMiddleware
         If httpContext.Request.Path.StartsWithSegments("/db", StringComparison.Ordinal) Then
             Dim db = httpContext.RequestServices.GetService(Of RawDb)()
             Dim row = Await db.LoadSingleQueryRow()
-            Dim result = JsonConvert.SerializeObject(row, JsonSettings)
+            Dim result = JsonSerializer.Serialize(row)
             httpContext.Response.StatusCode = StatusCodes.Status200OK
             httpContext.Response.ContentType = "application/json"
             httpContext.Response.ContentLength = result.Length

+ 2 - 2
frameworks/VB/aspnetcore/Benchmarks/Startup.vb

@@ -9,7 +9,7 @@ Imports Microsoft.AspNetCore.Hosting
 Imports Microsoft.Extensions.Configuration
 Imports Microsoft.Extensions.DependencyInjection
 
-Imports MySql.Data.MySqlClient
+Imports MySqlConnector
 Imports Npgsql
 
 Public Class Startup
@@ -32,7 +32,7 @@ Public Class Startup
             services.AddSingleton(Of DbProviderFactory)(NpgsqlFactory.Instance)
             services.AddSingleton(Of RawDb)
         ElseIf appSettings.Database = DatabaseServer.MySql Then
-            services.AddSingleton(Of DbProviderFactory)(MySqlClientFactory.Instance)
+            services.AddSingleton(Of DbProviderFactory)(MySqlConnectorFactory.Instance)
             services.AddSingleton(Of RawDb)
         End If
 

+ 2 - 3
frameworks/VB/aspnetcore/aspcore-vb-mw-ado-my.dockerfile

@@ -1,12 +1,11 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 COPY Benchmarks/appsettings.mysql.json ./out/appsettings.json
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
-ENV COMPlus_ReadyToRun 0
 WORKDIR /app
 COPY --from=build /app/out ./
 

+ 2 - 3
frameworks/VB/aspnetcore/aspcore-vb-mw-ado-pg.dockerfile

@@ -1,12 +1,11 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 COPY Benchmarks/appsettings.postgresql.json ./out/appsettings.json
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
-ENV COMPlus_ReadyToRun 0
 WORKDIR /app
 COPY --from=build /app/out ./
 

+ 0 - 12
frameworks/VB/aspnetcore/aspcore-vb-mw-utf8json.dockerfile

@@ -1,12 +0,0 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
-WORKDIR /app
-COPY Benchmarks .
-RUN dotnet publish -c Release -o out
-
-FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 AS runtime
-ENV ASPNETCORE_URLS http://+:8080
-ENV COMPlus_ReadyToRun 0
-WORKDIR /app
-COPY --from=build /app/out ./
-
-ENTRYPOINT ["dotnet", "Benchmarks.dll"]

+ 2 - 3
frameworks/VB/aspnetcore/aspcore-vb-mw.dockerfile

@@ -1,11 +1,10 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:5.0 AS build
 WORKDIR /app
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 
-FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 AS runtime
+FROM mcr.microsoft.com/dotnet/core/aspnet:5.0 AS runtime
 ENV ASPNETCORE_URLS http://+:8080
-ENV COMPlus_ReadyToRun 0
 WORKDIR /app
 COPY --from=build /app/out ./
 

+ 0 - 18
frameworks/VB/aspnetcore/benchmark_config.json

@@ -20,24 +20,6 @@
       "notes": "",
       "versus": "aspcore"
     },
-    "utf8json": {
-      "json_url": "/utf8json",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Micro",
-      "database": "None",
-      "framework": "ASP.NET Core",
-      "language": "VB",
-      "orm": "Raw",
-      "platform": ".NET",
-      "flavor": "CoreCLR",
-      "webserver": "Kestrel",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "ASP.NET Core, Middleware, Utf8Json",
-      "notes": "",
-      "versus": "aspcore"
-    },
     "ado-pg": {
       "db_url": "/db",
       "query_url": "/queries?queries=",