Browse Source

Downgrade aspnetcore-mono to .NET Core 2.1 Packages (#5517)

* Reorder PackageRefs

* Update lang version

* Change pool size

* Adopt update methods from aspcore tests

* Copy over more aspcore code

* Downgrade to 2.1 references

* Update plaintext
Rich Lander 5 years ago
parent
commit
ca81667ebb
20 changed files with 71 additions and 70 deletions
  1. 9 14
      frameworks/CSharp/aspnetcore-mono/Benchmarks/Benchmarks.csproj
  2. 6 4
      frameworks/CSharp/aspnetcore-mono/Benchmarks/Controllers/HomeController.cs
  3. 18 12
      frameworks/CSharp/aspnetcore-mono/Benchmarks/Data/EfDb.cs
  4. 4 4
      frameworks/CSharp/aspnetcore-mono/Benchmarks/Middleware/FortunesEfMiddleware.cs
  5. 4 4
      frameworks/CSharp/aspnetcore-mono/Benchmarks/Middleware/FortunesRawMiddleware.cs
  6. 8 8
      frameworks/CSharp/aspnetcore-mono/Benchmarks/Middleware/JsonMiddleware.cs
  7. 2 4
      frameworks/CSharp/aspnetcore-mono/Benchmarks/Middleware/MiddlewareHelpers.cs
  8. 1 1
      frameworks/CSharp/aspnetcore-mono/Benchmarks/appsettings.postgresql.json
  9. 8 8
      frameworks/CSharp/aspnetcore-mono/PlatformBenchmarks/PlatformBenchmarks.csproj
  10. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-mvc-ef-pg.dockerfile
  11. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-mvc-my.dockerfile
  12. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-mvc-pg.dockerfile
  13. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-mvc.dockerfile
  14. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-mw-ef-pg.dockerfile
  15. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-mw-my.dockerfile
  16. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-mw-pg.dockerfile
  17. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-mw.dockerfile
  18. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-my.dockerfile
  19. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono-pg.dockerfile
  20. 1 1
      frameworks/CSharp/aspnetcore-mono/aspcore-mono.dockerfile

+ 9 - 14
frameworks/CSharp/aspnetcore-mono/Benchmarks/Benchmarks.csproj

@@ -2,7 +2,6 @@
   <PropertyGroup>
   <PropertyGroup>
     <TargetFramework>net471</TargetFramework>
     <TargetFramework>net471</TargetFramework>
     <OutputType>Exe</OutputType>
     <OutputType>Exe</OutputType>
-    <LangVersion>7.3</LangVersion>
     <RuntimeIdentifiers>linux-x64</RuntimeIdentifiers>
     <RuntimeIdentifiers>linux-x64</RuntimeIdentifiers>
   </PropertyGroup>
   </PropertyGroup>
 
 
@@ -14,19 +13,15 @@
   </ItemGroup>
   </ItemGroup>
 
 
   <ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.0" />
-    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
-    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.2.0" />
-    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.2.0" />
-    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Version="2.2.1" />
-    <PackageReference Include="MySqlConnector" Version="0.62.0-beta5" />
-    <PackageReference Include="Npgsql" Version="4.0.4" />
-    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.0" />
     <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0"/>
     <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0"/>
+    <PackageReference Include="Microsoft.AspNetCore" Version="2.1.7" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.3" />
+    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.1" />
+    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.1" />
+    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Version="2.1.3" />
+    <PackageReference Include="MySqlConnector" Version="0.62.0" />
+    <PackageReference Include="Npgsql" Version="4.1.3.1" />
+    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.1.2" />
+    <PackageReference Include="System.Text.Json" Version="4.7.1" />
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 6 - 4
frameworks/CSharp/aspnetcore-mono/Benchmarks/Controllers/HomeController.cs

@@ -36,10 +36,12 @@ namespace Benchmarks.Controllers
 
 
             public Task ExecuteResultAsync(ActionContext context)
             public Task ExecuteResultAsync(ActionContext context)
             {
             {
-                context.HttpContext.Response.StatusCode = StatusCodes.Status200OK;
-                context.HttpContext.Response.ContentType = "text/plain";
-                context.HttpContext.Response.ContentLength = _helloWorldPayload.Length;
-                return context.HttpContext.Response.Body.WriteAsync(_helloWorldPayload, 0, _helloWorldPayload.Length);
+                var response = context.HttpContext.Response;
+                response.StatusCode = StatusCodes.Status200OK;
+                response.ContentType = "text/plain";
+                var payloadLength = _helloWorldPayload.Length;
+                response.ContentLength = payloadLength;
+                return response.Body.WriteAsync(_helloWorldPayload, 0, payloadLength);
             }
             }
         }
         }
     }
     }

+ 18 - 12
frameworks/CSharp/aspnetcore-mono/Benchmarks/Data/EfDb.cs

