連載:世界のWebサービス

第4回 GOT DOT NET

1.ユーザーによるサンプル・アプリケーション

田口景介
2001/05/02


メール送信Webサービス MailSender

 MailSender Webサービスは、Thumbnail Generatorと同じく.NET Samplesコーナーで公開されているサンプル・サービスである(画面3)。名前が示すとおり、メール送信機能を提供するWebサービスだ。

MailSender
こちらも.NET Samplesコーナーで公開されているWebサービスの1つ。名前のとおりメール送信機能を持つサービスである。このWebサービスを使ったWebアプリケーションは、Webサービスの非同期呼び出しのサンプルとなっている。
  メールの発信元となるアドレスを指定する。
  メールの送信先となるアドレスを指定する。
  メールのサブジェクトを指定する。
  メッセージをテキスト形式で送信するか、HTML形式で送信するかを選択する。
  メッセージ本文をここに記述する。
  メッセージを送信する。

 MailSednerは、Thumbnail GeneratorのようにGOT DOT NETサイト上では動作していないため、実際に利用するためにはMailSenderのソースファイル一式をダウンロードして、各ユーザーの.NET環境でビルドする必要がある。GOT DOT NET上でサービスされていない理由は、セキュリティ上の問題があるからだ。MailSender自体には、ユーザー認証を行う仕組みが組み込まれていないため、単純に公開すると誰もが匿名でメールを送信できることになってしまう。各ユーザーのサイトでMailSenderサービスを実験するときにも、MailSenderクライアントとなるWebページには必ずアクセス制御を設定しておくこと。さもないと、スパムの発信元として利用されかねない。
 さて、非同期呼び出しのサンプルとして紹介したMailSenderだが、注目すべきはWebサービスではなく、そのサンプル・クライアントとなっているWebアプリケーションの方だ(MailClient\default.aspx)。どんなWebサービスでも同期/非同期呼び出しに対応し、呼び出し方を決めるのはクライアントだからである。

 非同期呼び出しを行うには、まずWebサービスを呼び出す前に、コールバック・メソッドの登録を行う。次に非同期呼び出し用のWebメソッド(たとえば同期呼び出しにはSendDataSetメソッド、非同期呼び出しにはBeginSendDataSetメソッドを使う)を呼び出すと、Webサービスが処理を終えるのを待たずに、即座に処理はクライアントに戻る。そして実際にWebサービスが処理を終えると、あらかじめコールバック・メソッドとして登録しておいたメソッドが呼び出され、処理結果が伝えられる。このように、クライアント・アプリケーションが、Webサービスの処理完了を待たずにすむのが非同期呼び出しの特徴だ。

 MailSenderクライアントが非同期呼び出しを利用しているのは、メール送信の正否を確実に調べるためだ。MailSenderはDatSetオブジェクトを使って、同じ内容のメールを大量の宛先に送信する機能を持つため、すべての宛先にメールを送信し終えるまで時間がかかる可能性がある。もしこのときタイムアウトが発生してしまえば、クライアント側でメール送信の正否を調べる手段がなくなってしまうというわけだ。

User Contributionsコーナー

 最後に、User Contributionsコーナーに投稿された.NETアプリケーションのごく一部を紹介しておこう。いずれも価値の高いサンプルばかりである。

■POP3クライアント SoftArtisans POP3
 WebサービスとWebアプリケーションを組み合わせたPOP3クライアント。つまり受信機能だけを持つメーラーである。POP3による通信機能を実装したWebサービスのソースコードは公開されていないが、C#で開発されたWebアプリケーション部分だけでも参考になる。

SoftArtisans POP3
WebサービスとWebアプリケーションを組み合わせ、受信機能だけを実現したPOP3クライアント。C#で開発されたWebアプリケーション部分のみ公開されている。
  メールサーバのアドレスを指定する。
  ユーザー名を指定する。
  パスワードを指定する。
  POP3インターフェイスでメールを取得する。
  デバッグ情報などが表示される。

■常駐型メモ帳ツール Sticky Notepad
 デフォルトでは画面の右下、タスク・バーの右端にあるインジケータ領域(システム・トレー領域)に常駐するメモ帳ツール。.NETアプリケーションと聞くと、Webサービスやネットワーク・アプリケーションをイメージしがちだが、こんなアプリケーションも開発できる。C#で記述されたソースコードが公開されている。

Sticky Notepad
インジケータ領域に常駐するWindows Formsアプリケーションのメモ帳。ちょっとした備忘録に便利だ。
  インジケータ領域に常駐したSticky Notepadのアイコン。
  アプリケーションとしての挙動は「メモ帳」と同様。

■掲示板 Discussion Forum Board in ASP.NET
 C#でWebアプリケーションとして開発された掲示板アプリケーション。従来のASPやPerlによるCGIスクリプトなど利用して同種のアプリケーションを開発すると、HTMLコードとスクリプトが混在し、分かりづらく、変更の難しいコードになりがちだったが、ASP.NETで開発されたこのForum Boardは、HTMLコードとC#のコードが完全に分離され、極めて分かりやすいコードで記述されている。ASP.NETのメリットが一目で分かる好例である。

Discussion Forum Board in ASP.NET
C#を使用し、Webアプリケーションとして開発された掲示板。従来のCGIを利用する形式では、ページデザインに関する部分とプログラム部分が混在してしまいがちだったが、ASP.NETを利用することで、両者を分離し、読みやすくメンテナンスしやすいプログラムとすることに成功している。

■Webコントロール版ツリービュー Tree View Server control
 サーバ・コントロールとして利用できるツリービュー・コントロール。Webアプリケーションでもツリービューが利用可能になる。コントロールとサンプル・クライアントのソースコードが公開されている。

Tree View Server control
Webアプリケーションとして開発されたツリービュー・コントロール。
  Windowsのインターフェイスとしてはお馴染みのツリービュー・コントロールと同様の挙動を示すWebアプリケーション。

■カード・ゲーム BlackJack
 カード・ゲーム。ソリテアやフリーセルで使われているCARDS.DLLを使ってカードの表示を行っているサンプル。ソースコードが公開されている。End of Article

BlackJackゲーム
言わずと知れたカードゲーム。カードのイメージとしては、CARDS.DLLに含まるものを使用している。

 

関連リンク
GOT DOT NET
.NET Sample Web Services
 
 

 INDEX
  [連載]世界のWebサービス―― 究極のWebサービスを求めて ――
  第4回 .NET開発者が独自に運営する異色サイト、GOT DOT NET
  1.ユーザーによるサンプル・アプリケーション
 
「世界のWebサービス」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間