servicestack,Wpf,servicestack" /> servicestack,Wpf,servicestack" />

Wpf 如何使用servicestack创建联机脱机应用程序

Wpf 如何使用servicestack创建联机脱机应用程序,wpf,servicestack,Wpf,servicestack,我正试图找出如何创建一种离线/在线方法,以便在大型应用程序中使用 现在,应用程序的每个部分都有自己的模型和数据层,它们直接从SQL读/写数据。我的老板要求我创建一种缓冲区,在连接失败的情况下,它可以用来存储数据,直到与SQL的连接返回活动状态 我尝试创建的内容如下:将所有数据层移动到servicestack服务中。每个GET方法都应该查询数据库并将结果存储到缓存中,以便在与SQL的连接不可用时重用。如果连接失败,每个POST和PUT方法都必须执行其操作或将请求存储到缓存中。恢复与SQL的连接后,

我正试图找出如何创建一种离线/在线方法,以便在大型应用程序中使用

现在,应用程序的每个部分都有自己的模型和数据层,它们直接从SQL读/写数据。我的老板要求我创建一种缓冲区,在连接失败的情况下,它可以用来存储数据,直到与SQL的连接返回活动状态

我尝试创建的内容如下:将所有数据层移动到servicestack服务中。每个GET方法都应该查询数据库并将结果存储到缓存中,以便在与SQL的连接不可用时重用。如果连接失败,每个POST和PUT方法都必须执行其操作或将请求存储到缓存中。恢复与SQL的连接后,必须清除此缓存

我怎样才能做到这一点?我的是一个运行在Windows10上的WPF应用程序

致意
Enrico

在服务器上维护缓存不会有助于创建脱机应用程序,因为客户端无法访问服务器以检索这些缓存。相反,您需要的是维护客户端的状态,以便在网络访问丢失时,客户端从其自己的本地缓存加载

从架构上讲,这是使用单页应用程序框架(如+Vuex或+Redux或MobX)的Web应用程序最容易实现的。ServiceStack和应用程序就是一个很好的例子,它们将客户端状态存储在Vue中创建的TechStack的Vuex存储中,或React中创建的Gistlyn的Redux存储中,或使用AngularJS创建的

此签出的好例子是,可以从单个序列化JSON对象恢复整个客户端状态,或者使用初始客户端状态和增量可以跨网络序列化的方法,以实现对多个连接客户端的实时远程控制

它们的开发并没有考虑离线,但它们的体系结构自然会导致具备离线能力,因为每个页面首先从其本地存储加载,然后它会发出更新其本地缓存的请求,这得益于JS SPA fx的反应性,页面将自动更新为服务器的最新版本

消息传递API
HTTP具有同步紧耦合,不适合脱机通信,相反,您想要的是设计编写API,使它们是单向/异步的,这样您就可以在客户机上实现一个消息队列,将请求DTO排队,并通过使用指数退避重新发送它们,将它们可靠地发送到服务器,直到成功无误。然后,对于需要通知客户端其请求已被处理的情况,可以通过或通过客户端长时间轮询服务器来检查其请求是否已被处理。

我想知道在安装应用程序的每台pc上安装servicestack服务是否有帮助。服务器事件通知客户机的想法或多或少与我的想法类似,除了使用signar,因为它的后面板功能。我应该使用哪种队列将请求数据持久化到队列?那换成GET请求呢?我也应该使用相同的队列吗?@Enrico Server Events还有一个可扩展到多个服务器的队列。您可以使用任何C队列集合,即甚至是队列类。我的首选可能是使用BlockingCollection并将其发送到单个后台线程中。MQ仅用于写入,对于GET,让它们填充本地ViewModel状态,绑定到本地状态的UI,然后让GET请求更新相同的本地状态,以便在修改本地状态时自动更新UI。我将介绍该redis解决方案。我放弃了viewmodel中的局部状态的想法,因为我希望有一个不仅仅是内存中的存储,所以我在缓存中考虑service@Enrico不了解没有本地状态/缓存的脱机应用程序是如何实现的。您可以从localStorage加载该状态,例如,Gistlyn会在每次按键时将其本地状态保存到localStorage。非常感谢,在接下来的几周内,我将根据您的建议创建一个poc。