5

私はいくつかのWebアプリケーションを持っており、それらはすべて、連絡フォームによるものであれ、ある種の通知の更新などによるものであれ、電子メールの送信を利用しています。

私が見つけた問題は、Webアプリケーションから送信されている電子メールを追跡する方法が実際にはないということです。そのため、考えられる解決策を考え出しました。

図1。 メール送信者サービスのフローチャート

これは非常に簡単です。各Webアプリケーションが自分で電子メールを送信するのではなく、中央の電子メール送信者サービスを作成してプロセスを統合したいと思います。

基本的に、各アプリケーションは、データベースの「送信メール」テーブルにTo、From、Subject、Contentデータを含む行を作成するだけです。

次に、Eメール送信者サービス(Win Service)は、送信トレイからEメールを選択して送信し、送信済みとしてマークします。


「基本的な電子メール」情報(to、from、subject、content)をデータベースに保存しますが、実際に実行したいのは、「MailMessage」オブジェクト自体も保存して、Eメール送信者サービスが逆シリアル化できるようにすることです。これにより、任意のアプリケーションが電子メールを完全にカスタマイズできるようになるため、元のMailMessage。

MailMessageオブジェクトをこのように使用することに問題はありますか?

更新:もう1つの目的は、送信された電子メールのログを保存することです。したがって、データベースを使用する理由です。

4

2 に答える 2

6

はるかに優れたアーキテクチャは、アプリケーションが電子メール送信サービスである種のパブリックインターフェイスを呼び出すようにすることです。その後、サービス自体がデータベースへの送信の記録を担当できます。

このアーキテクチャは、データベースがサービスの内部になり、アプリケーション間の結合を減らすことを意味します(各アプリケーションは、データベーススキーマではなく、比較的小さなパブリックコントラクトを認識します)。また、MailMessageオブジェクトをデータベースに保存する際に問題が発生した場合は、すべてのクライアントを更新せずに保存方法を変更できることも意味します。

于 2011-03-28T18:53:54.010 に答える
3

なぜデータベースを使用するのですか?アプリケーションに直接メールサービスを呼び出させて、すべての情報を提供するだけです。

送信をキューに入れたい場合は、net.msmqWCFとのバインディングを使用できます。これにより、サービスが読み取る信頼できるキューにリクエストが保存されます。これはすべてあなたのために行われます。

于 2011-03-28T18:46:54.563 に答える