Go net/rpc ライブラリのドキュメントを使用すると、生のネットワーク接続または HTTP を介して、ネットワークを介してオブジェクトを公開できます。
HTTP の例
arith := new(Arith)
rpc.Register(arith)
rpc.HandleHTTP()
l, e := net.Listen("tcp", ":1234")
if e != nil {
log.Fatal("listen error:", e)
}
go http.Serve(l, nil)
Raw TCP ネットワーク接続
arith := new(Arith)
rpc.Register(arith)
l, e := net.Listen("tcp", ":1234")
if e != nil {
log.Fatal("listen error:", e)
}
go func() {
for {
conn, err := l.Accept()
go rpc.ServeConn(conn)
}
}
最初のタイプのサーバーを呼び出すには、rpc.DialHTTP("tcp", "127.0.0.1:1234") を使用し、2 番目のタイプのサーバーには rpc.Dial("tcp", "127.0.0.1:1234") を使用します。使用済み。
私の質問は、これら2つは実際にどのように異なるのですか? HTTPサーバーと「生のネットワーク接続」サーバーの実行には、どのような長所/短所がありますか? HTTP を使用して何らかの方法で curl またはブラウザーを介して RPC を実行できますか? HTTP バージョンは言語間の RPC 呼び出しに役立ちますか?