3
2

C# ASP.NET Core Webサービスで Hello World する

Last updated at Posted at 2023-03-24

C# ASP.NET Core Webサービスで Hello World する

こんにちは、@studio_meowtoon です。今回は、WSL の Ubuntu 24.04 で C# ASP.NET Core Web アプリケーションを作成して Hello World を出力する方法を紹介します。
aspnet-core_on_ubuntu.png

目的

Windows 11 の Linux でクラウド開発します。

こちらから記事の一覧がご覧いただけます。

実現すること

ローカル環境の Ubuntu で、C# ASP.NET Core Web サービスの DLL ファイル形式のアプリを起動します。

DLL ファイル形式のアプリを起動

要素 概要
terminal ターミナル
Ubuntu OS
dotnet .NET 実行環境
kestrel Web サーバー
WebApp.dll .NET アプリケーション

C# には本来厳格なコーディング規則がありますが、この記事では可読性のために、一部規則に沿わない表記方法を使用しています。ご注意ください。

技術トピック

ASP.NET Core とは?

こちらを展開してご覧いただけます。

ASP.NET Core

ASP.NET Core は、Microsoft が開発したオープンソースの Web アプリケーションフレームワークです。

特徴
クロスプラットフォームで動作します。
ASP.NET Coreは、Web アプリケーション、API、マイクロサービス、および IoT アプリケーションの開発に使用できます。
ASP.NET Core には、軽量なリクエスト処理パイプライン、依存関係注入、テスト可能なアーキテクチャ、およびクロスプラットフォームのサポートが組み込まれています。
ASP.NET Core は、C#、F#、および Visual Basic をサポートし、Visual Studio、VS Code、およびその他のエディターで開発できます。

開発環境

  • Windows 11 Home 23H2 を使用しています。

WSL の Ubuntu を操作していきますので macOS の方も参考にして頂けます。

WSL (Microsoft Store アプリ版) ※ こちらの関連記事からインストール方法をご確認いただけます

> wsl --version
WSL バージョン: 2.2.4.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.61

Ubuntu ※ こちらの関連記事からインストール方法をご確認いただけます

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04 LTS
Release:        24.04
Codename:       noble

.NET SDK ※ こちらの関連記事からインストール方法をご確認いただけます

$ dotnet --list-sdks
8.0.107 [/usr/lib/dotnet/sdk]
$ dotnet --version
8.0.107

この記事では基本的に Ubuntu のターミナルで操作を行います。Vim を使用してコピペする方法を初めて学ぶ人のために、以下の記事で手順を紹介しています。ぜひ挑戦してみてください。

作成する Web アプリケーションの仕様

No エンドポイント HTTPメソッド MIME タイプ
1 /api/data GET application/json

/api/data というエンドポイントに対して HTTP GET リクエストを送信すると、JSON データがレスポンスされるシンプルな Web サービスを実装します。
{"message":"Hello World!"}

Hello World を表示する手順

プロジェクトルートフォルダに移動

プロジェクトルートフォルダに移動します。
※ ~/tmp/WebApp をプロジェクトフォルダとします。

$ cd ~/tmp

プロジェクトの作成

プロジェクトを作成します。

$ dotnet new web -n WebApp

プロジェクトフォルダに移動します。

$ cd ~/tmp/WebApp

Program クラスの修正

Program クラスを修正します。

$ vim Program.cs

ファイルの内容

Program.cs
using System.Text.Json;

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

WebApplication app = builder.Build();
configure(app);

static void configure(IApplicationBuilder app) {
    app.UseRouting();
    app.UseEndpoints(endpoints => endpoints.MapGet("/api/data", handleGetData));
}

static async Task handleGetData(HttpContext context) {
    object data = new { message = "Hello World!" };
    String json = JsonSerializer.Serialize(data);
    context.Response.ContentType = "application/json";
    await context.Response.WriteAsync(json);
}

app.Run();
このように記述することも可能です。

ファイルの内容

Program.cs
using System.Text.Json;

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

WebApplication app = builder.Build();
app.UseRouting();

app.UseEndpoints(endpoints => {
    endpoints.MapGet("/api/data", async context => {
        object data = new { message = "Hello World!" };
        String json = JsonSerializer.Serialize(data);
        context.Response.ContentType = "application/json";
        await context.Response.WriteAsync(json);
    });
    endpoints.MapControllers();
});

app.Run();

アプリのビルドと起動

アプリを起動します。
※ アプリを停止するときは ctrl + C を押します。

$ dotnet run

ここまでの手順で、Ubuntu でアプリの DLL ファイルを起動することができました。

アプリの動作確認

アプリを起動したターミナルにアプリがリッスンする URL が表示されています。※ ポート番号変動するので読み替えてください。

一部抜粋
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5079

別ターミナルから curl コマンドで確認します。

$  curl -v http://localhost:5079/api/data -w "\n"

出力

* Host localhost:5079 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
*   Trying [::1]:5079...
* Connected to localhost (::1) port 5079
> GET /api/data HTTP/1.1
> Host: localhost:5079
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Wed, 17 Jul 2024 13:15:16 GMT
< Server: Kestrel
< Transfer-Encoding: chunked
<
* Connection #0 to host localhost left intact
{"message":"Hello World!"}

ここまでの手順で、ターミナルに {"message":"Hello World!"} と表示され、JSON データを取得することが出来ました。

まとめ

Ubuntu に構築したシンプルな .NET の開発環境で、C# ASP.NET Core Web サービスを実行することができました。

実際の業務での ASP.NET Core の使用ケースでは、ここで示したようなシンプルな構成とは異なる場合があります。しかしながら、最小構成の例を学ぶことで、ASP.NET Core がどのような構成が必要なのかを理解することができます。

どうでしたか? WSL Ubuntu で、C# ASP.NET Core Web アプリケーションを手軽に起動することができます。ぜひお試しください。今後も .NET の開発環境などを紹介していきますので、ぜひお楽しみにしてください。

推奨コンテンツ

関連記事

Java Spring Boot

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2