我使用thrift(版本0.11.0)c#编译器来生成支持异步操作的c#库。命令行如下:
thrift-0.11.0.exe --gen csharp:async Message.thrift
当我启动客户端时,程序会抛出Thrift.Transport.TTransportException
异常并显示消息:
此传输不支持异步操作
客户端代码段:
TTransport transport = new TSocket("localhost", 9090);
TProtocol protocol = new TBinaryProtocol(transport);
MessageService.Client client = new MessageService.Client(protocol);
client.Add(someObject);
由于TSocket
不支持异步操作,因此我检查了Thrift.Transport
命名空间中定义的所有类。似乎它们都不支持异步操作。
我在Java中找到了一个TNonblockingTransport
类,它似乎支持异步操作。 .Net / C#是否有任何等效的节俭传输?
更新
我已经检查了Apache Thrift Language Support。它还不支持C#中的非阻塞服务器。它支持.net core 2.x,因为我使用WPF,所以不适用于我的场景。
答案 0 :(得分:0)
即使您的整个应用程序不是.Net Core(不支持WPF),您也可以使用self
生成器。
使用netcore
生成器创建您应该能够引用的.Net Standard库。我们在三种不同的WPF应用程序中使用此方法。
netcore
名称空间包含具有Thrift.Transports.Client
成员函数的客户端。