asmx(エーエスエムエックス)とは、マイクロソフトのASP.NETで、Webサービスを作るときに使われた拡張子のことです。この拡張子を付けたファイルをサーバーに置くと、その中のプログラムが外部から呼び出せる窓口として公開されます。
現実世界に例えると、asmxは会社の受付に置かれた内線電話の一覧表のようなものです。外から用件を伝えると、担当部署へ取り次いで結果を返してくれます。利用する側は、中で誰がどう処理しているかを知る必要がありません。
asmx図解
後継の技術との位置づけ
| 技術 | 登場した時期 | 主なやり取りの形 |
|---|---|---|
| asmx | 2002年ごろ | SOAP(XML)が中心 |
| WCF | 2006年ごろ | SOAPのほか多くの方式 |
| Web API | 2012年ごろ | REST(JSON)が中心 |
| 最新の.NET | 現在 | RESTやgRPC |
どんなファイルなのか
asmxファイルの中身は、ごく短い宣言の一行だけということも珍しくありません。実際の処理は別のソースファイルに書かれており、asmxはその入り口を示す役割に徹しています。公開したいメソッドには「WebMethod」という印を付けることになっており、印の無いメソッドは外部から呼び出せません。
SOAPでやり取りする
asmxのWebサービスは、SOAPというXML形式の取り決めに従って、要求と応答を封筒のような構造に包んでやり取りします。文字数は多くなりますが、型がはっきり決まっているため、送り間違いが起きにくいという利点がありました。当時は企業のシステム同士をつなぐ標準的な方法とみなされていました。
WSDLで使い方を公開する
便利だったのがこの仕組みです。公開されたasmxのアドレスの末尾に「?WSDL」と付けると、どんな機能があり、どんな値を渡せばよいかを記した説明書がXMLで返ってきます。開発ツールはこれを読み取り、呼び出し用のコードを自動で作れるため、接続の手間が大きく省けました。
ブラウザで動作を試せる
asmxのアドレスをブラウザで開くと、公開されているメソッドの一覧が表示され、その場で値を入力して呼び出しを試せる簡易の画面が現れます。プログラムを書かずに動作を確認できるため、開発中の切り分けに重宝しました。ただし既定では、サーバー本体からしか使えない設定になっています。
なぜ使われなくなったのか
SOAPは取り決めが厳密なぶん、やり取りされるデータが大きく、扱いも重くなります。スマートフォンやブラウザからの呼び出しが主流になると、より軽いJSONを使うREST方式が好まれるようになりました。マイクロソフト自身も後継のWCF、さらにASP.NET Web APIへと推奨を移していきました。
それでも現役で残っている
とはいえ、業務の現場では今も見かけます。長く動いている基幹システムや、社内の古い連携処理では、asmxのWebサービスがそのまま使われ続けていることが少なくありません。動いているものを作り直す費用対効果が見合わないため、あえて手を付けずに残している例も多くあります。
移行を考えるときの注意
新しい方式へ置き換える場合は、呼び出し側のプログラムもすべて書き換えが必要になる点を最初に押さえておきます。取引先のシステムから呼ばれている場合は、こちらの都合だけでは切り替えられません。旧方式を残したまま新方式を並行して用意し、順に移していくやり方が現実的です。
これから作るなら選ばない
結論としては、新規の開発でasmxを選ぶ理由はほとんどありません。最新の.NETでは、asmxのWebサービスを作るための機能そのものが引き継がれていないためです。既存のasmxを読み解く場面はあっても、新しく書き起こすのであればWeb APIを選ぶのが順当です。



コメント