저는 현재 이전 WCF 클라이언트 / 서버 쌍을 gRpc로 대체하는 작업을 진행 중이며 protobuf-net.Grpc를 코드베이스의 다른 곳에서 광범위하게 사용했기 때문에 protobuf-net.Grpc를 사용하기로 결정했습니다. 그러나 특정 부분에 약간의 문제가 있습니다.
원래 서비스의 일부는 IClientCallback을 사용하여 클라이언트에 이벤트를 효과적으로 보내는 Subscribe 메서드입니다. 일반 gRpc를 살펴보면 서버 스트리밍 방법을 사용하고 서버에 IServerStreamWriter 개체를 저장하고 "이벤트를 발생"하고 싶을 때마다 쓰기를 수행하는 것이 가능할 것 같습니다 (약간 해키는했지만).
그러나 내 인생에서는 IAsyncEnumerable 반환 유형을 사용하여 protobuf-net.Grpc에서 비슷한 작업을 수행하는 방법을 알 수 없습니다. 내가 알아낼 수있는 가장 가까운 것은 루프에서 Task.Wait를 사용하고 이벤트를 "실행"하고 싶을 때 일부 공유 컬렉션을 업데이트하는 것입니다. 그러면 루프가 반환을 확인하고 산출합니다. 하지만 확장 성이 좋지 않은 것 같지만 클라이언트가 더 이상 이벤트를 듣지 않을 때 확실히 구독을 취소 할 수있는 좋은 방법은 없습니다.
이 작업을 수행하는 다른 / 더 나은 방법이 있습니까?
Channel<T>
을 통해 조정할 수 있습니다 AsAsyncEnumerable()
.-기본적으로 생산자 측에서 대기열 역할을하고 소비자에서 시퀀스 역할을합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다