HTTP를 사용하는 JSON RPC 인터페이스를 통해 XBMC과 통신하기 위해 C#에서 .NET 라이브러리를 코딩하고 있습니다.C# async http 라이브러리에서 많은 양의 대리인과 usercallback을 관리하는 방법
나는 코드화하여 preliminary version을 릴리스했지만 모든 것은 동 기적으로 수행됩니다. 그때 나는 자신의 목적을 위해 비동기 적으로 라이브러리를 recoded/XBMC remote for WP7 건물입니다.
이제 새로운 비동기 라이브러리를 릴리스하고 싶지만 이전보다 멋지고 정리가 잘되었는지 확인하고 싶습니다.
비동기 특성으로 인해 사용자가 요청을 시작하고 내 대리인과 일치하는 콜백 메서드를 제공 한 다음 응답을받은 후 처리합니다.
내가 가진 문제는 요청의 수명 동안 RequestState 객체를 추적하고, HTTP 요청/응답은 물론 멤버 변수로 사용자 콜백 등을 포함한다는 것입니다.이 경우에만 괜찮습니다. 한 가지 유형의 객체가 돌아 왔지만 사용자가 무엇을 부르는 지에 따라 노래 목록이나 영화 목록 등이 반환 될 수 있습니다.
내 구현은 현재 단일 매개 변수 인 ResponseDataRecieved를 사용합니다. 간단한 개체 - 이것은 나만이 사용하기 때문에 어떤 메소드가 무엇을 반환하는지 알 수 있습니다. 응답을 처리 할 때 객체를 실제로 알고있는 유형으로 캐스팅했습니다 - 목록, 목록 등
제 3자가 이것을하지 않아도됩니다. - 위임자 서명에 올바른 유형의 객체가 포함되어야합니다. 그래서 제 3 자에게 반환 될 수있는 모든 유형의 응답 데이터에 대해 대리인이 필요합니다. 특정 문제는 내부적으로이를 어떻게 적절하게 처리해야합니까? 각기 다른 멤버 변수를 가진 여러 RequestState 개체가 있습니까? 다른 대표들에게? 그건 "느낌"이 옳지 않습니다. 나는 이걸 우아하고 깨끗하게하는 법을 모른다.
덕분에 상세하고 유용한 답변을 얻을 수 있습니다. 나는 여전히 내 머리를 감싸고있는 문제에 대해 어떻게 표현할 것인가? 내 RequestState 객체에 액션을 표현할 때 나는 타입 변수를 멤버 변수로 선언 할 때 타입을 제공해야하지만 실제로는 런타임까지 알지 못한다. 내 문제를 더 명확하게 설명하는 예제 코드를 pastebin'd했습니다. 나는 이것에 대해서 너무 n00b되지 않기를 바란다. (- http://pastebin.com/qjJgFPmV –
Tyler
이제 코드를 살펴보면 일반 유형 매개 변수의 전파가 상당히 많이 보일 것 같아 보인다. 이제 끝내야 겠지만, 나중에 자세히 살펴볼 시간을 찾으려고 노력할 것입니다. 그 동안 다른 사람이 찔러보고 싶어하면 그것을 찾으십시오. :-) – Rytmis
이것은 완전한 예가 아니며 전체 소스 코드가 없기 때문에 내가 잘못 생각한 것일 수도 있습니다. 그러나 XDataReceived 콜백을 적용 할 경우 액션으로 바꿨습니다. –
Rytmis