背景描述:

客户的实际情况是需要在具体系统构架前,通过与厂商讨论确定最终的系统架构方案。

需求是客户自己有管理系统,希望建立一个独立的报表服务器,该报表服务器可以对多个管理系统提供报表服务,不知道润乾产品可以提供多少种报表的调用方式可以选择。

其次,希望可以通过API调用报表的某些功能,但是不知道服务器间访问如何调用API接口。

第三,报表访问时,需要防止直接拷贝url访问。而且其他系统调用报表时,也可以配置报表的授权情况。

相应解答:

由于客户需要的并非一个明确的技术答复,而是希望厂商给予架构部署时的参考意见,所以首先需要告诉客户的是润乾报表的基本技术规格,即润乾报表是以J2EE架构下的Servlet形式封装的一种服务类产品,因此所有适合于Servlet部署的方案都可以采用在润乾报表身上。此外,润乾报表的前端输出的可选方式是Taglib、以及调用API输出流两种主要方式,其中Taglib又包括文件方式和Bean方式。此三种方式都可以对应不同的报表调用技术和权限控制技术。

当客户明白润乾报表从底层到底是怎样的一种构成时,就可以引导客户进一步探讨各种技术方案的利弊和可行性,首先从跨服务器调用报表这种需求看,服务器端的选择基本上可以确定为一个Application Server部署润乾报表即可,所以重点是在于作为Client端的其他应用以何种方式来调用,这与其他应用的架构有关,经过了解,可能存在的应用有Java的,.net的以及C/S架构的。应此从调用方式上推荐采用HTML字符流式引用,这样可以以一种标准在多种应用下被调用。

采用流程调用的另外一个特点是适合于客户权限以及API调用的需求。首先在报表服务器上建立登录服务、调用服务、通用JSP接口、报表发布及下载接口以及标准JAVA
RMI的stub以及skeleton。同时设计各种技术体系下访问上述服务的客户端代理(RMI只能在JAVA应用下使用)。其向对应的关系如下:

1、报表服务登录客户端代理—-》报表登录服务

每个需要调用报表的客户应用,在Login过程加入报表服务登录客户端代理调用。

2、报表调用客户端代理—-》报表调用服务

每个需要调用报表的客户应用,在自己系统内部完成权限验证后,调用客户端代理,读入HTML字符流。或者通过客户端代理传入标准身份信息,由报表调用服务完成身份验证。

3、JS直接引用—-》通用JSP

此方式的好处是修改JSP不需要重新打包发布WAR,便于维护。但输出接口方式不够灵活,只能以WEB层进行引用。

4、报表调用客户端代理—-》通用JSP

此方式与上面的好处相同,而且可以封装报表服务器的URL。缺点也与上一方式相同。

5、润乾的RMI客户端stub—-》报表服务器的RMI
skeleton

完成跨服务器的API调用,最灵活的方式。

结合灵活性、安全性、便利性(如尽量减少报表服务器的重部署频率,修改尽量集中在一两个可覆盖文件上)等综合因素,优先考虑的是通用JSP方式以及配套的服务–客户端代理方式。

此外,该架构还要考虑各系统使用者的责权分担问题,大家都希望在一定程度上各自负担自己系统部分的建设,但有不能部署那么多报表服务器,而且还需要有集中管控。所以可以考虑的两种方式,一、在同一服务器上并行部署多个报表应用,各应用将来的维护以及报表的增改都由各系统负责人管理,但这样一些共性修改会涉及到大量的重复工作,而且集中管控难度还是比较大的。二、同一到一个应用中,对外发布不用访问路径以及报表读写通用接口,各系统维护自己的对外接口和报表存放目录,其他的统一管理,这种方式比较理想,但需要各部分先协调完成共性部分,例如对可控项的整理(打印属性、样式集、权限控制点等等)。

最后,性能方案推荐采用专业版的管理控制台进行管理、采用动态并发控制以及集群技术,并在前期设计时考虑将来集群扩充的便利性。

分布式部署下的报表调用 API调用 权限问题以及性能方案的更多相关文章

  1. HBase伪分布式环境下,HBase的API操作,遇到的问题

    在hadoop2.5.2伪分布式上,安装了hbase1.0.1.1的伪分布式 利用HBase的API创建个testapi的表时,提示  Exception in thread "main&q ...

  2. Apsara Clouder专项技能认证:实现调用API接口

    一.API 简介 1.API 的概念 API(Application Programming Interface应用程序编程接口)是一些预定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访 ...

  3. 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习

    反射实现Model修改前后的内容对比   在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...

  4. Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

    项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...

  5. Android微信SDK API 调用教程1

    最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官方里的文档也只是写得很模糊,说是按三步走. 1.申请App_ID 2.填写包名3. 获取程序签名的md5值, 这三 ...

  6. Android微信SDK API 调用教程

     最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官方里的文档也只是写得很模糊,说是按三步走. 1.申请App_ID 2.填写包名3. 获取程序签名的md5值, 这 ...

  7. Android微信SDK API 调用教程【转】

    原文:http://blog.csdn.net/worker90/article/details/8211451 最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官 ...

  8. sphinx调用API参考(官方手册)

    API的参考实现是用PHP写成的,因为(我们相信)较之其他语言,Sphinx在PHP中应用最广泛.因此这份参考文档基于PHP API的参考,而且这节中的所有的代码样例都用PHP给出. 当然,其他所有A ...

  9. Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用

    概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST API,就能够很容易地构建一个增删查改应用.这个应用始终遗留了一个问题,Web App在访问REST AP ...

随机推荐

  1. 【NOIP2016提高组】 Day2 T3 愤怒的小鸟

    题目传送门:https://www.luogu.org/problemnew/show/P2831 说个题外话:NOIP2014也有一道题叫做愤怒的小鸟. 这题自测时算错了eps,导致被卡了精度,从1 ...

  2. rabbitmq使用日记

    一.安装 添加安装源 #echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list ...

  3. C#获取获取北京时间多种方法

    #region 获取网络时间 ///<summary> /// 获取中国国家授时中心网络服务器时间发布的当前时间 ///</summary> ///<returns> ...

  4. HTTP请求头及其作用 转

    HTTP请求头Header及其作用详解 下面是访问的一个URL,http://www.hzau.edu.cn的一个header,根据实例分析各部分的功能和作用. 1.Accept,浏览器端能够处理的内 ...

  5. Vue的watch监听事件

    Vue的watch监听事件 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  6. Android之ListView的使用技巧

    之前有总结过关于ListView的一些优化技巧,比如它的ConvertView的复用Recycler机制,使用ViewHolder来提高列表条目的findById的效率,以及宽高的设置确定值的好处,如 ...

  7. HUE配置文件hue.ini 的yarn_clusters模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  8. jquery插件开发的demo

    (function ($) { $.fn.extend({ "highLight": function (options) { //检测用户传进来的参数是否合法 if (!isVa ...

  9. 本地开启https的nginx配置

    下载证书和key放置在nginx配置文件同级目录下,然后添加配置内容,监听443端口,如果本地443端口被占用,可以使用其他端口测试. server { listen 443; server_name ...

  10. Linux 目录流管理

    目录 1. 打开/关闭文件 1). 打开目录 / opendir 2). 关闭文件 / fclose 2. 读/写目录流 1). 目录流-读 / readdir & readdir_r 3. ...