[英]Share data between services
我需要分解我的雙工服務,並希望將大量傳輸封裝到一個服務中並從其他服務中檢索。 我曾經在一項服務中擁有這一切,但現在需要從緩沖切換到流式傳輸以考慮大小/內存調節。 我在這里和這里看到了一些問題,但它們已經很老了
對於服務之間的 IPC,namedPipe 我會使用什么?
服務 A公開了 2 種方法Guid Upload(stream)
, Stream Download(Guid)
和 uses.net.tcp streaming,這運作良好,
現在我想堅持服務B ? 這會是 namedPipe WCF 嗎?
Service C --> Business layer --> Service B with Guid
,檢索並計算item,持久化回B
我的問題是持久性/服務 B使用什么
從客戶的角度
ServiceA_Proxy.Upload(someLargeItem)
返回Guid
ServiceC_Proxy.DoSomeWork(GuidFromCall_1)
ServiceA_Proxy.Download(GuidFromCall_1)
是的,您可以將命名管道用作WCF 綁定,只要通信進程在同一台服務器上運行即可。 基本上,您創建 WCF 服務就像使用任何其他綁定(如 TCP/IP)一樣,但您需要配置端點以使用netNamedPipeBinding
。
如果您想保留/保存數據,則可以根據您的要求將其保存到文件甚至數據庫中。 如果您只想保留數據直到 ServiceC 調用它,那么Dictionary<Guid, SomeLargeItem>
就足夠了。
所以你的流程看起來像:
我不確定我沒有把事情搞砸。 如您所見,這變得相當復雜。 您需要問問自己,這是通往 go 的路,如果以這種方式拆分您的服務真的會讓它更具可擴展性嗎? 您計划使用 NamedPipes,因此所有處理仍將在同一台機器上進行。
你真的應該考慮你的設計。 也許將功能拆分為一些 *.dll 並直接調用它們就足夠了? 這樣您將實現層的邏輯分離。 從緩沖通信切換到流式通信不需要您將邏輯拆分為更多服務。
如果您想要真正的可伸縮性,請考慮使用隊列(例如MSMQ )並為每個服務使用單獨的機器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.