web-services - 定期消费网络服务而不是频繁消费

标签 web-services

我有一个用 JavaFX 编写的桌面应用程序(客户端),用于执行操作。

用户通过单击开始按钮开始操作,执行不同的条目并停止操作。

在操作期间,客户端从 Web 服务(在 Java 服务器上公开)获取数据。

大部分数据每年在服务器上更新。 目前,我在每次操作期间都会访问所有 Web 服务(大多数 Web 服务返回与每年数据更改相同的数据)

//following function is called on operation start
getMataDataFromServer() {
    List<ShiftDetail> shiftDetails = getShiftDetailsFromServer();
    List<Day> weeklyOffDays = getWeeklyOffDayMetadata();
    List<Day> holidays = getHolidayMetaData();
    //and so on like 8 different meta data of large size which slow down response time.

}

这个问题有没有最好的解决方案,因为我不想在每次操作期间都访问年度网络服务。

或者我可以执行 Web 服务缓存吗?

最佳答案

为了减少操作周期时间和较大的响应时间,我在客户端引入了 SQLite 数据库。

为每个元数据(例如假期、轮类详细信息、休息周等)以及主元数据表创建了表格。

在服务器端编写新的 Web 服务来提供元数据 Web 服务的上次更新时间。

在每次操作期间,使用上次更新的 Web 服务来检查数据在操作开始后是否发生更改。

fetchAndSaveMetaDataLastUpdatedInfo() {
    List<MetaData> metdataList = fetchMetaDataLastUpdatedInfo();
    // Saving meta data last updated info to local db
    saveMetaDataLastUpdatedInfoToLocalDB();
}

在使用每个 Web 服务时,检查上次更新时间并相应地从本地数据库或 Web 服务获取数据。

private List<ShiftDetail> fetchShiftDetails(){
    boolean fetchShiftFromDB = isMetaDataLastUpdatedAfterOperationStart(Constant.SHIFT);
        List<ShiftDetail> shiftDetails;
        if (fetchShiftFromDB) {
            shiftDetails = fetchShiftDetailsFromLocalDB();
        } else {
            shiftDetails = fetchShiftDetailsFromServer();
        }
        return shiftDetails;
    }

关于web-services - 定期消费网络服务而不是频繁消费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40236914/

相关文章:

java - Restful Web 服务字符串响应

c# - 我无法控制的两个第三方类的通用接口(interface)。外部多态性?

java - 如何在 Spring MVC 中回滚 Web 服务

web-services - 通过API仅更新PrestaShop产品的指定字段

jquery - 在 Jquery ajax 调用上传递多个参数时出错?

JavaScript 并行性

java - Android - 使用 ksoap2 使用 wsdl webservice 进行登录身份验证

.net - WCF HTTPS 证书实现问题

r - 如何使用opencpu在R中传递参数

c# - 在 Java 中使用 WCF .svc WebService