@@ -57,27 +57,33 @@ namespace Benchmarks.Data
         public async Task<World[]> LoadMultipleUpdatesRows(int count)
         public async Task<World[]> LoadMultipleUpdatesRows(int count)
         {
         {
             var results = new World[count];
             var results = new World[count];
+            var random = new Random();
+            int i = 0;
 
 
-            for (var i = 0; i < count; i++)
+            var ids = Enumerable.Range(1, 10000).OrderBy(x => random.Next()).Take(count);
+
+            foreach (int id in ids)
             {
             {
-                var id = _random.Next(1, 10001);
-                var result = await _firstWorldTrackedQuery(_dbContext, id);
+                // TODO: compiled queries are not supported in EF 3.0-preview7
+                // var result = await _firstWorldTrackedQuery(_dbContext, id);
 
 
-                _dbContext.Entry(result).Property("RandomNumber").CurrentValue = _random.Next(1, 10001);
+                var result = await _dbContext.World.AsTracking().FirstAsync(w => w.Id == id);
 
 
-                results[i] = result;
+                int oldId = (int)_dbContext.Entry(result).Property("RandomNumber").CurrentValue;
+                int newId;
 
 
-                if (!_useBatchUpdate)
+                do
                 {
                 {
-                    await _dbContext.SaveChangesAsync();
-                }
-            }
+                    newId = _random.Next(1, 10001);
+                } while (oldId == newId);
 
 
-            if (_useBatchUpdate)
-            {
-                await _dbContext.SaveChangesAsync();
+                _dbContext.Entry(result).Property("RandomNumber").CurrentValue = newId;
+
+                results[i++] = result;
             }
             }
 
 
+            await _dbContext.SaveChangesAsync();
+
             return results;
             return results;
         }
         }
 
 

+ 4 - 4
frameworks/CSharp/aspnetcore-mono/Benchmarks/Middleware/FortunesEfMiddleware.cs

@@ -33,11 +33,11 @@ namespace Benchmarks.Middleware
                 var rows = await db.LoadFortunesRows();
                 var rows = await db.LoadFortunesRows();
 
 
                 await MiddlewareHelpers.RenderFortunesHtml(rows, httpContext, _htmlEncoder);
                 await MiddlewareHelpers.RenderFortunesHtml(rows, httpContext, _htmlEncoder);
+
+                return;
             }
             }
-            else
-            {
-                await _next(httpContext);
-            }
+
+            await _next(httpContext);
         }
         }
     }
     }
 
 

+ 4 - 4
frameworks/CSharp/aspnetcore-mono/Benchmarks/Middleware/FortunesRawMiddleware.cs

@@ -33,11 +33,11 @@ namespace Benchmarks.Middleware
                 var rows = await db.LoadFortunesRows();
                 var rows = await db.LoadFortunesRows();
 
 
                 await MiddlewareHelpers.RenderFortunesHtml(rows, httpContext, _htmlEncoder);
                 await MiddlewareHelpers.RenderFortunesHtml(rows, httpContext, _htmlEncoder);
+
+                return;
             }
             }
-            else
-            {
-                await _next(httpContext);
-            }
+
+            await _next(httpContext);
         }
         }
     }
     }
 
 

+ 8 - 8
frameworks/CSharp/aspnetcore-mono/Benchmarks/Middleware/JsonMiddleware.cs

@@ -4,18 +4,18 @@
 using System;
 using System;
 using System.IO;
 using System.IO;
 using System.Text;
 using System.Text;
+using System.Text.Json;
+using System.Text.Json.Serialization;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using Benchmarks.Configuration;
 using Benchmarks.Configuration;
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Http;
-using Newtonsoft.Json;
 
 
 namespace Benchmarks.Middleware
 namespace Benchmarks.Middleware
 {
 {
     public class JsonMiddleware
     public class JsonMiddleware
     {
     {
         private static readonly PathString _path = new PathString(Scenarios.GetPath(s => s.Json));
         private static readonly PathString _path = new PathString(Scenarios.GetPath(s => s.Json));
-        private static readonly JsonSerializer _json = new JsonSerializer();
         private static readonly UTF8Encoding _encoding = new UTF8Encoding(false);
         private static readonly UTF8Encoding _encoding = new UTF8Encoding(false);
         private const int _bufferSize = 27;
         private const int _bufferSize = 27;
 
 
@@ -34,12 +34,7 @@ namespace Benchmarks.Middleware
                 httpContext.Response.ContentType = "application/json";
                 httpContext.Response.ContentType = "application/json";
                 httpContext.Response.ContentLength = _bufferSize;
                 httpContext.Response.ContentLength = _bufferSize;
 
 
-                using (var sw = new StreamWriter(httpContext.Response.Body, _encoding, bufferSize: _bufferSize))
-                {
-                    _json.Serialize(sw, new { message = "Hello, World!" });
-                }
-
-                return Task.CompletedTask;
+                return JsonSerializer.SerializeAsync<JsonMessage>(httpContext.Response.Body, new JsonMessage { message = "Hello, World!" });
             }
             }
 
 
             return _next(httpContext);
             return _next(httpContext);
@@ -53,4 +48,9 @@ namespace Benchmarks.Middleware
             return builder.UseMiddleware<JsonMiddleware>();
             return builder.UseMiddleware<JsonMiddleware>();
         }
         }
     }
     }
