在应答之前先阅读!在客户端优化RESTful查询
我有一个RESTful服务,它围绕实体框架。基本上,我所做的只是创建一个数据库,在表之间添加关系,围绕此数据库创建实体模型,并最终将整个事件公开为RESTful * .svc服务。这样做,也不能改变。
现在我需要通过客户端应用程序从它查询数据。我可以访问的只是服务本身。即使我想,我也不能添加任何服务器端代码。服务器现在被锁定。
我需要从名为“ProductVoorwaarden”(产品条件)的表格中检索数据,该表格链接到其他三个表格。 (Rubriek,Categorie和Datatype。)这些数据需要以XML格式返回,其中一个名为“PRODUCTVOORWAARDEN”的根节点以及它自己的XElement中的每个记录都称为“REC”。在此REC中,表中的每个字段都有一个属性,并加上对相关表的引用。这里是我现在的代码:
XElement PRODUCTVOORWAARDEN()
{
XElement Result = new XElement("PRODUCTVOORWAARDEN");
var Brondata = COBA.Productvoorwaarden.OrderBy(O => O.Code);
foreach (var item in Brondata)
{
COBA.LoadProperty(item, "Rubriek");
COBA.LoadProperty(item, "Categorie");
COBA.LoadProperty(item, "Datatype");
XElement REC = new XElement("REC",
Attribute("Rubriek", item.Rubriek.Code),
Attribute("Categorie", item.Categorie.Naam),
Attribute("Code", item.Code),
Attribute("Datatype", item.Datatype.Naam),
Attribute("Eenheid", item.Eenheid),
Attribute("Naam", item.Naam),
Attribute("Omschrijving", item.Omschrijving),
Attribute("UitgebreideTekstVeld", item.UitgebreideTekstVeld),
Attribute("Veld", item.Veld)
);
Result.Add(REC);
}
return Result;
}
此代码工作正常,但速度很慢。它读取所有ProductVoorwaarden记录,但它必须再次对服务器进行往返服务,才能检索Rubriek.Code,Categorie.Naam和Datatype.Naam。 (在数据库中,这些关系由自动增量标识字段设置,但XML代码使用代码或Naam作为参考)。
正如您所想,每次返回到REST服务的行程都会消耗更多时间,我试图避免。那么有什么方法可以在客户端更快地加速这一切吗?
服务器仍在开发中,下一个版本将需要几个月的时间。因此,我必须处理服务器现在提供的选项。 如果没有办法在不修改服务器的情况下加快速度,那很好。至少我已经尝试过了。还有35个表格需要在几天内完成处理,所以如果它能正常工作,那么它就可以工作。