我使用Caliburn.Micro构建Windows 8.1通用应用程序。该应用程序使用WebSocket连接到Web服务。无论用户在哪个页面上,只要应用程序处于活动状态,我希望此连接一旦建立,就能保持活跃状态。保持WebSocket和一些事件处理程序在应用程序处于活动状态时处于活动状态
目前我正在做这样的:
container = new WinRTContainer();
container.Singleton<IConnectionService, ConnectionService>();
,似乎工作,我想。我可以将其注入到viewmodels中,并且连接仍处于打开状态,即使未注入服务的视图模型处于活动状态,它也会接收消息。但是,如果这是正确的方式(如果它实际上正在做我期望的),我有点好奇吗?
其次,我使用连接管理器来解析从WebSocket连接返回的JSON并创建相应的类,如RandomThingHappened
,并使用Caliburn.Micro的事件聚合器服务广播这些类。对这些感兴趣的人可以订阅并做他们想做的事。但是,无论用户使用哪个视图,都会收到一些我希望处理的消息。这可能吗?我也想过为此创建单例,并且确保在某处实例化这些单例。这似乎有点......有风险。
对此提出建议?
没有与卡利经验,借此与一粒盐,但也许你可以创建视图继承的附加层,以定义实现这些事件一个基本视角? –
这绝对是个好主意@JeroenVannevel,我会试试! – JLe