먼저 대답하기 전에 읽으십시오!클라이언트에서 RESTful 쿼리 최적화
나는 Entity Framework를 둘러싼 RESTful 서비스를 보유하고 있습니다. 기본적으로, 내가 한 것은 데이터베이스를 만들고, 테이블간에 관계를 추가하고,이 데이터베이스 주위에 엔터티 모델을 만들고, 마지막으로 전체를 RESTful * .svc 서비스로 노출하는 것입니다. 이 작업은 수행 할 수 없으며 변경할 수도 없습니다.
이제 클라이언트 응용 프로그램을 통해 데이터를 쿼리해야합니다. 내가 액세스 할 수있는 것은 서비스 자체뿐입니다. 원하는 경우에도 서버 측 코드를 추가 할 수 없습니다. 이제 서버가 잠겼습니다.
세 개의 다른 테이블에 연결된 "ProductVoorwaarden"(제품 조건) 테이블에서 데이터를 검색해야합니다. (Rubriek, Categorie 및 Datatype).이 데이터는 루트 노드가 "PRODUCTVOORWAARDEN"이고 XML의 모든 레코드가 "REC"라는 자체 XElement입니다. 이 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을 검색하기 위해 모든 레코드에 대해 서버를 다시 왕복해야합니다. (데이터베이스에서 이러한 관계는 자동 증분 ID 필드로 설정되지만 XML 코드는 Code 또는 Naam을 참조로 사용합니다.)
RESTful 서비스로 돌아 오는 모든 여행은 더 많은 시간을 소비합니다. 나는 피하려고 노력하고있어. 그렇다면 클라이언트 측에서이 모든 것을 좀 더 빠르게 할 수있는 방법이 있습니까?
서버가 아직 개발 중이며 다음 릴리스에는 몇 개월이 더 소요될 것입니다. 결과적으로 서버가 현재 제공하는 옵션을 처리해야합니다. 서버를 수정하지 않고 속도를 올릴 방법이 없다면 문제가 없습니다. 적어도 나는 노력했다. 며칠 내에 처리해야하는 테이블이 35 개 더있어 작동하면 작동합니다.