使用客户端报告与服务器端报告?

时间:2022-02-13 16:25:11

When do we use client side reporting and when do we use server side reporting?

我们何时使用客户端报告以及何时使用服务器端报告?

Which reporting is best practice (client/server)?

哪种报告是最佳做法(客户端/服务器)?

This pertains to SSRS reporting.

这与SSRS报告有关。

4 个解决方案

#1


3  

Well... client side reporting you'd use if you've got something like a winforms client that you can't guarantee will have constant access to the data source. It might have a set of data cached on the client side which you need to report on even if the connection to the server is unavailable.

嗯...客户端报告你使用如果你有一个winforms客户端,你不能保证将持续访问数据源。它可能在客户端缓存了一组数据,即使与服务器的连接不可用,您也需要报告这些数据。

Server side reporting you'd use in the scenario where you either need to simplify the report distribution and deployment as you just deploy the reports to one place and everyone can access them. This has the downfall of always requiring a connection be available to the server

服务器端报告您在需要简化报告分发和部署的方案中使用,因为您只需将报告部署到一个地方,每个人都可以访问它们。这总是要求服务器可以使用连接

#2


2  

Client side reporting is also handy when you have a client gathering data from very different sources. We have an in-house corporate application that calls internal services to get data from financials as well as our separate production database, and it combines them into a single dataset which it passes to a ReportViewer control.

当客户端从不同的来源收集数据时,客户端报告也很方便。我们有一个内部企业应用程序,它调用内部服务以从财务数据和我们单独的生产数据库中获取数据,并将它们组合成一个数据集,并将其传递给ReportViewer控件。

From an aesthetic point of view, it's nice to integrate reporting into an application so that the user doesn't feel that they're leaving the app to print or export the app's data.

从美学的角度来看,将报告集成到应用程序中是很好的,这样用户就不会觉得他们离开应用程序打印或导出应用程序的数据。

#3


1  

Client site reporting

客户站点报告

If one of the following is true then you should use client site reporting:

如果满足以下条件之一,那么您应该使用客户端站点报告:

  • If you have the data only on the client and not in the network or on the server. This is mostly true for desktop applications.
  • 如果您的数据仅在客户端上,而不在网络中或服务器上。这主要适用于桌面应用程序。

  • There is no server (Home systems).
  • 没有服务器(家庭系统)。

Server site reporting

服务器站点报告

If one of the following is true then you should use server site reporting:

如果满足以下条件之一,那么您应该使用服务器站点报告:

  • The data is on the server or on a static place in the network.
  • 数据位于服务器上或网络中的静态位置。

  • You only have thin clients.
  • 您只有瘦客户端。

  • The reporting should be scheduled.
  • 应安排报告。

  • The license cost for a single server is smaller than for many desktop installations.
  • 单个服务器的许可证成本比许多桌面安装的许可证成本要小。

  • Report templates are shared and can change frequently.
  • 报告模板是共享的,可以经常更改。

#4


0  

It depends what you call "server" in this case. As you mention SSRS I am assuming you consider the database (SQL Server) as the server.

这取决于你在这种情况下所谓的“服务器”。正如您提到的SSRS,我假设您将数据库(SQL Server)视为服务器。

It all depends on the application/project structure and requirements. If you have a database that contains also the business logic (store procedures) and you simply want to query data and display/export it, then SSRS is handy.

这完全取决于应用/项目结构和要求。如果您的数据库还包含业务逻辑(存储过程),并且您只是想查询数据并显示/导出它,则SSRS非常方便。

However if you have a web application with your persistence layer (database) that simply stores information and ensures the information is consistent, but then your business logic is for example in a Web API (i.e: a RESTful API project) that queries/maintains the database data (CRUD) and adds some logic and then responses to HTTP requests with the results/information requested (i.e: with JSON) to a rich front-end, then I would add reporting functionality at client-side (front end) with for example a Javascript library executed in the browser that is able to display the retrieved data in whichever way, it is able to export it to a DOC, Excel, Email it, etc.

但是,如果您的Web应用程序的持久层(数据库)只是存储信息并确保信息一致,那么您的业务逻辑就是在Web API(即:RESTful API项目)中查询/维护数据库数据(CRUD)并添加一些逻辑然后响应HTTP请求,请求结果/信息(即:使用JSON)到丰富的前端,然后我会在客户端(前端)添加报告功能for例如,在浏览器中执行的Javascript库能够以任何方式显示检索到的数据,它能够将其导出到DOC,Excel,Email it等。

Separation of concerns for a typical Web Application:

分离典型Web应用程序的关注点:

  • persistence layer (Database) to store information and guarantee consistency
  • 持久层(Database)来存储信息并保证一致性

  • business layer (Back end RESTful API) to do all the smart things on the resources, calculations, authentication, authorization for each HTTP request.
  • 业务层(后端RESTful API)在每个HTTP请求的资源,计算,身份验证和授权上执行所有智能操作。

  • Rich front-end (Javascript + HTML + CSS) to interact with the user and request/display information to the back-end. As part of the concern of displaying information, this front-end would also generate reports.
  • 丰富的前端(Javascript + HTML + CSS)与用户交互并向后端请求/显示信息。作为显示信息的关注的一部分,该前端还将生成报告。

