2009-12-17 2 views
0

저는 잠시 동안 API (웹 서비스의 종류를 감싸는)를 연구하고 있습니다.Lazy/Delay-loading을 API에서 Eager-loading으로 변환하는 가장 좋은 방법은 무엇입니까?

처음에는이 API가 전체적으로 지연/지연로드되도록 설계되었습니다. 이는 웹 서비스를 사용함에있어 고유 한 대기 시간을 고려할 때 사용 가능한 데이터의 작은 하위 집합에만 관심이 있다면 완벽합니다. 그러나 API 사용자에게 열심히로드하는 것이 훨씬 쉬운 몇 가지 사용 사례는 고려하지 않았습니다.

내 질문은 : 당신은 열등하게로드 된 버전의 클래스를 가져 오는 메커니즘이 드문 드문 로딩되는 API를 어떻게보고 싶습니까?

나는 explicit 캐스트로 기울어졌지만, Eager.AsEager(SomeDelayLoadingObject)의 라인을 따라 보이는 것이 더 장황하면 자연 스럽다.

답변

0

나는 실제로 열심히로드되고 싶었던 클래스의 얕은 복사본, 기능적 코드가없고 모든 동일한 속성을 가진 클래스를 작성했습니다.

그런 다음 lazy-> eager 및 eager-> lazy에서 두 개의 암시 적 캐스트를 정의했습니다. 두 유형 모두 모든 특성을 복사했습니다. 필요한 경우 모든로드를 트리거합니다.

나는 이것이 완벽한 해결책이라고 생각하지 않지만 열심히 단순히 유형을 변경하는 것을로드합니다. 코드를 변경할 필요가 없습니다.

0

API가 웹 서비스를 래핑하므로 API가 어느 정도 프록시 역할을합니다. 나는 로딩 동작을 클래스 자체보다는 프록시 자체 나 프록시 컨텍스트의 일종에 둔다.

// Basic: Every operation through the proxy uses Eager loading 
using (var proxy = new ApiProxy(Loading.Eager)) 
{ 
    var result = proxy.DoSomething(); 
} 
관련 문제