3

埋め込み RavenDB を使用してデータを格納する Asp.Net MVC3 アプリケーションがあります。ビューには、コントローラーによって次の方法で作成された json データが必要です。

    public ContentResult Data()
    {
        var res = JsonConvert.SerializeObject(DocumentSession.Query<DataObject>());
        return new ContentResult { Content = res, ContentType = "application/json" };
    }

すべて正常に動作しますが、JSON 形式で DB に格納されたデータが POCO でシリアル化されてから再度逆シリアル化されるため、効率が悪いように思えます。

埋め込まれたデータベースから直接jsonデータを取得するより直接的な方法はありますか?

4

1 に答える 1

7

まったく非効率ではありません。内部的には、raven は実際に BSON を使用していることに注意してください。そのため、とにかく変換​​する必要があります。また、メタデータ フィールドもあります。コントローラーを介して直接返す場合、データの応答を整形して不要なフィールドを削除する機会はありません。

この考え方を続けなければならない場合、次の 2 つの選択肢があります。

  1. DocumentStore.DatabaseCommands.Get() および関連する操作を使用して、JSON を変換できる RavenJObjects を返すことができます。

  2. Raven クライアントを使用せずに、HTTP 経由で Raven データベースと直接通信できます。

これらはどちらも簡単ではなく、Raven Client API の多くの利点を捨てていることになります。私見、あなたが達成しようとしていたパフォーマンスの向上は目立たないでしょう。私はあなたの現在のアプローチに固執します。

また、ここでシリアル化する必要がないようにしたい場合は、ContentResult の代わりに JsonResult を返すことを検討してください。代わりに Json.Net を使用する場合 (他の最近の投稿によると)、これを行うためのよりクリーンな方法は次のとおりです 。 and-json-net.aspx

于 2012-09-28T19:36:26.363 に答える