+
+    public struct JsonMessage
+    {
+        public string message { get; set; }
+    }
 }
 }

+ 2 - 4
frameworks/CSharp/aspnetcore-mono/Benchmarks/Middleware/MiddlewareHelpers.cs

@@ -30,17 +30,15 @@ namespace Benchmarks.Middleware
                     : 1;
                     : 1;
         }
         }
 
 
-        public static Task RenderFortunesHtml(List<Fortune> model, HttpContext httpContext, HtmlEncoder htmlEncoder)
+        public static Task RenderFortunesHtml(IEnumerable<Fortune> model, HttpContext httpContext, HtmlEncoder htmlEncoder)
         {
         {
             httpContext.Response.StatusCode = StatusCodes.Status200OK;
             httpContext.Response.StatusCode = StatusCodes.Status200OK;
             httpContext.Response.ContentType = "text/html; charset=UTF-8";
             httpContext.Response.ContentType = "text/html; charset=UTF-8";
 
 
             var sb = StringBuilderCache.Acquire();
             var sb = StringBuilderCache.Acquire();
             sb.Append("<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>");
             sb.Append("<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>");
-            var count = model.Count;
-            for (var i = 0; i < count; i++)
+            foreach (var item in model)
             {
             {
-                var item = model[i];
                 sb.Append("<tr><td>");
                 sb.Append("<tr><td>");
                 sb.Append(item.Id.ToString(CultureInfo.InvariantCulture));
                 sb.Append(item.Id.ToString(CultureInfo.InvariantCulture));
                 sb.Append("</td><td>");
                 sb.Append("</td><td>");

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/Benchmarks/appsettings.postgresql.json

@@ -1,4 +1,4 @@
 {
 {
-  "ConnectionString": "Server=tfb-database;Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=1024;NoResetOnClose=true;Enlist=false;Max Auto Prepare=3",
+  "ConnectionString": "Server=tfb-database;Database=hello_world;User Id=benchmarkdbuser;Password=benchmarkdbpass;Maximum Pool Size=256;NoResetOnClose=true;Enlist=false;Max Auto Prepare=3",
   "Database": "postgresql"
   "Database": "postgresql"
 }
 }

+ 8 - 8
frameworks/CSharp/aspnetcore-mono/PlatformBenchmarks/PlatformBenchmarks.csproj

@@ -9,15 +9,15 @@
   </PropertyGroup>
   </PropertyGroup>
 
 
   <ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.2.0" />
-    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="2.2.0" />
-    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Version="2.2.1" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
-    <PackageReference Include="Utf8Json" Version="1.3.7" />
-    <PackageReference Include="Npgsql" Version="4.0.4" />
-    <PackageReference Include="MySqlConnector" Version="0.62.0-beta5" />
     <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0"/>
     <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0"/>
+    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.1.3" />
+    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="2.1.3" />
+    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Version="2.1.3" />
+    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.1" />
+    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.1" />
+    <PackageReference Include="Utf8Json" Version="1.3.7" />
+    <PackageReference Include="Npgsql" Version="4.1.3.1" />
+    <PackageReference Include="MySqlConnector" Version="0.62.0" />
   </ItemGroup>
   </ItemGroup>
   
   
 </Project>
 </Project>

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

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY Benchmarks .
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/aspcore-mono-mvc-my.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY Benchmarks .
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/aspcore-mono-mvc-pg.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY Benchmarks .
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/aspcore-mono-mvc.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY Benchmarks .
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

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

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY Benchmarks .
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/aspcore-mono-mw-my.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY Benchmarks .
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/aspcore-mono-mw-pg.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY Benchmarks .
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/aspcore-mono-mw.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY Benchmarks .
 COPY Benchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/aspcore-mono-my.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY PlatformBenchmarks .
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

+ 1 - 1
frameworks/CSharp/aspnetcore-mono/aspcore-mono-pg.dockerfile

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY PlatformBenchmarks .
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out

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

@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
 WORKDIR /app
 WORKDIR /app
 COPY PlatformBenchmarks .
 COPY PlatformBenchmarks .
 RUN dotnet publish -c Release -o out
 RUN dotnet publish -c Release -o out