はじめに
はじめまして。
SPA, JavaEE, Tomcat, Wildfly, PostgreSQL……という世界で生きてきたのですが、MicrosoftによるChatGPTアプリのサンプルを動かさねばならないことになりました。
タイトルにある、Azure-Samples/cosmosdb-chatgptです。
なにしろMicrosoftの言語やらプラットフォームやらは、ここ20年くらい触っていないし、業務で触ったことは(ほぼ)皆無です。
そこそこ色々見てきているので、まったくできないことはないだろう、と思ってはいるのですが……
ということで、Java屋がASP.NETの(わりかし新しめな)コードを読むとこうなる、という記録を残しておくことにしました。
注意
以下、「~です。」のように言い切っている箇所がありますが、これらはあくまでも私の理解です。
間違い等ある可能性があります。
(華麗にスルーor気が向いたらコメントなどいただけると嬉しいです)
アーキテクチャの概要
# | サンプルの方式 | Javaのスタックの似てるやつ | ここは判らない |
---|---|---|---|
言語 | C# | Java | |
フレームワーク | Blazor Server | JSF | プレゼンテーション層だけではない? |
DI | Microsoft.Extensions.DependencyInjection | CDI | |
実行環境 | ASP.NET App Service | AWS Elastic Beanstalk | EC2しか使ったことがないので、知識で判断 |
DB | ASP.NET Cosmos DB | AWS DocumentDB(MongoDB) | RDSしか使ったことがないので、知識で判断 |
Blazor Serverについて
UIを構築するためのフレームワークです。
同じBlazorでも、Blazor WebAssemblyを使うと、ブラウザのWebAssemblyランタイムで実行されるコードになります。
WebAssemblyとは、(ここは割と不勉強なのですが)ブラウザに内蔵されているバイトコード実行環境で、JavaScriptインタプリタと併置されるイメージです。
まず読んだコード
Pages/*.razor
JSFでいうところの*.xhtmlです。
中身を見てもJSFっぽいですが、ソースの下の方にBacking Beanに該当するハンドラが書かれています。
(これは個人的にわかりやすくて好きです)
Services/*.cs
画面から使われるチャットサービス、チャットサービスから使われるDBアクセス、OpenAIアクセスのサービスがあります。
DDDでいうところのアプリケーションサービスでしょうか。
Models/*.cs
ドメインモデル(エンティティ)です。
Options/*.cs
そろそろ判らなくなってきました。DI設定ファイル?の型?
感想
さらっと読んで、大体の構造を掴むのであれば、Javaと類推できる部分は多いかも。
ですが、こいつをどうデプロイして……というMicrosoftのエコシステムの話になると、簡単ではない気配。
続く……と思う!