对于我的第一个问题,我有一个典型的网络电子商务场景,用户可以订购各种产品,然后收到确认电子邮件.我一直在为这个应用程序发送电子邮件的最佳方式进行大量搜索,我希望有人可以指出我正确的方向.
我可以发送纯文本确认来自应用程序或数据库的电子邮件,但现在我想通过创建一系列HTML模板来更改内容,以便在发送电子邮件时使用.将有多个HTML模板和多个电子邮件内容.当用户下订单时,订单被记录在数据库中,然后数据库通过存储过程确定产品/订单的类型,并选择适当的模板文件名,电子邮件内容并用用户/订单替换所有关键文本信息.
同时,我也喜欢用文本版本编码的电子邮件,因此我可以发送一封包含这两种类型的电子邮件,然后完成.
是否可以在SQL Server 2008 R2中执行此操作,还是应该将内容信息发送回应用程序然后发送电子邮件?我担心后者的问题是,它可能会导致网站出现一些延迟,因为它与数据库来回传递.
此外,我想切换到易于与.Net一起使用的Amazon SES,但我还没有能够设置SQL 2008 R2,所以我不确定这是否是我的错误,或兼容性问题.
基础知识:应用程序:.Net 4.0数据库:SQL 2008 R2
我正在开发一个WebAPI2项目进行一些数据收集,我试图弄清楚如何减少API方法的响应时间.
我有一个JavaScript函数,可以将信息发布到我的api.我的API接收此信息,将其插入数据库,然后返回HTTP Accepted.
假设数据处理完成的等待时间为5秒
// POST api/<controller>
public HttpResponseMessage Post([FromBody]string value)
{
//This represents 5000 milliseconds of work
System.Threading.Thread.Sleep(5000);
return new HttpResponseMessage(HttpStatusCode.Accepted);
}
Run Code Online (Sandbox Code Playgroud)
这意味着,当我的JavaScript函数调用Post方法时,它会等待5秒钟的响应.
有没有办法可以立即返回HTTP Accepted的响应,然后继续处理我的数据?
从lilo.jacob更新解决方案
好的,我已经使用下面的线程解决方案更新了我的方法.这是新代码
// POST api/<controller>
public HttpResponseMessage Post([FromBody]string value)
{
new System.Threading.Tasks.Task(() =>
{
//This represents 5000 milliseconds of work
System.Threading.Thread.Sleep(5000);
}).Start();
return new HttpResponseMessage(HttpStatusCode.Accepted);
}
Run Code Online (Sandbox Code Playgroud)
几乎立即返回响应,这正是我所寻找的.以下是Fiddler的一些结果,显示了响应时间的变化

第一个响应显示启动时WebAPI的延迟,请求4,5和7正在使用线程并在彼此之后立即触发.响应11显示相同的请求而未启用线程,请注意5秒延迟.
非常酷,干净,精益解决问题的方法.