.NET版TNonblockingServer

时间:2013-02-04 18:27:53

标签: c# .net thrift

是否有针对Thrift的已知.NET版本的异步服务器和协议?特别是我正在寻找用C#编写的TThreadedSelectorServer版本。

我刚刚检查了git存储库,但与Java版本相比,CSharp版本缺少很多东西。

1 个答案:

答案 0 :(得分:0)

有一个RPC框架使用名为" thrifty"的标准thrift协议,它与使用thrift IDL定义服务的效果相同,也就是说,thrify可以与使用的代码兼容thrift IDL,这对跨平台很有帮助,它使用DotNetty(windows是iocp,linux是nio)

[ThriftStruct]
public class LogEntry
{

    [ThriftConstructor]
    public LogEntry([ThriftField(1)]String category, [ThriftField(2)]String message)
    {
        this.Category = category;
        this.Message = message;
    }

    [ThriftField(1)]
    public String Category { get; }

    [ThriftField(2)]
    public String Message { get; }
}

[ThriftService("scribe")]
public interface IScribe
{
    [ThriftMethod("getMessages")]
    List<LogEntry> GetMessages();

    [ThriftMethod]
    ResultCode Log(List<LogEntry> messages);
}

public class Scribe : IScribe
{
    public List<LogEntry> GetMessages()
    {
        return new List<LogEntry>
        {
            new LogEntry { Category = "c1", Message = Guid.NewGuid().ToString() },
            new LogEntry { Category = "c2", Message = Guid.NewGuid().ToString() },
            new LogEntry { Category = "c3", Message = Guid.NewGuid().ToString() }
        };
    }

    public ResultCode Log(List<LogEntry> messages)
    {
        return ResultCode.TRY_LATER;
    }
}

C#:https://github.com/endink/Thrifty 类似的Java可以使用Swift:https://github.com/facebook/swift