내가 뭔가 명백한 것을 놓친 경우 사과를 많이 검색했습니다. 그리고 아래의 looong 텍스트를 읽어 주셔서 감사합니다.Silverlight에 제 3 자 인터페이스 (WCF 이상) 공개
제 3 자 (읽기 : 소스에 액세스/변경할 수 없음) 애플리케이션이 있습니다. 원격 처리를 통해 서버와 통신하는 서버 (Windows 서비스)와 API로 구성됩니다. 여러 가지 이유로 WCF에서이 API를 노출하고 싶습니다 (제목 : WCF 클라이언트가 하나 인 이유 참조).
문제가의 API가
- 불변 더 WCF 자체를 사용하지 않고 (제 3 자 규칙 다음)
- 이 (가 직렬화/MarshalByRef 필요한 경우 원격에 대한)
- 인터페이스를 많이 사용하고 1 다음 내부 구현 클래스는
나는 WCF 자신을 속성 (매우 방해)를 사용할 수 없습니다.
다음은 API 자체가 "over the wire"(TCP 및 HTTP를 통한 원격 지원)로 사용될 수 있지만 원격으로는 충분하지 않습니다.
다음 3 나는 대부분 인터페이스가 있습니다 (WCF는 잘 처리되지 않으며 직렬화 할 수 없습니다). 구현 클래스를 전송할 수는 있지만 액세스 할 수 없습니다. 일반적인 사용 등등
var entryPoint = new ApiClientEntryPoint();
entryPoint.SomeMethodCall();
entryPoint.PropertyExposingAnInterface.SomeOtherMethodCall();
와 같은, 그래서
이 API의 일반적인 사용은, 단일 인터페이스 (및 그 구성원/속성)을 기반으로합니다.
내가하고 싶은 것은 WCF를 통해 공개하고 모든 호출/속성에 대한이 계층 매핑을 직렬화하는 프록시 (가능한 한 적은 노력/가능한 코드) (보통 WCF 의미가 아닌)를 생성하는 것입니다. 클라이언트가 서버의 실제 내용으로 이동합니다.
내가 지금까지 와서 가장 가까운 것은 this project에 걸림돌이되지만, 내 어깨에서이 부분의 큰 부분을 차지하는 더 많은/다른 도구가 있는지 궁금합니다.
일반적인 다른 조언이있는 경우 WCF에 기존 또는 변경 불가능한 항목을 래핑하는 더 나은 방법을 알려주십시오.
그건 내가 특별히 피하려고하는 것입니다.이 API의 표면은 다소 큽니다. 단일 SL 클라이언트에 대해서만 제한 할 수 있지만 전체 API를 노출시키지 않고 재사용 할 수 없습니다. 제안하는 것처럼 수동으로 모든 것을 프록 싱하는 것은 너무 많은 작업입니다. 자동 생성 된 도움말이 필요합니다. RIA 서비스 : 확실하지 않으므로 확인하십시오. 하지만 오히려 데이터베이스 중심으로 보였습니다. –
RIA Services는 데이터베이스 중심이 아닙니다. .NET 객체를 노출 할 수 있습니다. 그러나 API가 너무 커서 특정 메소드로 프록시 할 수 없다면 여기서는 도움이되지 않습니다. 파사드가 작동하지 않을 때 내 대답을 편집하여 조언을 제공합니다. – RationalGeek
다음 주셔서 감사합니다. 예, API는 .Net 기반입니다. 예, 나는 그런 것을 생성하려고 시도 할 수 있습니다 (그리고 그것이 유일한 옵션 인 것 같습니다). 이 일을두고 다른 날을 보낸 다음 내 운명을 받아 들일 것입니다. –