由于REST是一种架构风格,而不是协议,因此它可以应用于大多数协议形式 - 例如websockets。这正是我想要做的,但我希望帮助决定一种方法。
在我做研究时,我发现我可以遵循三种范式:
我希望听到那些有经验走过这些路径的人,他们发现哪些路径最有效,以及他们应用了哪些工具(例如上面提到的SwaggerSocket)。
我所关注的一个主要问题是简化了解复用和反序列化。例如,假设我有一个用Typescript编写的客户端。我可能希望将服务器推送有效负载反序列化为声明的类型对象。我认为每种范式的后果如下:
我的其他想法:SRR可能是三者中最受限制的,因为理论上每个服务器推送都是由客户端请求发起的。另外两种范式没有隐含的模型。事件驱动方法具有与webhook回调类似的概念优势。
为了说明Event Driven / webhook的想法,我将给出一个SignalR示例。
//client side.
hubProxy.On<HttpRequest>("EventNotice", request => {
//Take apart the HttpResponse and dispatch through
//my own routing mechanism...to handlers that
//further deserialize the inner payload.
});
//The corresponding server-push would of course be:
_context.Clients.All.EventNotice(myHttpRequest);
上面的例子非常容易实现。事实上,我不会感到惊讶,有人为此目的提供示例代码(请分享!)甚至是支持库。
同样,在这些不同的范例中,你会建议吗?你会建议哪些支持工具?