如何在C#中使用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查询中进行股票计算将非常冗长。他们目前有一个库存计算应用程序,

好的,这是一个非常“一般”的问题。我们目前有一个SQL Server数据库,需要在ASP.NET中为其开发一个应用程序,该应用程序将包含C#Web服务中的所有业务逻辑

问题是,从架构上讲,我不确定如何设计web服务和数据管理。有很多事情要考虑:

  • 我们需要快速获取数据。现在,我们有超过一百万的“销售”和“购买”记录,我们需要经常根据一系列参数计算和加载给定日期的当前库存。我不确定我们应该如何预加载数据并将数据保存在Web服务中。在SQL查询中进行股票计算将非常冗长。他们目前有一个库存计算应用程序,可以预加载当天的所有销售和购买,然后在代码端计算库存

  • 我们希望开发功能强大的报告工具。我们希望实现一个“透视表”,但不确定如何实现它并具有良好的性能

  • 出于上述原因,我不确定如何设计数据模型

  • 如果你认为“股票”实际上是买入-卖出,你必须考虑所有的行来计算,那么你如何管理当前股票的显示?您是否会在数据库中缓存“库存”数据以优化性能,即使其数据冗余

    任何人都可以给我任何关于如何开始的指导,或者根据他们的个人经历(你过去做过什么?)

    即使这个问题是新的,我也不确定是否有可能获得赏金(我在上面写了300个代表,因为我真的需要一些东西)。如果你知道怎么做,让我知道


    谢谢

    第一个建议是不要使用旧的ASMX web服务。使用WCF,微软说它应该用于所有新的web服务开发

    其次,您确定不能优化数据库,或者将其放在更快的硬件上,或者放在更靠近web服务器的地方吗


    我不知道你会一次在内存中得到那么多数据。如果可以,那么您可以使用
    数据集
    并使用LINQ to数据集对其进行查询。

    我希望我误解了您所写的内容,但如果

    包含C#Web服务中的所有业务逻辑

    你的意思是你已经朝着反模式的方向走了。通过web服务从ASP.NET应用程序访问数据只会导致您遭受序列化/反序列化惩罚,而几乎没有任何收益

    更好的方法是将要提供的服务组织到应用程序构建的公共层中,并直接从ASP.NET应用程序访问这些服务,还可以将它们公开为Web服务,以允许外部源使用这些数据

    您还可以研究使用定期更新(一次或几次/天)的方法公开计算成本高昂的数据。这将有助于提高数据的读取性能(只要您愿意接受数据有点陈旧)


    这就是您要查找的信息吗?

    谢谢John!在一个从供应商提供的产品中有许多“购买”和“销售”的系统中,你如何管理当前库存的显示,考虑到“库存”实际上是采购-销售,你必须考虑所有的行来计算它吗?您是否会在数据库中缓存“库存”数据以优化性能,即使其数据冗余?我会在数据库中将数据聚合成有用的形式。我可能每晚都这么做。我甚至可以创建一个数据仓库来完成它。我不可能实时计算这些信息。我还将更新您的问题,将您刚才输入的信息包括在评论中。