Skip to content

Commit 82bf6be

Browse files
authored
Merge branch 'TechEmpower:master' into master
2 parents 063c9ce + 1744452 commit 82bf6be

File tree

118 files changed

+2219
-2431
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+2219
-2431
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AkazawaYun.PRO(https://akazawayun.cn/#akzLearning#%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# 此阶段用于生成项目
2+
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS publish
3+
WORKDIR /app
4+
COPY src .
5+
RUN dotnet publish -c Release -o /app/publish
6+
7+
# 此阶段用于运行
8+
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS runtime
9+
WORKDIR /app
10+
COPY --from=publish /app/publish .
11+
12+
EXPOSE 2022
13+
ENTRYPOINT ["dotnet", "AkazawaYun.FrameworkBenchmarks.dll"]
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"framework": "akazawayun.pro",
3+
"tests": [
4+
{
5+
"default": {
6+
"display_name": "akazawayun.pro",
7+
"framework": "akazawayun.pro",
8+
"webserver": "akazawayun.pro",
9+
"plaintext_url": "/post/plaintext",
10+
"json_url": "/post/json",
11+
"port": 2022,
12+
"classification": "Micro",
13+
"approach": "Realistic",
14+
"platform": ".NET",
15+
"language": "C#",
16+
"flavor": "CoreCLR",
17+
"os": "Linux",
18+
"database_os": "Linux",
19+
"database": "MySQL",
20+
"orm": "Micro",
21+
"notes": ""
22+
}
23+
}
24+
]
25+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net9.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<PropertyGroup>
11+
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
12+
<ServerGarbageCollection>true</ServerGarbageCollection>
13+
</PropertyGroup>
14+
15+
<ItemGroup>
16+
<PackageReference Include="AkazawaYun.PRO" Version="1.13.25.727" />
17+
</ItemGroup>
18+
19+
</Project>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using AkazawaYun.PRO7;
2+
using AkazawaYun.PRO7.AkazawaYunWebInterceptor;
3+
using System.Text.Json.Serialization;
4+
5+
namespace AkazawaYun.FrameworkBenchmarks;
6+
7+
public class Program : IPostFunction
8+
{
9+
static async Task Main()
10+
{
11+
akzJson.Config(null, Json.Default);
12+
var server = await akzWebBuilder.Shared.Load().SetDefault().Build()
13+
.Config<IWebReceptor, akzWebInterceptor>(itc =>
14+
{
15+
itc.AddInterceptor(new akzWebInterceptorNotOnlyPost());
16+
}).Launch();
17+
akzLog.Default = akzLog.Output.None;
18+
await Task.Delay(-1);
19+
}
20+
21+
22+
public static ValueTask<HttpRes> plaintext(HttpReq _)
23+
{
24+
return HttpRes.HttpOK("Hello, World!", ".txt");
25+
}
26+
public static ValueTask<HttpRes> json(HttpReq _)
27+
{
28+
return HttpRes.HttpJson(new JsonResponse
29+
{
30+
message = "Hello, World!"
31+
});
32+
}
33+
}
34+
35+
public class JsonResponse
36+
{
37+
public string? message { get; set; }
38+
}
39+
40+
[JsonSerializable(typeof(JsonResponse))]
41+
public partial class Json : JsonSerializerContext { }

frameworks/CSharp/appmpower/appmpower-odbc-my.dockerfile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM mcr.microsoft.com/dotnet/sdk:9.0.100 AS build
1+
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
22
RUN apt-get update
33
RUN apt-get -yqq install clang zlib1g-dev
44
RUN apt-get update
@@ -8,7 +8,7 @@ COPY src .
88
RUN dotnet publish -c Release -o out /p:Database=mysql
99

1010
# Construct the actual image that will run
11-
FROM mcr.microsoft.com/dotnet/aspnet:9.0.0 AS runtime
11+
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
1212

1313
RUN apt-get update
1414
# The following installs standard versions unixodbc and pgsqlodbc
@@ -18,6 +18,7 @@ RUN apt-get update
1818

1919
WORKDIR /odbc
2020

21+
#TODOGITHUB
2122
RUN curl -L -o mariadb-connector-odbc-3.1.20-debian-bookworm-amd64.tar.gz https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.1.20/mariadb-connector-odbc-3.1.20-debian-bookworm-amd64.tar.gz
2223
RUN tar -xvzf mariadb-connector-odbc-3.1.20-debian-bookworm-amd64.tar.gz
2324
RUN cp mariadb-connector-odbc-3.1.20-debian-bookworm-amd64/lib/mariadb/libm* /usr/lib/
@@ -45,8 +46,10 @@ WORKDIR /app
4546
COPY --from=build /app/out ./
4647

4748
RUN cp /usr/lib/libm* /app
48-
#RUN cp /usr/lib/aarch64-linux-gnu/libodbc* /app
49+
#TODOGITHUB
4950
RUN cp /usr/lib/x86_64-linux-gnu/libodbc* /app
51+
#TODOLOCAL
52+
#RUN cp /usr/lib/aarch64-linux-gnu/libodbc* /app
5053

5154
EXPOSE 8080
5255

frameworks/CSharp/appmpower/appmpower-odbc-pg.dockerfile

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
FROM mcr.microsoft.com/dotnet/sdk:9.0.100 AS build
1+
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
22
RUN apt-get update
3-
RUN apt-get -yqq install clang zlib1g-dev libkrb5-dev libtinfo5
3+
RUN apt-get -yqq install clang zlib1g-dev
44

55
WORKDIR /app
66
COPY src .
77
RUN dotnet publish -c Release -o out /p:Database=postgresql
88

99
# Construct the actual image that will run
10-
FROM mcr.microsoft.com/dotnet/aspnet:9.0.0 AS runtime
10+
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
1111

1212
RUN apt-get update
1313
RUN apt-get install -y unixodbc-dev unixodbc odbc-postgresql
@@ -27,9 +27,10 @@ ENV ASPNETCORE_URLS http://+:8080
2727
WORKDIR /app
2828
COPY --from=build /app/out ./
2929

30-
#RUN cp /usr/lib/aarch64-linux-gnu/libodbc* /app
30+
#TODOGITHUB
3131
RUN cp /usr/lib/x86_64-linux-gnu/libodbc* /app
32-
32+
#TODOLOCAL
33+
#RUN cp /usr/lib/aarch64-linux-gnu/libodbc* /app
3334

3435
EXPOSE 8080
3536

frameworks/CSharp/appmpower/appmpower.dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
FROM mcr.microsoft.com/dotnet/sdk:9.0.100 AS build
1+
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
22
RUN apt-get update
3-
RUN apt-get -yqq install clang zlib1g-dev libkrb5-dev libtinfo5
3+
RUN apt-get -yqq install clang zlib1g-dev
44

55
WORKDIR /app
66
COPY src .
77
#RUN dotnet publish appMpower/appMpower.csproj -c Release -o out
88
RUN dotnet publish -c Release -o out
99

1010
# Construct the actual image that will run
11-
FROM mcr.microsoft.com/dotnet/aspnet:9.0.0 AS runtime
11+
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
1212
# Full PGO
1313
ENV DOTNET_TieredPGO 1
1414
ENV DOTNET_TC_QuickJitForLoops 1

frameworks/CSharp/appmpower/src/appMpower.Orm/Data/DbConnection.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ private void GetConnection()
5454
if (_keyed)
5555
{
5656
(_number, _odbcConnection, _keyedOdbcCommands) =
57-
DbConnectionsKeyed.GetConnectionBase(_connectionString).GetAwaiter().GetResult();
57+
DbConnectionsKeyed.GetConnectionBase(_connectionString);
5858
}
5959
else
6060
{
61-
(_number, _odbcConnection, _odbcCommands) =
62-
DbConnections.GetConnectionBase(_connectionString).GetAwaiter().GetResult();
61+
(_number, _odbcConnection, _odbcCommands) =
62+
DbConnections.GetConnectionBase(_connectionString);
6363
}
6464
}
6565

