远程过程调用

DWR组件——基于远程过程调用实现Ajax

醉酒当歌 提交于 2020-03-02 14:36:19
转载请注明原文地址: http://www.cnblogs.com/ygj0930/p/6686115.html 一:DWR的用途 DWR(Direct Web Remoting)是一个Web远程调用框架,会根据java类动态生成javascript代码。 二:DWR实现Ajax的原理 DWR是基于远程过程调用的组件,可以在浏览器端远程调用服务端的业务函数,并获取返回结果。而我们知道,浏览器端是不能直接运行Java代码的,但是可以运行JavaScript代码。DWR的作用就是:把服务端的业务函数转化成JS函数,然后在页面导入js文件,像使用普通JS函数一样调用。而页面在触发该函数时,就向服务端发出请求,服务器根据转换映射关系调用相应业务函数,并把结果返回个页面端的JS函数调用处。这样没有引发页面跳转,所以也是Ajax。 三:DWR使用步骤 ( 1 )下载 dwr.jar (核心包)、 commons-logging-1.0.4.jar (依赖包),并放置在web项目WEB-INF/lib下面。 下载地址: http://download.csdn.net/detail/qq_28745795/9847205 ( 2 )在web.xml中配置 DWR组件, DWR相当于 是一个 servlet ; <servlet> <servlet-name>MyDWR</servlet-name

DWR组件——基于远程过程调用实现Ajax

心已入冬 提交于 2020-03-02 14:36:02
一:DWR的用途 DWR(Direct Web Remoting)是一个Web远程调用框架,会根据java类动态生成javascript代码。 二:DWR实现Ajax的原理 DWR是基于远程过程调用的组件,可以在浏览器端远程调用服务端的业务函数,并获取返回结果。而我们知道,浏览器端是不能直接运行Java代码的,但是可以运行JavaScript代码。DWR的作用就是:把服务端的业务函数转化成JS函数,然后在页面导入js文件,像使用普通JS函数一样调用。而页面在触发该函数时,就向服务端发出请求,服务器根据转换映射关系调用相应业务函数,并把结果返回个页面端的JS函数调用处。这样没有引发页面跳转,所以也是Ajax。 三:DWR使用步骤 ( 1 )下载 dwr.jar (核心包)、 commons-logging-1.0.4.jar (依赖包),并放置在web项目WEB-INF/lib下面。 下载地址: http://download.csdn.net/detail/qq_28745795/9847205 ( 2 )在web.xml中配置 DWR组件, DWR相当于 是一个 servlet ; <servlet> <servlet-name>MyDWR</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet

Binder IPC的权限控制

可紊 提交于 2020-02-26 09:41:19
copy from : http://gityuan.com/2016/03/05/binder-clearCallingIdentity/ 基于Android 6.0的源码剖析, 分析Binder IPC通信的权限控制方法clearCallingIdentity和restoreCallingIdentity的原理和用途。 frameworks/base/core/java/android/os/Binder.java frameworks/base/core/jni/android_util_Binder.cpp frameworks/native/libs/binder/IPCThreadState.cpp 一、概述 在 Binder系列 中通过十篇文章,深入探讨了Android M的Binder IPC机制。看过Android系统源代码的朋友,一定看到过 Binder.clearCallingIdentity() 和 Binder.restoreCallingIdentity() 这两个方法,其定义在 Binder.java 文件: //作用是清空远程调用端的uid和pid,用当前本地进程的uid和pid替代; public static final native long clearCallingIdentity(); //作用是恢复远程调用端的uid和pid信息,正好是

序列化与反序列化

末鹿安然 提交于 2020-01-20 18:10:24
为什么我们需要序列化 存储/传输 IPC/RPC IPC,Inter-Process Communication,进程间通信 RPC,Remote Procedure Call,远程过程调用 序列化的类型 文本 字节 ProtoBuf 来源: https://www.cnblogs.com/johnnyzhao/p/12218845.html

RPC服务治理

a 夏天 提交于 2020-01-10 00:10:03
RPC服务治理 什么是RPC? RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用。远程调用的应用场景极其广泛,实现的方式也各式各样。 过程是什么? 过程是业务处理、计算任务;更直接的理解:一段程序代码。 有什么重要特征? 像调用本地方法一样调用远程的过程。 远程调用原理 比如 A (client) 调用 B (server) 提供的 remoteAdd方法: 首先A与B之间建立一个TCP连接; A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去; B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回; A接受远程调用结果,输出30。 RPC框架是什么? 封装好了参数组、消息编解码、底层网络通信的远程过程调用的程序框架,可以直接在其基础上只需专注于我们的过程代码编写。 传统的webService框架:Apache CXF、Apache Axis2、java自带的JAX-WS等等。webService框架大多基于标准的SOAP协议。 新兴的微服务框架:Dubbo、Spring Cloud、Apache Thrift等等 通信协议

Hadoop中RPC机制简介

梦想的初衷 提交于 2019-12-04 08:33:18
RPC(Remote Procedure Call)—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 Hadoop的整个体系结构就是构建在RPC之上的(见org.apache.hadoop.ipc包) 使用RPC: (搭建一个Hadoop伪分布式虚拟机(Server端), 本地Windows连接该虚拟机(Client端)) 1. 定义RPC协议接口 LoginProtocol (Hadoop RPC协议通常是一个Java接口), RPC协议接口是Client和Server之间的通信接口, 它定义了Server对外提供的接口. LoginProtocol接口声明了一个login(

RPC的简单实现

女生的网名这么多〃 提交于 2019-12-03 06:09:56
RPC(Remote Procedure Call)—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 源码托管在 Git@OSC 原理 1. Client端获取一个 RPC 代理对象 proxy 2. 调用 proxy 上的方法, 被 InvocationHandler 实现类 Invoker 的 invoke() 方法捕获 3. invoke() 方法内将 RPC 请求封装成 Invocation 实例, 再向 Server 发送 RPC请求 4. Server端循环接收 RPC请求, 对每一个请求都创建一个 Handler线程处理 5. Handler线程从输入流中反序列化出

【Android进阶】浅析Android Binder机制

北城余情 提交于 2019-11-30 10:32:32
在Android开发过程中,Binder的身影无处无处不在,我们编写的程序都使用过Binder机制(例如startActivity的执行过程)但是请问你知道什么是Binder么?在开发过程中你察觉到它的存在了么? 什么是Binder Biner翻译过来是“胶水“的意思,这个翻译分形象。Binder的主要工作就是淡化了进程边界,淡化了进程间通信的过程。要是想更好的理解Binder就必须从Linux进程谈起。 Linux进程 为了保护进程空间不被别的进程破坏或者干扰,Linux中的进程是相互独立的,也就是所谓的进程隔离。(而且一个进程的内存空间还被分为了用户空间和内核空间,二者也是相互隔离的。这里不做探讨)所以在Linux中,进程与进程之间是相互隔离的,而且进程中的用户和内核空间也是隔离的。 也就是说为了安全和独立,一个进程是不能直接操作或者访问另外一个进程的内存空间的。他们之间既然是隔离的,在需要通信、协作的时候就需要使用进程间通信技术(即IPC,也称跨进程通信),我们都知道Android框架是建立在Linux之上的,当然也会面对进程间通讯的问题。 为什么使用Binder 在Linux系统中为了达到进程间通讯的目的,我们可以选用诸如管道、Socket等技术手段,那么为什么Android选用了Binder这种新型的IPC技术,放弃了原有成熟的技术呢? 主要有如下两个方面: 1.