
上QQ阅读APP看书,第一时间看更新
2.6 案例:自动售货机的库存管理
Grain的状态内聚及虚拟寻址特性非常适合智能家居、安防、线下广告等多终端的服务互联应用。在零售行业中,开发人员仅需实现简单的业务逻辑,即可运用Orleans搭建适用于任意规模的自动售货机网络的库存管理系统。
如图2-7所示,在自动售货终端网络中,各终端通过公有网络与Orleans服务集群进行连接,在用户购买、线下补货时通过调用管理后台服务运行时内部的Grain实例方法增减库存信息,服务管理员可直接在库存管理后台中通过各终端Grain实例进行库存的监测与管理。

•图2-7 基于Orleans的自动售货终端库存管理系统示意图
在Orleans服务端内可以定义以字符串为唯一标识的VendingMachineGrain,每个Vending-MachineGrain的内部通过Orleans持久化状态存储服务维护一个Dictionary<string,int>容器以记录当前售后终端内各类产品的库存,VendingMachineGrain中定义了SellAsync、RestockAsync、ShowInventoryAsync及ListAllInventoriesAsync方法,以对外提供售卖时库存扣减、补货时库存刷新及查询产品库存功能的API。


自动售货终端只需在售卖及补货操作时通过Orleans Client同步调用上述服务接口,即可完成设备信息的互联与同步。
