2009-02-27 16 views
3

私はプログラミングで自分の足を濡らしています。私の自己学習は私をこの質問に導きます。私はデザインパターンについて読んできましたが、これについての良い勧告が何であるか知りたいと思っていました。Windowsサービス用のデザインパターン - C#

私のテストアプリケーションは、MSMQにメッセージを送信します。私はこのMSMQを聞くWindowsサービスを書いて、それが受け取るすべてのメッセージに対して、単純なデータベース挿入を実行したい。

私はこの記事を私が必要ないくつかの情報を与えたlink text

を見ました。例では、私は

private static void MyReceiveCompleted(Object source, 
     ReceiveCompletedEventArgs asyncResult) 
    { 
     // Connect to the queue. 
     MessageQueue mq = (MessageQueue)source; 

     // End the asynchronous Receive operation. 
     Message m = mq.EndReceive(asyncResult.AsyncResult); 

     // Display message information on the screen. 
     Console.WriteLine("Message: " + (string)m.Body); 

     // Restart the asynchronous Receive operation. 
     mq.BeginReceive(); 

     return; 
    } 

以内に私の仕事のほとんどを行うことができますしかし、より現実的な候補である特定のパターンはありますか?私はそれが 'コマンド'パターンかもしれないと仮定して周りの読書から、しかし、これは最高のパターンであるかどうかはわかりません。パターンをよりよく理解するためのアイデアや考え。私はパターンに読ん

ブックス: ヘッドファーストデザインパターン - 私は私が好きなキューからのメッセージを処理する場合、この の混合レビューが4(SP?)

答えて

0

のギャングによるデザインパターンの使用コピーを命じ知っていますMessage Dispatcherを使用してください。

1

システムでWCFを使用できる場合は、netMsmqBindingまたはmsmqIntegrationBindingを確認してください。実際にセットアップするのはあまり難しくありません。そこには多くのチュートリアルがあります。

WCFを使用すると、System.Messagingの処理を行う必要がなくなります。

私の会社では、Windowsサービスで多くのMSMQサービスをホストしています。 WCFのServiceHostクラスを見てください。

+0

Andy、私はWCFを使用することができ、チェックアウトします。 netMsmqBindingまたはmsmqIntegrationBindingの推奨ブログ –

+0

http://blogs.msdn.com/drnick/default.aspx - これは私が出会った最高のWCFブログの1つです。ここに古い、良いチュートリアルビデオがあります:http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2006/09/13/8875.aspx –

5

これはあなたの質問に直接関係するものではありませんが、サービスを開発するための重要な設計パターン(Webサービス、Windowsサービスなど)は、サービスホストから機能を分離することです。

つまり、実際に作業を実行するクラスがあります。クラスを呼び出すサービスがあります。

この方法では、複数のホストでサービスを簡単に再ホストでき、コンソールアプリケーション、winformsアプリケーション、単体テストなどの機能を簡単にテストできます。

+0

私はこれに同意しますが、例外の管理方法についてはわかりませんこのモデル。あなたはすべてのクラスで(仕事をして)、ホストに成功/失敗を返すか、批判的な例外をホストに吹き込ませて、サービスを一時停止または停止するようなことをすることができますか? –

+0

本当にサービスを殺すはずの致命的なものだけがバブリングされます。他のすべてはクラスにカプセル化されています。私はクラス内にスケジューリングなどを入れて、ブートストラッパー以外のサービスを作ることさえできます。 –

関連する問題