大概是想用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编写自己的服务端函数就可以了……
- LanguageServer.NET:还在写……
然后前几天在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.
哦…… 😐
看到了 jsonrpc.standard, 留个脚(jue)印
求加QQ和微信,楼主在西安上的学?
没错~另外联系方式已发到你的邮箱。