문제

WCF의 NET.TCP 바인딩으로 웹 서버에서 분리 된 LINQ2SQL을 사용하는 계층화 된 응용 프로그램의 개발에 관여합니다.

내 질문은 다음과 같습니다.

  1. 최고의 성능을 달성하기 위해 어떤 종류의 조치를 취해야합니까?
  2. LINQ에 의해 반환 된 엔티티 오브젝트는 매번 직렬화 할 수있는 ienumerable 목록으로 변환해야 하므로이 종속성을 제거 할 수 있습니까?
도움이 되었습니까?

해결책

1) 적절하게 정규화 된 데이터베이스 설계에 집중하십시오. 코드 대 데이터베이스 디자인에서 디자인 트레이드 오프를해야 할 때 성능이 목표 인 경우 데이터베이스 디자인 대신 객체 디자인에서 트레이드 오프를 만드십시오. LINQ에서 SQL과 함께 작동하는 적절한 슈퍼 타입/하위 유형 데이터베이스 디자인을 수행 할 수 없다는 것을 이해하십시오 (대신 EF를 대신 사용해야한다고 말합니다).

2) 여기서 의미하는 바에 따라 다릅니다. 와이어에서 익명 클래스를 연속화하는 방법을 묻는다면 쉬운 대답은 "할 수 없으므로 시도하지 마십시오"입니다. 와이어에 객체 목록을 넣으려면 ienumerable 컬렉션의 ToArray () 확장 메소드를 사용하여 와이어 위의 비즈니스 객체의 배열을 선박으로 사용하십시오.

다른 팁

LINQ에서 SQL은 쿼리를 컴파일하지 않으면 매우 느립니다. 그렇지 않으면 대부분의 시간이 발현 트리를 SQL로 변환하는 데 소비되므로 응용 프로그램은 CPU 묶입니다.

컴파일 된 쿼리를 사용하는 경우 10 배의 성능 게인에 대해 이야기하고 있습니다. 시도 해봐 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top