1

私たちの Web アプリケーションには、非常に遅いデータ集約型の UI ページがいくつかあります。現在使用しているクライアント側の並べ替えとフィルタリングでは、これらのページに API からすべてのデータを (JSON で) ロードしてから、これは通常、ページが使用可能になる前に数秒間フリーズすることを意味します。私たちが検討している解決策は、フィルタリングとソートをサポートするサーバー側のページングを提供することです。

ページングの場合、URL で pageIndex パラメーターと pageSize パラメーターを送信していますが、正常に動作します。ソート (およびフィルタリング) のために、プロパティの名前を送信してソート (およびフィルタリング) し、API で解析してデータの適切なクエリを生成できる JSON オブジェクト内で使用することを考えています。ここで私が抱えている問題は、物事を可能な限りシンプルかつ高速にするために、UI ページが、データを並べ替え (またはフィルター処理) するデータ列名について「認識」する必要があることです。これは望ましくありません。

たとえば、API は「FN」というプロパティ (JSON オブジェクト内) でユーザーの名を送信します。ただし、ファースト ネームでユーザーを並べ替えるように API に要求するには、UI はデータベース内の列の名前である "FirstName" を並べ替えプロパティとして送信する必要があります。このメソッドを使用すると、プロパティの名前をデータ レイヤーに直接渡すことができ、作業をすばやく完了できます。ただし、データベース内のデータ テーブルの列の名前を認識するための UI の必要性は、レイヤー間で関心を分離するという考え全体をほとんど台無しにします (これが、Web アプリを個別の API に分割する主な動機でした)。 UI)。

UI とバックエンドの間にこの依存関係を作成せずに、サーバー側のページングにフィルタリングと並べ替えを提供するクリーンな方法はありますか?

ありがとうございました。

4

1 に答える 1

1

ここではあまり問題はありません。アプリがどのように構成されているか正確にはわかりませんが、2 つの列 (Acol、Bcol) を持つテーブルがあると仮定しましょう。列の名前は、列自体の属性 (Acol: "First name"、"LastName" またはイタリア語で "Nome"、"Cognome"、誰が気にする..) に書き込まれているので、その瞬間にユーザーはいくつかの並べ替えまたはフィルター処理を要求する場合、列の固定名を渡すのではなく、その列の属性に存在する文字列を渡します。そして、列に属性を設定するのは誰ですか? サーバー。

したがって、サーバーは列のエイリアスを設定します(実際の名前は、クライアントのローカライズコンテキストに合わせて変換される場合があります)。クライアントは、サーバーが何をすべきかを知っているため、サーバーに何を意味するのかさえ理解せずに、単にその文字列を渡すだけです。行う。

于 2013-07-01T06:43:59.610 に答える