我有一个通过thrift设置的客户端服务器架构。该服务是用java编写的,而客户端是用php编写的。现在,由于客户可能很多,我想介绍像独特的客户端ID这样的概念。
当前结构使得所有客户端在其末尾具有相同的客户端代码。因此,我确定客户端ID的唯一方法是在发出请求时执行此操作。
由于该服务具有许多公开的功能(> 50),我不想在所有功能中添加客户端Id作为参数(因为这意味着所有客户端的更改)。
有没有一种干净的方法 - 当客户端第一次创建服务对象时,它会发送其Id,它将成为服务线程的全局对象。对于对公开函数的所有后续调用,客户端id因此成为服务线程的全局对象。请指导。
答案 0 :(得分:0)
您可以使用客户端IP地址作为参考。
"how can i get the client's from the thrift server"
看起来像子类化TServerSocket / TNonBlockingServerSocket(以及您选择的服务器类)将允许您从他们管理的套接字中轻松访问IP地址(或主机名)......
答案 1 :(得分:0)
鉴于您只想让clientid在全球范围内可用 - 您应该simply global it。如果它不适合oop模式,你可以使用registry pattern覆盖它,虽然它只是糖衣。