我们正在构建一个Web服务,并预计可能会返回大量数据。
ASP.Net和IIS 6将如何处理这个问题?我们可以做些什么来减少资源消耗?
例如,我们目前有一个可序列化的类,它具有属性,它是另一个可序列化类类型的数组。调用Web服务时,它会从数据库中查询大量记录,实例化该类,填充数组属性,然后返回被序列化的类。
如何在引擎盖下处理?我想整个DataSet对象都存储在内存中,然后整个可序列化对象存储在成员中,然后序列化,整个xml在内存中,最后流式传输给调用者。
我是否可以采取措施减少内存消耗,例如在从数据库中读取结果时将结果流出?这可能吗?
答案 0 :(得分:1)
我不确定简单地交换使用WCF就是答案,因为问题实际上是关于请求数据的负担。
在选择首选服务方法之前,有几件事需要考虑:
你可以缓存数据吗?如果可以将数据存储在内存中,那么这将防止每次请求数据时都有抽取。但是,如果数据大小过大,您可以考虑将数据从db写入文件并从那里提供服务。
您可以考虑使用其VM模式的Redis。这将允许您缓存数据,但如果不经常访问,则可以将数据写入文件以防止过度使用内存。
有没有办法,对数据库的调用可以分成几个更有效的调用?
如果执行调用所花费的时间很长,您可以考虑异步调用数据。
最后,数据是否必须作为Web服务提供?数据可以作为XML文档提供吗?