ASP.NET, ASP.NET Core での WebAPI / Webサービス の実装 - ASP.NET
ASP.NET での WebAPI / Webサービス の実装について紹介します。
概要
IISのWebサーバーで ASP.NET を利用してWebAPIやWebサービスの実装の種類や方式についての紹介をします。
基本的にはWebでのレスポンスが返ればWebAPIになるため、極端な例では、テキストファイルやHTMLファイルでもWebAPIは作成できますが、動的でロジックを実装できる仕組みとしては以下の選択があります。
ASP.NET Core
MapGetによる実装
MapGetメソッドを利用して、APIのエンドポイントを実装する方法です。
実装手順の詳細は
こちらの記事を参照してください。
コントローラーを利用した実装
ASP.NET Core MVCのコントローラーを利用した実装です。
実装手順の詳細は
こちらの記事を参照してください。
ASP.NET
ASP.NET ページハンドラ (*.aspx)
ASP.NETのWebフォームページです。ページのUIコントロールを何も配置せず、OnLoadイベントにパラメーターを取得し戻り値を返す実装をすればWebAPIとして利用できます。SOAPなどのインターフェイスは自動で生成されないため、通信部分の処理は自前で実装する必要があります。
ASP.NET ハンドラ
ASP.NETハンドラを利用します。ASP.NETハンドラを利用して、直接XMLやJSONなどの構造化データを返却することができます。ASP.NETハンドラクラスの ProcessRequest メソッドにて、HttpRequest, HttpResponse オブジェクトを用いてパラメータの取得やレスポンスデータの作成などができます。ASP.NET ページハンドラと同様にSOAPなどのインターフェイスは自動で生成されないため、通信部分の処理は自前で実装する必要があります。
ASP.NETハンドラーの実装手順は
こちらの記事を参照してください。
Web サービス ハンドラ (*.asmx)
asmxファイルを利用してSOAPのWebサービスを実装できます。最新のIISでは、WCFを利用して同様の機能が利用できるため、WCFが利用できない古いサーバーでの利用や過去のコードを利用する場合、互換性が必要な場合に利用します。新規開発の場合は、WCF Webサービスで同様の機能が実現できるため、WCFを利用するのがお勧めです。
しかし、2022年時のASP.NETのプラットフォームの状況では、WCFは.NET 5/6 に対応していないため、REST Web APIや.NET 6でREST Webサービスを構築する方針がよさそうです。
asmxファイルを利用したWebサービスハンドラの実装について
こちらの記事を参照してください。
WCF Webサービス (*.svc)
WCF(Windows Communication Foundation) を利用してWebサービスを実装できます。新しい機能ですので、Webサービスを新規に実装する場合はこちらを利用するのが良いかと思われます。IISのデフォルトのインストールオプションではWCFの機能はインストールされないため、IISに追加でWCFの機能をインストールする必要があります。
WCFを利用したWebサービスの実装手順は
こちらの記事を参照してください。また、WCFを利用した場合JSON形式でのデータ送受信をするRESTインターフェイスを実装することもできます。WCFサービスでRESTインターフェイスの実装をする手順は
こちらの記事を参照してください。
ジェネリック Web ハンドラ (*.ashx)
ジェネリック Webハンドラを利用してWebAPIを実装できます。汎用のHTTPハンドラのため、WebフォームやWebページを返さない実装にも利用できます。
ASP.NET ページハンドラやASP.NETハンドラと同様にインターフェイスは自動で生成されないため、通信部分の処理は自前で実装する必要があります。ジェネリックハンドラーの利用方法や実装コードの詳細は
こちらの記事を参照してください。
ASP.NET Web API
ASP.NET MVCの機能を利用したWeb APIのためのフレームワークを利用した Web APIの実装方式です。現在の最新版は ASP.NET Web API 2 と呼ばれています。
ASP.NET MVCに似たルールでの実装となります。またAPIの戻り値はJSON形式がデフォルトになります。ASP.NET Web APIを利用したWeb APIの実装手順は
こちらの記事を参照してください。
比較表
方式 | 拡張子 | インターフェイス | 通信部の実装 | JavaScriptからの 呼び出し | 補足 |
ASP.NET ページハンドラ | *.aspx | なし | 必要 | 容易 | ページ/WebForm (HTML)を表示する仕組みのため不向き |
ASP.NET ハンドラ | | なし | 必要 | 容易 | |
Web サービス ハンドラ | *.asmx | SOAP,HTTP POST | 不要 | たいへん | WCFの下位互換 |
WCF Webサービス | *.svc | SOAP | 不要 | たいへん | WCFの機能をIISにインストールする必要あり |
WCF Webサービス(REST I/Fを実装) | *.svc | REST | 必要 | 容易 | WCFの機能をIISにインストールする必要あり、入出力をJSONフォーマットで指定する |
ジェネリック Web ハンドラ | *.ashx | なし | 必要 | 容易 | |
ASP.NET Web API | | なし | 不要 | 容易 | |
通信部の実装 : Windows Form アプリケーションから呼び出す場合に通信処理を実装する必要があるか。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用