2014-12-04 67 views
2

Thrift听起来很棒,但无法找到一些基本的东西,我习惯在RPC框架(如HttpServlet)。我找不到的东西的例子:会话管理,过滤,上传/下载进度。管理层以上节俭

据我所知,缺少的东西可能是一个在Thrift之上的管理层。如果是这样的话,这样的图层的任何例子?也许AOP(Aspect Oriented)?

我无法想象这样一个编译为所有语言的图层,这就是我的缺失。以会话管理为例,可能有几个客户端都需要进行一些身份验证,并在每个RPC上传递session_id。我希望所有的语言都能使用类似的API。

任何人都知道Thrift的管理层?

+0

查看会话管理相关问题:http://stackoverflow.com/q/22704648/435605 – 2015-02-18 13:12:56

回答

1

所以节俭本身并不会在这里帮助你很多。 我有类似的欲望,有几个建议:

1.把你的管理对象到IDL

只需添加一个API令牌或共同传输数据结构作为参数传递给所有的服务方法。将其设置为参数ID 15,以便它始终是最后一个参数,即使在中间添加其他参数也是如此。

作为您的处理程序的第一步,您可以验证/存储/做任何与额外的数据。

这样做的好处是它可以在任何支持节点的平台上使用。

2.通过HTTP

如果您使用HTTP作为您使用的运输节俭,你可以根据需要为HTTP头,和节俭内容身体包括任何数据。

这通常需要用于注入数据的每个平台的自定义http客户端以及服务器上使用数据的自定义处理程序,但这两者都不是非常困难。

3.哈克协议

它可以创建一个包装另一种协议并注入自定义数据自定义的协议。看看多路复用协议如何在大多数语言的节俭库中工作: c# here.它通过电线发送方法名称为service:method。多路复用处理器展开这种编码并将其传递给适当的处理器。

我已经使用类似的方法来编码方法名称内的任意键/值对(如http头)。

这样做的缺点是您需要为每个将要使用的平台编写更复杂的扩展。一旦。它从语言到语言都会有所不同,但是一旦你想出来一次就足够简单了。


这些只是我的一些想法,我相信还有其他的。节俭的好处在于各个组件是如何相互分离的。如果您有特殊需求,您可以根据需要将它们中的任何一个交换出来以添加特定功能。