5

私のサーバーの sql データベースに大量の型指定されたデータがある場合、プロトコル バッファを使用してこのデータを dart クライアントに送信するにはどうすればよいですか?

4

1 に答える 1

13

まず、protoc を使用してコンピューターにインストールします。

sudo apt-get install protobuf-compiler

次に、 https://code.google.com/p/goprotobuf/から go プロトコル バッファ ライブラリをインストールします。dartlang のバージョンは、https ://github.com/dart-lang/dart-protoc-plugin にあります。

次のステップは、送信するメッセージの定義を含む .proto ファイルを作成することです。例はhttps://developers.google.com/protocol-buffers/docs/protoにあります。

例えば:

message Car {
    required string make = 1;
    required int32 numdoors = 2;
}

次に、protoc ツールを使用して、この proto ファイルの go ファイルと dart ファイルをコンパイルします。

Go で Car オブジェクトを作成するには、提供されている型を使用することを忘れないでください。

c := new(Car)
c.Make = proto.String("Citroën")
c.Numdoors = proto.Int32(4)

次に、次のように、http.ResponseWriter 経由でオブジェクトを送信できます。

binaryData, err := proto.Marshal(c)
if err != nil {
  // do something with error
}
w.Write(binaryData)

Dart コードでは、次のように情報を取得できます。

void getProtoBuffer() {
    HttpRequest.request("http://my.url.com", responseType: "arraybuffer").then( (request) {
        Uint8List buffer = new Uint8List.view(request.response, 0, (request.response as ByteBuffer).lengthInBytes); // this is a hack for dart2js because of a bug
        Car c = new Car.fromBuffer(buffer);
        print(c);
    });
}

すべてが機能していれば、Dart アプリケーションに Car オブジェクトが作成されているはずです:)

于 2013-09-26T18:45:13.073 に答える