對於一個應用程序,我需要每小時向最終用戶發送個性化的邀請電子郵件。這些用戶的電子郵件地址和其他信息都在數據庫中。帶有業務邏輯的視圖vs代碼
- 具有一個位
Planned.IsPlannable
集到True
和 所有用戶都具有一個Planned.DateStart
和一定 週期之間的Planned.DateEnd
可用於接收 電子郵件消息。 - 約有350條消息發送每小時。
- 消息中必須包含 的所有信息是數據庫中的 。
- 的應用程序是一個 .NET4.0控制檯應用程序,數據 訪問我用Subsonic3.0。
至少有兩種情況可供選擇:通過檢索相應的數據
1 :)查看類似:
SELECT [Computer].ComputerName,
[User].UserEmail,
[Planned].DateAvailable,
[Planned].DatePlanned
FROM [Computer]
INNER JOIN
[Planned] ON [Computer.ComputerID] = [Planned.ComputerID]
INNER JOIN
[User] ON [Computer].UserID = [User].UserID
WHERE (DATEDIFF(dd, GETDATE(), [Planned.DateAvailable]) < 10)
AND Planned.IsPlannable = 1
和組成的基礎上,此視圖的結果,此應用程序的C#代碼中的相應消息。
2 :) 視圖構造SQL服務器上整個消息和返回類似
[EmailTo]
[Subject]
[Body]
然後僅遍歷槽的結果以及從它
創建MailMessage
對象 在這兩種情況下我得到的消息,如:
foreach (vwGetInvitableComputer u in UserController.GetAllInvitableUsers())
{
// where the usercontroller wraps the Subsonic logic.
// the composition happens here
}
對C#代碼中的迭代槽進行迭代,並僅從該預先格式化的數據組成郵件消息。
什麼情況下性能和資源明智選擇?
更新:確實是有文本操作數據庫的選項。然而,這是在messagbody到CompterName,DateStart和DateEnd.Perhaps更換三根弦,SQL-意見有足夠的智慧來傳播性能爲此,雖然C#代碼「請求時」做到了嗎?
「傳播表現」是什麼意思?你的意思是跨線程嗎?您可以在C#中輕鬆地使用並行foreach或其他東西。 – 2011-06-15 13:11:56