如何在C#中使用web服务高效地管理数据访问/预加载?
好的,这是一个非常“一般”的问题。我们目前有一个SQL Server数据库,需要在ASP.NET中为其开发一个应用程序,该应用程序将包含C#Web服务中的所有业务逻辑 问题是,从架构上讲,我不确定如何设计web服务和数据管理。有很多事情要考虑:如何在C#中使用web服务高效地管理数据访问/预加载?,c#,asp.net,sql-server,web-services,oop,C#,Asp.net,Sql Server,Web Services,Oop,好的,这是一个非常“一般”的问题。我们目前有一个SQL Server数据库,需要在ASP.NET中为其开发一个应用程序,该应用程序将包含C#Web服务中的所有业务逻辑 问题是,从架构上讲,我不确定如何设计web服务和数据管理。有很多事情要考虑: 我们需要快速获取数据。现在,我们有超过一百万的“销售”和“购买”记录,我们需要经常根据一系列参数计算和加载给定日期的当前库存。我不确定我们应该如何预加载数据并将数据保存在Web服务中。在SQL查询中进行股票计算将非常冗长。他们目前有一个库存计算应用程序,
谢谢第一个建议是不要使用旧的ASMX web服务。使用WCF,微软说它应该用于所有新的web服务开发 其次,您确定不能优化数据库,或者将其放在更快的硬件上,或者放在更靠近web服务器的地方吗
我不知道你会一次在内存中得到那么多数据。如果可以,那么您可以使用
数据集
并使用LINQ to数据集对其进行查询。我希望我误解了您所写的内容,但如果
包含C#Web服务中的所有业务逻辑
你的意思是你已经朝着反模式的方向走了。通过web服务从ASP.NET应用程序访问数据只会导致您遭受序列化/反序列化惩罚,而几乎没有任何收益
更好的方法是将要提供的服务组织到应用程序构建的公共层中,并直接从ASP.NET应用程序访问这些服务,还可以将它们公开为Web服务,以允许外部源使用这些数据
您还可以研究使用定期更新(一次或几次/天)的方法公开计算成本高昂的数据。这将有助于提高数据的读取性能(只要您愿意接受数据有点陈旧)
这就是您要查找的信息吗?谢谢John!在一个从供应商提供的产品中有许多“购买”和“销售”的系统中,你如何管理当前库存的显示,考虑到“库存”实际上是采购-销售,你必须考虑所有的行来计算它吗?您是否会在数据库中缓存“库存”数据以优化性能,即使其数据冗余?我会在数据库中将数据聚合成有用的形式。我可能每晚都这么做。我甚至可以创建一个数据仓库来完成它。我不可能实时计算这些信息。我还将更新您的问题,将您刚才输入的信息包括在评论中。