Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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
Asp.net mvc 在.NET3.5C中处理胖Web服务#_Asp.net Mvc_Web Services - Fatal编程技术网

Asp.net mvc 在.NET3.5C中处理胖Web服务#

Asp.net mvc 在.NET3.5C中处理胖Web服务#,asp.net-mvc,web-services,Asp.net Mvc,Web Services,我正在处理一个肥胖的第三方Web服务,它返回大约3mb的数据用于一个简单的搜索结果,该响应中大约50%的数据是垃圾数据 然后将这些数据重新映射到我自己的结果对象并丢弃响应,这样我就在内存中存储1-2MB用于过滤和排序,而不是使用web响应自己的对象并使用2-4,这有意义吗?还是我遗漏了一点 到目前为止,我一直在从一个单独的项目访问webservice,并使用一个新类来提供交互和处理持久性,所以我的项目看起来是这样的 |- Web (mvc2 proj) |- DAL (database/stor

我正在处理一个肥胖的第三方Web服务,它返回大约3mb的数据用于一个简单的搜索结果,该响应中大约50%的数据是垃圾数据

然后将这些数据重新映射到我自己的结果对象并丢弃响应,这样我就在内存中存储1-2MB用于过滤和排序,而不是使用web响应自己的对象并使用2-4,这有意义吗?还是我遗漏了一点

到目前为止,我一直在从一个单独的项目访问webservice,并使用一个新类来提供交互和处理持久性,所以我的项目看起来是这样的

|- Web (mvc2 proj)
|- DAL (database/storage fluent-nhibernate)
|- SVCGateway (interaction layer + webservice related models)
|- Services
--------------
|- Tests
|- Specs
我试图让应用程序运行得更快,我还需要临时存储结果集,以防客户查看产品并希望返回结果。(服务仅返回500个可能的14K结果)

因此,基本上,我在寻找确认,在将结果推送到我自己的对象中时,我做了正确的事情,或者我违反了一些规则,或者即使有更好的方法来处理它


谢谢

尝试使用序列化在内存中存储缩减结果对象。这将对你大有帮助。这确实是提高处理结果速度的唯一方法


我还想看看进程外缓存解决方案,如NCache()和memcached(),以进一步提高您的速度和可扩展性。

假设您将在应用程序的生命周期内多次操作生成的数据集,我认为将web服务的结果集映射到您自己的对象非常有意义

除了减少内存占用的明显好处外,您还可以设计自己的数据内部表示,以便针对要对其执行的操作类型进行优化。这样可以节省处理时间和内存使用


我能看到的存储臃肿的第三方响应的唯一情况是,如果您的主要用例涉及用户只查看一次数据。如果用户很少返回到他们以前的搜索,那么您就可以利用原始结果集。

这听起来很可疑。如果要在其中获取大量数据,需要避免的是缓存、缓存和其他重复。尽可能快地去除你不需要的东西。我实际上是指缓存去除的对象,而不是完整的响应。uggh,我认为我们的第三方在200k负载下很糟糕。您确定不能限制通过他们的服务返回的结果数吗?为什么一次需要500个结果?我们至少提供了灵活分页的属性。不,它只返回可用的内容,最多返回500个结果。