我需要启动每月流程来创建预格式化的文本文件。数据源位于数据库表(sql server 2008 R2)中。 有必要对数据执行一些逻辑(ETL),然后写入txt文件。
我找到了2个解决方案。
首先是:使用预定的SSIS,其中我提取,使用脚本任务(c#)内的逻辑转换数据并将结果转储到txt文件
第二个解决方案是: 我可以使用SSIS和脚本任务来调用动作MVC(c#代码并使用WebClient.UploadData)。 在txt文件中的数据提取,转换和结果转储完全在MVC动作中执行。 我认为应该更好地为以下专业人员移动MVC操作中的逻辑:
测试驱动开发
记录(使用log4net)
实体框架
重用WebApp的代码逻辑
未来的sql server迁移可能更简单(dtsx迁移),因为逻辑在SSIS之外
如果所有应用程序逻辑都在WebApp中,我更有信心:我更喜欢仅将SSIS用于大型ETL。
第二种解决方案的缺点是必须执行MVC动作调用的安全管理以避免恶意调用。
问题
您认为最佳解决方案是什么?
内部或外部的逻辑(WebApp MVC)SSIS?
答案 0 :(得分:0)
我遇到了同样的问题。我选择将逻辑放在ASP.NET Web应用程序中的原因与您列出的原因相同。
答案 1 :(得分:0)
我的建议是考虑使用hangfire.io。我认为它是针对此类情况而设计的。 话虽如此,您始终可以使用SSIS来调用MVC操作。出于安全原因,我建议将其设为通过https的发布请求,并提供某种类型的身份验证。如果这是一个长期运行的过程,则可能必须扩展webClient以延长时间。以下代码的功劳归于how-to-change-the-timeout-on-a-net-webclient-object。
public class LocalWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest w = base.GetWebRequest(uri);
w.Timeout = 10 * 60 * 1000;//10 minutes
return w;
}
}
用法: 使用(var client = new LocalWebClient()) {}