この記事では、
GeneXus .NET ジェネレーターによって生成されるサービスおよび Web ページの基盤となるアーキテクチャ、および関連する設計の決定理由について説明します。
.NET には基本的に、「
ASP.NET Core でのコントローラーアクションへのルーティング」で説明されているように、ASP.NET Core で API および Web ページの要求を管理してルーティングする次の 2つのモデルがあります:
さらに、ルーティングは、特定のルートにマッピングされるコントローラー、または受け取る要求の特定の URL と一致し、それらをアクションにマッピングするパイプラインの
ミドルウェアで管理できます。
.NET ジェネレーターによって生成されるアプリケーションでは、属性ルーティングは REST サービスおよび Web ページに使用され、サービスの種類ごとにミドルウェアが用意されています。これらのミドルウェアは、「MapRoute」および「MapWhen」というメソッドを使用して、アプリケーションの起動時に構築されます (詳細については、
アプリケーション起動のソースコードの「Configure」メソッドを参照してください)。これは、ASP.NET Core の
規則ベースのミドルウェアのアクティベーションモデルとして知られています。
ミドルウェアは、要求と応答を処理するために、アプリケーションのパイプラインで組み立てられます。それぞれが次のコンポーネントに要求を渡すかどうかを選択するように、それらは順にチェーンされます。
エンドポイントルーティングを使用する既定のルーティングシステムではなく、このメカニズムを選択する理由は次のとおりです:
- ミドルウェアにより、アプリケーション内のルーティングの制御性および高いカスタマイズ性が向上します。
- ルーティングロジックがミドルウェアにあるため、生成されるコードが少なくなります (生成されるコードにメタデータの属性は不要です)。
- アセンブリーのサイズがより小さいです。