removed all the footers; formated all the files
This commit is contained in:
23
8.4.md
23
8.4.md
@@ -35,12 +35,12 @@ Go RPC的函数只有符合下面的条件才能被远程访问,不然会被
|
||||
举个例子,正确的RPC函数格式如下:
|
||||
|
||||
func (t *T) MethodName(argType T1, replyType *T2) error
|
||||
|
||||
T、T1和T2类型必须能被`encoding/gob`包编解码。
|
||||
|
||||
T、T1和T2类型必须能被`encoding/gob`包编解码。
|
||||
|
||||
任何的RPC都需要通过网络来传递数据,Go RPC可以利用HTTP和TCP来传递数据,利用HTTP的好处是可以直接复用`net/http`里面的一些函数。详细的例子请看下面的实现
|
||||
|
||||
### HTTP RPC
|
||||
### HTTP RPC
|
||||
http的服务端代码实现如下:
|
||||
|
||||
package main
|
||||
@@ -212,7 +212,7 @@ http的服务端代码实现如下:
|
||||
|
||||
上面这个代码和http的服务器相比,不同在于:在此处我们采用了TCP协议,然后需要自己控制连接,当有客户端连接上来后,我们需要把这个连接交给rpc来处理。
|
||||
|
||||
如果你留心了,你会发现这它是一个阻塞型的单用户的程序,如果想要实现多并发,那么可以使用goroutine来实现,我们前面在socket小节的时候已经介绍过如何处理goroutine。
|
||||
如果你留心了,你会发现这它是一个阻塞型的单用户的程序,如果想要实现多并发,那么可以使用goroutine来实现,我们前面在socket小节的时候已经介绍过如何处理goroutine。
|
||||
下面展现了TCP实现的RPC客户端:
|
||||
|
||||
package main
|
||||
@@ -378,16 +378,13 @@ JSON RPC是数据编码采用了JSON,而不是gob编码,其他和上面介
|
||||
fmt.Printf("Arith: %d/%d=%d remainder %d\n", args.A, args.B, quot.Quo, quot.Rem)
|
||||
|
||||
}
|
||||
|
||||
|
||||
## 总结
|
||||
Go已经提供了对RPC的良好支持,通过上面HTTP、TCP、JSON RPC的实现,我们就可以很方便的开发很多分布式的Web应用,我想作为读者的你已经领会到这一点。但遗憾的是目前Go尚未提供对SOAP RPC的支持,欣慰的是现在已经有第三方的开源实现了。
|
||||
Go已经提供了对RPC的良好支持,通过上面HTTP、TCP、JSON RPC的实现,我们就可以很方便的开发很多分布式的Web应用,我想作为读者的你已经领会到这一点。但遗憾的是目前Go尚未提供对SOAP RPC的支持,欣慰的是现在已经有第三方的开源实现了。
|
||||
|
||||
|
||||
|
||||
## links
|
||||
* [目录](<preface.md>)
|
||||
* 上一节: [REST](<8.3.md>)
|
||||
* 下一节: [小结](<8.5.md>)
|
||||
|
||||
## LastModified
|
||||
* $Id$
|
||||
## links
|
||||
* [目录](<preface.md>)
|
||||
* 上一节: [REST](<8.3.md>)
|
||||
* 下一节: [小结](<8.5.md>)
|
||||
|
||||
Reference in New Issue
Block a user