0

우리는 WCF 서비스를 통해 자체 추적 엔티티를 사용하고 있습니다. 엔티티는 Navigational 특성을로드하지 않고 클라이언트로 리턴됩니다.엔티티 탐색 속성을 WCF 서비스를 통해 미리로드하거나 지연로드해야합니까?

모든 탐색 속성을 한 번에 보내거나 필요에 따라 게으른로드하는 것이 더 좋은 생각입니까? 게으른로드 된 경우 비동기 적으로로드하는 것이 좋습니다. 지금까지 가지고있는 모든 WCF 서비스 호출은 await/async 키워드를 사용합니다.

일부 개체는 항상 사용되지 않는 탐색 속성이 많기 때문에 한꺼번에로드하는 것에 대한 우려가 있습니다. 예를 들어, Consumer 엔티티는 현재 약 20 개가 있으며 더 많은 정보를 얻을 것으로 예상됩니다. 몇 가지 예에는 주소, 전화, 문서 및 메모가 포함됩니다. 사용자는 자신의 작업 영역을 설정할 수 있으므로 문서 작업자는 Consumer가로드 될 때 항상 Documents 속성이 필요할 수 있지만 대부분의 사람들은 그렇지 않습니다.

답변

1

정말 엔티티 사용 방법에 따라 다릅니다. 가장 비용이 많이 드는 것은 서비스로의 왕복 이동이므로 대부분의 시나리오에서 사용되는 탐색 속성이 있으면 열심히로드 할 수 있지만 때때로 사용되는 탐색 속성의 경우에는 "지연로드"를 사용할 수 있습니다. 질문에 대한 실제 답변은 응용 프로그램 및 성능 테스트의 중요한 분석을 통해서만 제공 될 수 있습니다.

내가 조금 두려워하는 것은 그러한 모델을 업데이트하는 방법입니다. 일단 모든 관련 엔터티를로드하고 그 중 하나의 개체 그래프를 만들면 그래프의 일부만을 서비스로 다시 보낼 수 있습니까? 나는 네가 그럴 수 없다고 기대한다.

편집 :

나는 "동적 UI '와 다른 질문을 읽어 보시기 바랍니다. 따라서 사용자가 응용 프로그램을 시작하면 어떤 UI 위젯을 표시해야하는지 알 것입니다. 현재 열려있는 위젯에 필요한 모든 탐색 속성에 대한 설명을 전달하고 새 위젯을 열 때 다른 속성을로드하는 초기 메서드를 노출 할 수 있습니다. 위젯을 추가하기 만하면 데이터를 가져 오는 데 약간의 시간이 걸립니다. 여전히 더 작은 네비게이션 데이터가 자동으로 포함될 수 있습니다.

+0

실제로 업데이트를 개별적으로 수행 할 계획이었습니다. 개체는 앱의 특정 영역이 열리는 경우에만 편집 할 수 있으므로 데이터를 업데이트하기 위해 별도의 호출을 할 수 있습니다. 나는 별도의 호출을 통해 데이터를 얻을 수 있다고 생각하지만 일부 데이터는 종종 편집 화면이 아닌 다른 곳에서 볼 수 있으며'Consumer.GetDocuments() '를 호출하는 대신'Consumer.Documents'에 바인딩하는 것이 더 쉽습니다. '처음 – Rachel