Page2業務アプリケーション構築におけるキー・ポイントの1つは、「リモートにあるデータをいかに効率よく活用するか」という点だ。業務アプリケーションでRDBMSがよく使われるのも、リモート・データをデータベース・サーバに蓄積して集中管理することで、効率的にデータを活用できるようにするためだ。Serverへのアクセスを想定している。Serverの接続関係を表している。Webサービスを経由させることには)どのような利点があり、Windowsフォームの作り方としてどのような点が変わってくるのかを見ていくことにしよう。Webサービスのプロジェクトを作成する。空のアプリケーション」を選択して、ベースとなるWebアプリケーション・プロジェクトを生成する。エクスプローラー]でプロジェクト項目の右クリック・メニューから[追加]-[新しい項目]を実行する。Webサービスのファイルをプロジェクトに追加する。Webサービスの追加([新しい項目の追加]ダイアログ)作成するWebサービスは、(基本的に)認証を行う「Login.asmx」ファイル(=ログイン・サービス)と、レコードの取得・更新を行う「Titles.asmx」ファイル(=データ入出力サービス)の2つで構成される(図3参照)。Webサービスを作成するそこで、新しい項目としてこの2つのファイルを追加する。以下では、これらの2つのファイルに対して、ログイン・サービスとデータ入出力サービスを実装していく。●ログイン・サービスまずはLogin.asmxファイルに、ログイン・サービスを実装する。具体的には、下記のようなコードになる。ログイン認証を行うWebサービスのコード例(上:VB、下:C#)Webサービスのメソッドは、.asmxファイルの中でWebMethod属性を付けたメソッド(上記のコードではCheckメソッド)として定義する。Server認証によるログインを実行する。正常にログインできたときは、その戻り値としてTrueを返す。ログインに失敗したときは、ログイン時に呼び出すOpenメソッドが例外を発生させるので、それを呼び出し元にそのままスロー(Throw)している。次にTitles.asmxファイルに、データ入出力サービス(タイトル一覧の検索/個別のタイトルの検索/個別のタイトルの更新)を実装していく。データ入出力サービスに実装するWebメソッドの1つ目は、タイトルを検索して一覧データを作成するGetTitleDsメソッドだ。具体的には、LIKE検索のSELECT文を実行して、その実行結果をデータセット(DataSet)に格納して返却する。下記はそのコード例である。Serverに接続してデータを取得した。Webサービスからもデータが取得できている。1つだけ違う点はWebMethod属性を付けたことだ。Serverから1レコード分のデータを取得するコードを、Titles.asmxファイルにGetTitleDsItemメソッドとして記述する。タイトル一覧を取得するWebサービスのコード例」と変わらない。Serverにデータを保存する方法はいくつかあるが、本稿のサンプルではデータセットの内容をデータアダプタ(SqlDataAdapter)のUpdateメソッドを使って保存する方法を採用している。詳しくはリスト4(SetTitleDsItemメソッド)を参照してほしい。1レコードを更新するWebサービス(SetTitleDsItemメソッド)のコード例(上:VB、下:C#)SqlDataAdapterのUpdateメソッドは、データセットのデータロウ(DataRow)の状態により内部で自動的にUPDATE文、INSERT文、DELETE文を実行する。そのため、Updateメソッドを実行するときには、下記の2点を忘れずに実施する必要がある。(1)UPDATE文、INSERT文、DELETE文をSqlDataAdapterに設定する(2)明示的にトランザクションを開始し、Updateメソッドが成功したらコミット(Commit)する(1)の3つのSQL文はコマンドビルダ(CommandBuilder)を使えばSELECT文から自動生成されるし、(2)の明示的なトランザクションもSqlTransactionクラス(System.Data.SqlClient名前空間)を使えば簡単に実装できる。Webサービスが完成したので、続いて、そのWebサービスをクライアント・プログラムから利用する処理を実装する。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。