突然重复造轮子

大概是想用C#写一个language server给VsCode用,然后发现需要在C#中解析JSON RPC请求。之前在GitHub上大概找了一下,发现貌似有现成的轮子可以用,然而……

  • vscode-dotnet:自带JSON RPC解析的language server。对输入流的支持不太好,看了一下源代码,如果服务器在一次Read的时候不小心多读进来了一些文本,那这些多读进来的内容会被直接丢掉。另外,这个类库使用事件来实现RPC方法,不支持异步和取消。
  • JSON-RPC.NET:给横幅赞一个。问题是,没法在.NET Standard底下用……另外,不支持异步,同时,对writer的封装不是很够。而且,这个类库貌似并不包含客户端代码。我错了,客户端代码在这里

那么,我们可以愉快地造轮子了……

  • JsonRpc.Standard:封装了一些和 Stream相关的MessageReader/MessageWriter,提供了类似于ASP.NET中控制器的服务端编写体验。支持同步/异步函数实现。对于客户端,你可以直接编写一个接口,对它们分别施加 JsonRpcMethod特性,然后就可以使用类库提供的Builder自动生成一个实现好的JSON RPC代理,调用接口即可实现RPC。

在此基础上,我可能会编写一个.NET Standard的language server protocol类库。但后来我发现,似乎这个类库中只要包含protocol中涉及到的数据结构就可以了,因为调用啥的全被上面的JsonRpc涉及了。到时候实现language server的时候,根据protocol编写自己的服务端函数就可以了……

然后前几天在M$的GitHub主页上搜出来了这个……

  • vs-streamjsonrpc:The StreamJsonRpc library offers JSON-RPC 2.0 over any .NET Stream, with additional features used by Visual Studio and other applications.

哦…… 😐

发布者

CXuesong

CXuesong

给我一点点考虑的时间。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*