2012-02-16 44 views
0

我想爲我的項目添加簡報功能,以向所有訂閱的用戶發送已構建的郵件。儘管我根本沒有期待高音量,但我希望這樣做的目的是重複使用郵件數量可能很大的項目。然而,我很困惑我能用這個策略。引述答案this question創建併發送簡報

我不會建議asp.net網頁發送,即使你在一個單獨的後臺線程 啓動它。我想你會冒着服務器回收你的流程的風險,在 發送中,這會弄亂它。您確實需要編寫某種單獨的服務或 應用程序來發送您的電子郵件。

這意味着一個WCF服務將會走的路,但它是OData還是RIA服務無關緊要嗎? MSDN文檔對於每種類型的用途有點混淆。它讓Silverlight成爲使用RIA的一個例子,但仍然說你也可以獨立使用它。

另外,即使我以這種方式使用服務,以上關於回收過程的引用是否意味着我將無法從MVC控制器調用它,因爲它將在控制器正在等待時回收過程無論如何,這項服務?理想情況下,我想用MVC創建郵件,將其傳遞到服務上,發送郵件並在MVC內處理結果。

之後的最後一個問題是我是否可以使用服務實現表單身份驗證。我需要能夠控制對服務的訪問,以便其他人不能隨意發送新聞簡報。

WCF和MVC結合起來可以實現這些目標嗎?

回答

2

當做類似的事情時,要記住我想保證所有內容都已發送。我只是在我的控制器中設置消息的內容,然後將消息和收件人列表(或本例中定義收件人的過濾器)寫入數據庫。

然後,我有ASP的(在我的情況下,Windows服務)的完全獨立的進程中運行置身其中定期檢查發送請求的數據庫,並將它們發送,並將其標記爲傳送。

顯然,MVC控制器負責所有的身份驗證問題。一旦在數據庫中記錄了發送請求,它就被認爲是完全授權的。

您可以通過ASP和使用WCF Windows服務之間的通信做類似的事情,但我認爲這是過於複雜。確保最終處理請求很難。無論如何,你確實需要一個數據庫記錄才能100%確定 - 這樣記錄可能就是你的信息。您通常也不需要實時觸發電子郵件發送。

+0

感謝您的回答詹姆斯。這使得事情變得容易得多。 – 2012-02-16 20:52:42