デュプレックスサービスを分割する必要があり、大きな転送を1つのサービスにカプセル化し、他のサービスから取得したいと考えています。私は以前は1つのサービスですべてを持っていましたが、今はサイズ/メモリの調整のためにバッファリングからストリーミングに切り替える必要があります。 私はいくつかの質問hereとhereを見ましたが、かなり古くなっていますサービス間でデータを共有
私はサービス間のIPCのために何を使用しますか?
サービスAは今、私はサービスBに固執したい、
を、2つの方法Guid Upload(stream)
を公開Stream Download(Guid)
とnet.tcpストリーミングを使用して、これがうまく機能していますか?これはnamedPipe 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アップ/ダウン。それが1つのサービスだったときに、アップロードチャンクのコールバックを使用して処理して終了し、後で取得するためにDictionaryを使用しました。私たちがこれを縮退したときのサイズは考慮されていませんでした。したがって、100MB以上でしかテストされていませんでした。今はOOMの例外を取得しました。迅速な修正を探していましたが、これはまじめなことになっています –
Eric