簡體   English   中英

從客戶端到實現線程事件的服務器端應用程序調用方法的最佳實踐是什么?

[英]What is the best practice to call a method from client to a server side application that implements a thread event?

我有這種情況:

具有使用抽象類作為參數的方法的第三方庫:

在服務器端,我可以使用

    public void save(){
    ThirdParty.doSomethingBackground(new Callback() {
    public void done(Exception e) {
    //SOMETHING TO DO
    }
    });
    }

我可以在客戶端執行以下操作來調用此方法:

ServerSide.save()並傳遞了我的CallBack實現,但是我不想從客戶端看到第三方庫,當我更改第三方庫時,我需要對這種情況保持透明。

最佳做法是什么?

TKS

創建一個自定義中介對象,其中包含創建自定義回調實現所需的所有信息。 它類似於一個簡單的DTO。 如果使用某種遠程處理,則該對象將可序列化。

將此中間對象從客戶端傳遞到服務器。 在服務器上,將中間對象轉換為您的Callback實現,然后再調用ThirdParty。

從您的問題尚不清楚您的ThirdParty庫調用是否異步。 如果希望ServerSide.save調用是同步的,並且ThirdParty庫調用是異步的,那么您將希望阻塞服務器線程並等待ThirdParty結果再返回。 一種方法是使用Java 6/7FutureTask類。

如果您不希望ServerSide.save調用是同步的,則可能需要讓客戶端輪詢服務器以在另一個服務器調用中尋找結果,或者設計雙向通信。 但是雙向通信通常要復雜得多,並且在很大程度上取決於您使用的平台/協議/技術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM