你如何从.NET认证Thrift HBase?

时间:2015-12-16 06:04:42

标签: c# .net hbase thrift

我们有一个.NET应用程序使用Thrift与HBase交谈。 Thrift服务器配置为通过身份验证(Kerberos)。我们有一个密钥表。

我们如何从.NET应用程序实现身份验证?我见过的所有例子都是用Java编写的。有没有人从.NET做过这个?

1 个答案:

答案 0 :(得分:1)

有一个RPC框架使用名为“thrifty”的标准thrift协议,它与使用thrift IDL定义服务的效果相同,也就是说,thrify可以与使用thrift IDL的代码兼容,所以它是跨平台的。

您可以使用其客户端

[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; }
}

ThriftSerializer s = new ThriftSerializer(ThriftSerializer.SerializeProtocol.Binary);
byte[] s = s.Serialize<LogEntry>();

s.Deserialize<LogEntry>(s);



[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;
    }
}

你可以尝试一下:https://github.com/endink/Thrifty