듀플렉스 서비스를 중단해야하며 대규모 전송을 하나의 서비스로 캡슐화하고 다른 서비스에서 가져 오려고합니다. 이전에는 하나의 서비스에서이 모든 것을 사용했지만 크기/메모리 조정을 위해 버퍼링에서 스트리밍으로 전환해야합니다. 몇 가지 질문이 있습니다. here과 here하지만 꽤 오래된 것입니다.서비스간에 데이터 공유
namedPipe는 서비스간에 IPC로 무엇을 사용합니까?
서비스 및 A 내가 서비스 B로 유지하고 싶은
이제이 잘 작동하고,이 방법 Guid Upload(stream)
, Stream Download(Guid)
를 노출하고 net.tcp 스트리밍을 사용? 이것이 명명 된 파이프 WCF일까요?
서비스 C -> 비즈니스 레이어 ->서비스 BGuid
와 함께
내 질문/서비스 B 지속성을 위해 사용하는 것입니다, 검색 및 B에 다시 항목을 계산 지속 할 고객의 관점에서
는
- 클라이언트
ServiceA_Proxy.Upload(someLargeItem)
수익을 호출Guid
- 클라이언트는
ServiceC_Proxy.DoSomeWork(GuidFromCall_1)
- 클라이언트는 다음 최종 사용자에
ServiceA_Proxy.Download(GuidFromCall_1)
- 클라이언트 디스플레이를 호출 통화
에는 양방향 파이프와 스트리밍이 필요할 때 "버퍼 된 통신에서 스트리밍 통신으로 전환 할 때 논리를 더 많은 서비스로 분할 할 필요가 없습니다"라는 예가 있습니다. 모든 것이 ServiceC에서 수행되었지만 업로드가 너무 커서 캐시를 버퍼링 할 수 없으므로 중앙 캐시가 갈 길이 란 뜻인 것 같았습니다 – Eric
업로드 한 파일의 크기는 얼마나됩니까? 전송이 끝난 후 문제를 메모리로 전송하는 방식으로 전송합니까? 스트리밍과 듀플렉스를 모두 사용할 수는 없지만이 경우 듀플렉스 대신 요청 재생을 사용하도록 솔루션을 다시 설계해야합니다. – surfen
500MB - 업/다운을위한 2GB. 하나의 서비스 였을 때, 업로드 청크에 대한 콜백을 사용하여 처리하고 완료했으며 나중에 Dictionary를 사용하여 검색했습니다. 우리가 계약했을 때이 크기는 고려되지 않았으므로 100MB보다 큰 테스트를 거쳤으므로 이제 OOM 예외가 발생합니다. 빠른 수정을 찾고 있었지만 이것이 매우 일루스러운 일이되었습니다. –
Eric