1

データ入力および編集フォームがあり、すべてのデータ入力または更新イベントで、受信者の動的リストに電子メールを送信する必要があります。ユーザーが保存または編集ボタンをクリックするとすぐにメールを送信していますが、最初にデータをデータベースに保存してから後でメールを送信することを考えています。電子メールの送信に必要以上に時間がかかる傾向があるため、アプリケーションの応答時間を改善するために、これを部分的に実行したいと考えています。

これに関連して何らかのことをした人はいますか、似たようなものを実装するより良い方法はありますか、またはそのような良いチュートリアルを知っていますか?

メール本文はhtml形式です。

4

3 に答える 3

2

メールの送信を処理する Windows サービスを作成し、アプリケーションからサービスにデータを渡す方法としてメッセージ キューを使用できます。つまり、アプリケーションはデータを保存し、キューにメッセージを追加します。サービスはメッセージのキューを継続的にポーリングし、それぞれを電子メールとして送信します。

于 2010-09-29T07:12:41.853 に答える
1

サービスとメッセージ キューの使用については ck に同意しますが、いくつかの代替手段があります。

1 つは、定期的にデータベースをポーリングするサービスを使用することです。これにより、CPU 負荷が高くなるという犠牲を払ってメッセージ キューを回避できます (サービスは多くの不要なデータベース呼び出しを行います)。

これは、データベース トリガーまたはデータベース内のスケジュールされたジョブを使用して、データベース内で直接実行することもできます。SQL Server の最新バージョンでは、C# または Vb.Net で記述されたストアド プロシージャの実行がサポートされているため、既存のコードの多くをここで再利用できます。

最後に、asp.net アプリケーションの別のスレッドでメール送信を行う単純なソリューションを使用できます。このようにして、サービス アプリケーションの必要性を回避し、現在のようにコードを多かれ少なかれ再利用できます。

于 2010-09-29T07:19:15.283 に答える
0

これを行う 1 つの方法は、データベースに書き込み、送信する電子メールがあることを電子メール サービス (Windows サービスとして記述) に伝えるメッセージをキューに入れることです。次に、電子メール サービスはデータベースと対話して、実際に実行する必要があることを見つけます。これにより、電子メール サービスが Web アプリケーションから分離され、ポーリングも回避されます。

これは、電子メール情報を含めるのではなく、キュー メッセージをトリガーとして使用するという点で、ck のソリューションとは少し異なります。これにより、Web アプリと電子メール サービスがある程度分離され、複数のクライアントが電子メール サービスを再利用できるようになり、各クライアントが同じ電子メール メッセージ形式を観察する (そして歩調を合わせる) 必要がなくなります。

于 2010-09-29T07:57:57.717 に答える