今年(2003年)から.NETに手を出してみました。 感想としては、.NETは色々と可能性があって面白く、結構気に入ってます。 今のところイントラ内で、色んなサービスを行おうとした時、システム構築速度は従来のものとは段違いで、 かなり重宝しています。 .NETFrameworkで構築できるシステムには、大きく分けて、Windowsアプリケーション、ASP.NETによるWebアプリケーション、 それとWebサービスの三つがあります。 この中で、注目はWebサービスではないかと思いますが、いかがでしょう?(^^; Webサービスとは何かと言うと、Web上にあるオブジェクトの機能を、外のクライアントに対して提供するテクノロジーの ことです。 ある機能を実行するオブジェクトがWeb上にあるとします。 外のクライアントからそのオブジェクトに要求を出し、希望する処理を行います。 その結果をクライアントに戻します。 考え方としては実にシンプルで、クライアント内部にはない処理を外のサービスを使うことによって解決し、 その結果を受け取って何らかのまとまった処理を行おうとするものです。 クライアントを扱うユーザーは、特段Webサービスを使用している意識はなく、あたかも内部で処理されているかの ごとく見えます。 言ってみれば、RPC(Remote Procedure Call)とか、CORBAとか、分散オブジェクトに類する機構ですね。 Webサービスの中心的な論理プロトコルはSOAP(Simple Object Access Protocol)と呼ばれて、 XMLでメッセージ形式が定義されています。 SOAP自体は物理的なプロトコルには何を使っても良いようですが、一般的にはhttpを使用しているようです。 文献によるとSMTPでもFTPでも良いらしいですが…。 httpを使うメリットは、ファイアウォールを難なく越えていくことにあります。 ファイアウォールで守られたユーザーが、外のオブジェクトにアクセスする場合、セキュリティの関係上、 厄介な問題を引き起こすため、分散オブジェクトはイントラ内部で使用されるケースが多いと思います。 その点、httpを使い、現状の環境から特段変更なしに使用できるSOAPは、結構いいかも!です。 SOAPで交換されるメッセージはXMLで、その形式が決まってます。 外形的なXML構造は、ヘッダとエンベロープに分かれており、要求メソッドや結果はエンベロープに格納され、 やり取りされます。 具体的イメージが湧かないと思いますので、例題をひとつ。 三省堂さんのサイトでWebサービスのテストページが公開されています。 http://www.btonic.com/ws/index.html 対象辞書 三省堂デイリーコンサイス英和辞典(57,000項目) 三省堂デイリーコンサイス和英辞典(63,000項目) 三省堂デイリーコンサイス国語辞典(70,000項目) このテストサイトでは、英和、和英、国語などの各辞典の単語検索サービスを公開しています。 アプリケーションで、検索単語等のプロパティをエンベロープに収めたSOAPメッセージを組み立て、 Webサービスのページに送ります。 Webオブジェクトは、このメッセージを開き、エンベロープより、対象メソッドやプロパティを取得します。 対象辞書で、検索した結果をSOAPメッセージに収めてクライアントに戻します。 VisualStudio.NETをお持ちの方は、以下のサイトで、三省堂テストサイトにアクセスするプログラムサンプルを 公開していますので、参照してください。このページ、私もよくお世話になってます。 http://ukamen.hp.infoseek.co.jp/ このページのサンプルを見てもらうと分かるのですが、実にシンプルにアクセス可能なことがご理解できると思います。 VS.NETを使用すると、Web参照の追加が、実に重要で、ここで、このWebサービスに対する インターフェース定義言語WSDLがサイトから提供されるので、これを設定できるようになっています。 これによってVSは対象となるWebサービスへのSOAPメッセージの構造を知ることができます。 この機構があるお陰で、アプリケーションを作る側からは、SOAP自体が隠蔽され、対象オブジェクトの インスタンスを作って、利用することができます。 この辺の機構は中々です。(^^) 実際にこのサンプルを試してみました。 ちゃんとキレイに動きます。 このアプリケーションは、検索単語を入力して、その訳や意味を返す単純なものですが、膨大な数の単語の管理は、 このアプリではなく、Webサービスを提供する側が行っているので、このサービスが続く限り、 いつでも最新の辞書を利用することができます。 JTBのサイトも同じような実験サイトで、Webサービスを提供しています。 ここでは、仮想の飛行機やホテルの予約ができます。 また、Google、Amazonなどのサイトでも、Webサービスを始めていまして、それぞれSDKがダウンロードできます。 興味のある方は試してみても面白いかと思います。 SOAPはバラ色の未来を約束するか? 現時点では、何とも…が正直なところでしょうか。 しかし、全てのコンテンツやデータベースを一箇所に集め、維持・管理を考えると、そうれは膨大なコストがかかるわけで、 情報が爆発している現代では、そんなことはもはや不可能。 情報の多様化とともにユーザーの望むサービスもまた多様化しています。 これに解答を与えるとすれば、Webサービスを組み合わせて、ユーザーごとにカスタマイズされたサービスを構築して 提供する、というのが現実的となると思います。 企業のアウトソーシングが盛んです。 同じようにオブジェクトもまたアウトソーシングの時代なのかもしれません。