frameworks/CSharp/appmpower/src/appMpower.Orm/Data/DbConnections.cs

Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,57 +5,26 @@ namespace appMpower.Orm.Data
55
{
66
internal static class DbConnections
77
{
8-
private static bool _maxConnectionsCreated = false;
98
private static short _createdConnections = 0;
10-
private static short _maxConnections = 500;
119

1210
private static ConcurrentStack<(int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands)> _connectionsStack = new();
13-
private static ConcurrentQueue<TaskCompletionSource<(int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands)>> _waitingQueue = new();
1411

15-
internal static async Task<(int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands)> GetConnectionBase(string connectionString)
12+
internal static (int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands) GetConnectionBase(string connectionString)
1613
{
1714
(int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands) dbConnectionBase;
1815

1916
if (!_connectionsStack.TryPop(out dbConnectionBase))
2017
{
21-
if (_maxConnectionsCreated)
22-
{
23-
dbConnectionBase = await GetDbConnectionBaseAsync();
24-
}
25-
else
26-
{
27-
_createdConnections++;
28-
dbConnectionBase = (Number: _maxConnections, OdbcConnection: new OdbcConnection(connectionString), OdbcCommands: new ConcurrentStack<OdbcCommand>());
29-
30-
if (_createdConnections == _maxConnections) _maxConnectionsCreated = true;
31-
32-
//Console.WriteLine("opened connection number: " + dbConnectionBase._number);
33-
}
18+
_createdConnections++;
19+
dbConnectionBase = (Number: _createdConnections, OdbcConnection: new OdbcConnection(connectionString), OdbcCommands: new ConcurrentStack<OdbcCommand>());
3420
}
3521

3622
return dbConnectionBase;
3723
}
3824

3925
internal static void Release((int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands) dbConnectionBase)
4026
{
41-
TaskCompletionSource<(int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands)> taskCompletionSource;
42-
43-
if (_waitingQueue.TryDequeue(out taskCompletionSource))
44-
{
45-
taskCompletionSource.SetResult(dbConnectionBase);
46-
}
47-
else
48-
{
49-
_connectionsStack.Push(dbConnectionBase);
50-
}
51-
}
52-
53-
private static Task<(int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands)> GetDbConnectionBaseAsync()
54-
{
55-
var taskCompletionSource = new TaskCompletionSource<(int Number, OdbcConnection OdbcConnection, ConcurrentStack<OdbcCommand> OdbcCommands)>(TaskCreationOptions.RunContinuationsAsynchronously);
56-
57-
_waitingQueue.Enqueue(taskCompletionSource);
58-
return taskCompletionSource.Task;
27+
_connectionsStack.Push(dbConnectionBase);
5928
}
6029
}
6130
}

0 commit comments

Comments
 (0)