#1


3  

Well... client side reporting you'd use if you've got something like a winforms client that you can't guarantee will have constant access to the data source. It might have a set of data cached on the client side which you need to report on even if the connection to the server is unavailable.

嗯...客户端报告你使用如果你有一个winforms客户端,你不能保证将持续访问数据源。它可能在客户端缓存了一组数据,即使与服务器的连接不可用,您也需要报告这些数据。

Server side reporting you'd use in the scenario where you either need to simplify the report distribution and deployment as you just deploy the reports to one place and everyone can access them. This has the downfall of always requiring a connection be available to the server

服务器端报告您在需要简化报告分发和部署的方案中使用,因为您只需将报告部署到一个地方,每个人都可以访问它们。这总是要求服务器可以使用连接

#2


2  

Client side reporting is also handy when you have a client gathering data from very different sources. We have an in-house corporate application that calls internal services to get data from financials as well as our separate production database, and it combines them into a single dataset which it passes to a ReportViewer control.

当客户端从不同的来源收集数据时,客户端报告也很方便。我们有一个内部企业应用程序,它调用内部服务以从财务数据和我们单独的生产数据库中获取数据,并将它们组合成一个数据集,并将其传递给ReportViewer控件。

From an aesthetic point of view, it's nice to integrate reporting into an application so that the user doesn't feel that they're leaving the app to print or export the app's data.

从美学的角度来看,将报告集成到应用程序中是很好的,这样用户就不会觉得他们离开应用程序打印或导出应用程序的数据。

#3


1  

Client site reporting

客户站点报告

If one of the following is true then you should use client site reporting:

如果满足以下条件之一,那么您应该使用客户端站点报告:

  • If you have the data only on the client and not in the network or on the server. This is mostly true for desktop applications.
  • 如果您的数据仅在客户端上,而不在网络中或服务器上。这主要适用于桌面应用程序。

  • There is no server (Home systems).
  • 没有服务器(家庭系统)。

Server site reporting

服务器站点报告

If one of the following is true then you should use server site reporting:

如果满足以下条件之一,那么您应该使用服务器站点报告:

  • The data is on the server or on a static place in the network.
  • 数据位于服务器上或网络中的静态位置。

  • You only have thin clients.
  • 您只有瘦客户端。

  • The reporting should be scheduled.
  • 应安排报告。

  • The license cost for a single server is smaller than for many desktop installations.
  • 单个服务器的许可证成本比许多桌面安装的许可证成本要小。

  • Report templates are shared and can change frequently.
  • 报告模板是共享的,可以经常更改。

#4


0  

It depends what you call "server" in this case. As you mention SSRS I am assuming you consider the database (SQL Server) as the server.

这取决于你在这种情况下所谓的“服务器”。正如您提到的SSRS,我假设您将数据库(SQL Server)视为服务器。

It all depends on the application/project structure and requirements. If you have a database that contains also the business logic (store procedures) and you simply want to query data and display/export it, then SSRS is handy.

这完全取决于应用/项目结构和要求。如果您的数据库还包含业务逻辑(存储过程),并且您只是想查询数据并显示/导出它,则SSRS非常方便。

However if you have a web application with your persistence layer (database) that simply stores information and ensures the information is consistent, but then your business logic is for example in a Web API (i.e: a RESTful API project) that queries/maintains the database data (CRUD) and adds some logic and then responses to HTTP requests with the results/information requested (i.e: with JSON) to a rich front-end, then I would add reporting functionality at client-side (front end) with for example a Javascript library executed in the browser that is able to display the retrieved data in whichever way, it is able to export it to a DOC, Excel, Email it, etc.

但是,如果您的Web应用程序的持久层(数据库)只是存储信息并确保信息一致,那么您的业务逻辑就是在Web API(即:RESTful API项目)中查询/维护数据库数据(CRUD)并添加一些逻辑然后响应HTTP请求,请求结果/信息(即:使用JSON)到丰富的前端,然后我会在客户端(前端)添加报告功能for例如,在浏览器中执行的Javascript库能够以任何方式显示检索到的数据,它能够将其导出到DOC,Excel,Email it等。

Separation of concerns for a typical Web Application:

分离典型Web应用程序的关注点:

  • persistence layer (Database) to store information and guarantee consistency
  • 持久层(Database)来存储信息并保证一致性

  • business layer (Back end RESTful API) to do all the smart things on the resources, calculations, authentication, authorization for each HTTP request.
  • 业务层(后端RESTful API)在每个HTTP请求的资源,计算,身份验证和授权上执行所有智能操作。

  • Rich front-end (Javascript + HTML + CSS) to interact with the user and request/display information to the back-end. As part of the concern of displaying information, this front-end would also generate reports.
  • 丰富的前端(Javascript + HTML + CSS)与用户交互并向后端请求/显示信息。作为显示信息的关注的一部分,该前端还将生成报告。