連載:世界のWebサービス 第4回 GOT DOT NET 1.ユーザーによるサンプル・アプリケーション田口景介 |
メール送信Webサービス MailSender
MailSender Webサービスは、Thumbnail Generatorと同じく.NET Samplesコーナーで公開されているサンプル・サービスである(画面3)。名前が示すとおり、メール送信機能を提供するWebサービスだ。
MailSender | ||||||||||||||||||
こちらも.NET Samplesコーナーで公開されているWebサービスの1つ。名前のとおりメール送信機能を持つサービスである。このWebサービスを使ったWebアプリケーションは、Webサービスの非同期呼び出しのサンプルとなっている。 | ||||||||||||||||||
|
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アプリケーション部分のみ公開されている。 | |||||||||||||||
|
■常駐型メモ帳ツール Sticky Notepad
デフォルトでは画面の右下、タスク・バーの右端にあるインジケータ領域(システム・トレー領域)に常駐するメモ帳ツール。.NETアプリケーションと聞くと、Webサービスやネットワーク・アプリケーションをイメージしがちだが、こんなアプリケーションも開発できる。C#で記述されたソースコードが公開されている。
Sticky Notepad | ||||||
インジケータ領域に常駐するWindows Formsアプリケーションのメモ帳。ちょっとした備忘録に便利だ。 | ||||||
|
■掲示板 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アプリケーションとして開発されたツリービュー・コントロール。 | |||
|
■カード・ゲーム BlackJack
カード・ゲーム。ソリテアやフリーセルで使われているCARDS.DLLを使ってカードの表示を行っているサンプル。ソースコードが公開されている。
BlackJackゲーム |
言わずと知れたカードゲーム。カードのイメージとしては、CARDS.DLLに含まるものを使用している。 |
関連リンク | |
GOT DOT NET | |
.NET Sample Web Services |
INDEX | ||
[連載]世界のWebサービス―― 究極のWebサービスを求めて ―― | ||
第4回 .NET開発者が独自に運営する異色サイト、GOT DOT NET | ||
1.ユーザーによるサンプル・アプリケーション | ||
「世界のWebサービス」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|