1

在我们的 Web 应用程序中,我们有一些非常慢的数据密集型 UI 页面,我们现在使用的客户端排序和过滤迫使这些页面从 API 加载所有数据(以 JSON 格式),然后执行浏览器中的操作,这通常意味着页面在准备好使用之前会冻结几秒钟。我们正在研究的解决方案是提供支持过滤和排序的服务器端分页。

对于分页,我们在 URL 中发送 pageIndex 和 pageSize 参数,它工作正常。现在对于排序(和过滤),我们正在考虑发送属性的名称以在 JSON 对象中进行排序(和过滤),该 JSON 对象可以由 API 解析以生成正确的数据查询。我在这里遇到的问题是,为了使事情尽可能简单和快速,UI 页面将必须“知道”它们想要对数据进行排序(或过滤)数据的数据列名称,这是不可取的。

例如,API 在名为“FN”的属性(在 JSON 对象中)中发送用户的名字;但是,要让 API 按名字对用户进行排序,UI 必须发送“FirstName”作为排序属性,它是我数据库中列的名称。这种方法允许我将属性的名称直接传递给我的数据层并快速完成工作。然而,UI 需要识别数据库中数据表的列名,这几乎颠覆了在层之间分离关注点的整个想法(这是我们将 Web 应用程序分解为单独的 API 和用户界面)。

有没有一种干净的方法来为服务器端分页提供过滤和排序,而不会在 UI 和后端之间创建这种依赖关系?

谢谢你。

4

1 回答 1

1

在这里看不出太大问题。不知道的应用程序的结构如何,但假设我们有一个包含 2 列(Acol、Bcol)的表。列的名称是写在列本身的属性(Acol:“First name”,“LastName”或意大利语“Nome”,“Cognome”,谁在乎..)中,所以在某些时候用户方式请求排序或过滤,您不传递列的固定名称,而是传递该列的属性中存在的字符串。谁在列上设置属性?服务器。

因此服务器为列设置别名(真实姓名,可能被翻译以适应客户端的本地化上下文),客户端所做的只是简单地传递该字符串,甚至不了解它对服务器的用途,因为服务器知道要做什么做。

于 2013-07-01T06:43:59.610 回答