Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET应用程序中检索许多大型EPS文件并将其转换为JPEG_C#_Asp.net_Performance - Fatal编程技术网

C# 在ASP.NET应用程序中检索许多大型EPS文件并将其转换为JPEG

C# 在ASP.NET应用程序中检索许多大型EPS文件并将其转换为JPEG,c#,asp.net,performance,C#,Asp.net,Performance,我在数据库中有许多(>600)EPS文件(300KB-1MB)。在我的ASP.NET应用程序(使用ASP.NET 4.0)中,我需要逐个检索它们,并调用一个web服务,该服务将内容转换为JPEG文件并用JPEG更新数据库(JPEG内容列) 内容)。但是,从SQLManagementStudio本身检索600个EPS本身的内容太长(10个EPS内容需要5分钟) 因此,我有两个问题:- 1) 如何获取EPS内容(遗憾的是,选择一定数量的内容不是选项:-():- 方法1:- foreach(var D

我在数据库中有许多(>600)EPS文件(300KB-1MB)。在我的ASP.NET应用程序(使用ASP.NET 4.0)中,我需要逐个检索它们,并调用一个web服务,该服务将内容转换为JPEG文件并用JPEG更新数据库(JPEG内容列) 内容)。但是,从SQLManagementStudio本身检索600个EPS本身的内容太长(10个EPS内容需要5分钟)

因此,我有两个问题:-

1) 如何获取EPS内容(遗憾的是,选择一定数量的内容不是选项:-():-

方法1:-

foreach(var DataRow in DataTable.Rows)
{
// get the Id and byte[] of EPS
// Call the web method to convert EPS content to JPEG 
}

2) 对于>600的内容,使用web方法将EPS转换为JPEG。 当然,每个调用都是一个长时间运行的操作。任务并行库(TPL)是实现这一点的更好方法吗

另外,在SQLCLR函数中完成整个过程是一个好主意吗


编辑:-不幸的是,我必须在ASP.NET应用程序本身中执行此操作,而在单独的进程(如Windows服务)中执行此操作是不可取的。这种方法在我看来根本是错误的。如果,正如您在方法1中所建议的那样,您的服务能够访问数据库本身(更新数据库),那么为什么您的服务不进行内容提取的工作呢

我很想做一些像

1) (可能)在表中添加一列以标记EPS是否已翻译,并可能存储翻译结果。
2) 如果您必须从ASP.NET启动此过程,请选择
a) 从前端调用数据库,获取尚未翻译的ID并将其传递给服务进行翻译,或
b) 只需给服务打个电话,说“立即转换所有未转换的eps文件”
3) 一个更好的替代方案是在某个执行转换的地方运行一个计划作业。这意味着您的ASP.NET进程不会坐等转换运行


对我来说,通过网络传递数据似乎没有必要,但我意识到我不知道服务器的物理位置或网络的功能。

“那么为什么您的服务不做内容提取的工作?”--因为,该服务是通用的,可以跨许多其他应用程序共享,并且不能使用特定于应用程序的代码来提取数据。它只需要EPS的字节[],并返回JPG.OK的字节[]。对我来说,它仍然“闻起来”不对劲,但如果是这样的话,那就顺其自然吧。不要认为这有什么不对。一个简单的可重复使用的服务,用于一个简单的工作,没有任何依赖性。很公平-我不是想说你错了,只是似乎需要通过网络发送大量数据,而这些数据可能不需要。您提到您的服务可以直接更新数据库,因此我认为这是一个获取数据的好地方。:)好吧,我的错。我刚刚被告知该服务不会更新数据库。很抱歉给你带来了困惑。
foreach(var DataRow in DataTable.Rows)
{
// get only the Id of EPS
// Hit database to get the content of EPS
// Call the web method to convert EPS content to JPEG
}
Any other approach?