对于一个应用程序,我需要每小时向最终用户发送个性化的邀请电子邮件。这些用户的电子邮件地址和其他信息都在数据库中。带有业务逻辑的视图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