16

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 呼び出しに役立ちますか?

4

1 に答える 1