这个好复杂,看似什么都干了,又好像啥都没干,想想好多协议好像都是每种样子,看起来简单的事情,涉及到协议却很复杂。就好像大佬写了一个超级复杂的函数,在他看来强大且有用,但是对于那些一直调用函数的我们来说,我们只是看到了这个函数用着真方便,但是要让我们去了解其中的一行行代码可能我们也会疲乏。这里我其实有一个想法,我以后要自己搞一个函数库自己来定义自己的函数,自己用自己调。如果说以后用到别人的函数,我也应该先把它放入自己的函数库中研究一番再用。这主要是因为今天学了这个RPC,感觉现在标准,规范,协议,框架,函数库等等数不胜数,对于一个普通人你想要全部学会没有可能。所以正道应该是学自己用到的并且把它学会,能学一点是一点,慢慢的我认为就会有自己熟悉的一篇小领域,总之不会一下子太迷茫和焦虑。
好了进入正题RPC
这东西实现的功能好像看起来也很简单,就是有服务器里面有个函数,但是你在本地的进程想要去调用它,rpc可以实现在你联网的情况下调用服务器端提供的函数。这个问题放在你面前你会怎么办?1.你得让服务器知道你调用的是哪个函数?2.你得把参数发给服务器吧。3.之后就是网络通信里面的协议。
我以为的过程就是你把函数名字和参数发给服务器,然后服务器找到那个函数,运行把结果返回给你就是了,可能一开始确实是这样。但是服务器这东西他并不是为一个人服务的,那样也没有什么意义,所以要实现你可以调用别人也可以调用,人多了问题就来了,不同的语言,不同的规范,不同的格式等等,服务器他不像人着么聪明,而且语言啥的一躲就算是人也分不过来,所以需要统一格式,不同客户端通过编码成同一种格式发给服务端,这样服务端只需处理一种格式的数据就可以了。同时得让客户端的进程知道服务器有哪些函数需要哪些参数,这就需要服务端提供一个文件__IDL文件来告诉客户端我有哪些函数可以供你调用。最后,再通过相应的协议传给客户端就ok了。这其中过程之复杂还得待我进一步考究,至少大概就是实现这样一个过程,我的理解非常之皮毛,但是其复杂程度让我不愿继续前进。