从这个ibm上了解了json-rpc的简单使用
http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/0606_barcia/0606_barcia.html
看完文档后json-rpc还是蛮好用的。可以很简单的实现服务暴露.屏蔽http , 类似spring的rmiServiceExport功能
java 代码
-
- ....
- json_bridge = new JSONRPCBridge();
- json_bridge.registerObject("StockService",StockServiceImpl.getStockService());
-
-
-
- var jsonrpc = new JSONRpcClient("/FormBinder/JSON-RPC");
- jsonrpc.StockService.setStockData(saveStockData,stock);
如何用上面的网站上都有说
开发中大部分都是做对象的管理
而对象管理基本上是两种类型,
对象的批量管理 用table
单对象的管理 用form ,
table是很统一的方式,
而form则大都是定制化的,但form 是做单对象管理的,则表单上所表现的元素必然是与对象的属性一一对应的,只是表现形式不同
这里利用js的动态性及json-rpc的调用模型,在上面的示例的基本上 实现一个简单的对象绑定,类似spring mvc的绑定机制
需要被绑定的类如下
java 代码
- public class StockData implements Serializable {
- private String symbol;
-
- private double price;
-
- private String companyName;
-
- private User user;
-
- private List users;
- }
服务模型如下
java 代码
- public interface StockService {
- public StockData getStockData(String symbol) throws StockException;
-
- public void setStockData(StockData data);
- }
页面的表单代码如下
这里的input ,select 等html元素都对应着StockData对象的某个属性
并且需要为这几个元素加上自定义的绑定属性.
例如
<input fieldName="symbol" id="symbolInput"> 这里的自定义的属性为fieldName ,这个元素对应着StockData的symbol属性
xml 代码
- <div class="stockPane" id="pane" >
- <h2>Stock Servive</h2>
- Enter symbol: <input fieldName="symbol" id="symbolInput">
- <p/>
- Enter price: <input fieldName="price" id="priceInput">
- <p/>
- Enter companyName: <select fieldName="companyName" id="companyName" >
- <option>IBM</option>
- <option>BEA</option>
- <option>MSFT</option>
- </select>
- <p/>
- Enter userName: <input fieldName="user.name" id="user.name">
- <p/>
- Enter userAge: <input fieldName="user.age" id="user.age">
- <p/>
- Enter users: <select fieldName="users" id="users" multiple="true" >
- <option>aaa</option>
- <option>bbb</option>
- <option>ccc</option>
- </select>
- <p/>
- <button onclick="submitStock()">Save Stock Data</button>
- <p/>
- <button onclick="showStock()">Show Stock Data</button>
- </div>
submitStock () 事件 要做的是 把UI数据绑定到对象 再设到StockService.setStockData 中
showStock() 事件是从 StockService中取得相应的data 对象,再绑定到ui 上
通过事先约订好的表单绑定契约,由FormBinder这个类来完成对象绑定的功能 ,减少js,及拼装json对象的代码
java 代码
- var binder = new FormBinder();
- binder.resolvers["s1"]= new MultipleSelectResolver();
- binder.resolvers["s2"]= new SelectResolver();
-
- var jsonrpc = new JSONRpcClient("/FormBinder/JSON-RPC");
-
- function submitStock()
- {
- var stock = binder.bindUIToData("pane");
- jsonrpc.StockService.setStockData(saveStockData,stock);
- }
-
- function saveStockData(result,exception){
- }
-
- function showStock() {
- jsonrpc.StockService.getStockData(showStockData,"IBM");
-
- }
-
- function showStockData(result,exception) {
- binder.bindDataToUI("pane",result);
- }
FormBinder
支持的元素只有input 及两种select
input 是内部默认支持, 当然你也可以覆盖掉
select是需要注册的
java 代码
- var binder = new FormBinder();
- binder.resolvers["s1"]= new MultipleSelectResolver();
- binder.resolvers["s2"]= new SelectResolver();
也可以实现自已的resolver
以InputResolver为例
js 代码
- 1. function InputResolver(){
- 2. this.tagName="input";
- 3. }
- 4.
- 5. InputResolver.prototype.setWidgetValue = function(widget,fieldValue){
- 6. widget.value = fieldValue;
- 7. }
- 8.
- 9. InputResolver.prototype.setObjectValue = function (widget,data,fieldName){
- 10. data[fieldName] = widget.value;
- 11. }
- 12.
- 13. InputResolver.prototype.isEmpty = function (widget){
- 14. return widget.value =="";
- 15. }
分享到:
- 2006-12-28 16:11
- 浏览 4320
- 评论(4)
- 论坛回复 / 浏览 (0 / 5554)
- 查看更多
相关推荐
这些方法会被绑定到特定的URL路径,当JSON-RPC请求到达时,服务器会解析请求并调用相应的函数。 3. **客户端接口**:在客户端,你可以创建一个JSON-RPC客户端对象,用于向服务器发送请求并接收响应。客户端通常会...
1. **添加依赖**:在项目中引入JSON-RPC的库,如jsonrpc4j,同时确保Spring MVC的相关依赖。 2. **创建JSON-RPC服务**:定义一个实现了JSON-RPC协议的服务类,其中的方法将作为远程调用的接口。 3. **配置Spring MVC...
JSON-RPC for Java是一种基于JSON(JavaScript Object Notation)协议的远程过程调用(Remote Procedure Call)框架,它允许客户端通过网络调用服务器上的方法,实现了客户端与服务器端的轻量级通信。本文将详细解释...
了解了这些基本概念和步骤后,你可以根据提供的`json-rpc.rar`和`jsonrpc.rar`文件进行学习和实践。这些文件可能包含了示例代码,帮助你更好地理解C和C++中JSON-RPC的具体实现细节。通过阅读源代码、编译和运行示例...
简单的JSON-RPC 一个用于将协议简单集成到Java应用程序的库。... Jackson ,非常适合JSON解析和数据绑定; Guava ,非常适合缓存和可选值(仅服务器端需要) SL4J ,这是日志记录的标准(仅服务器需要) Int
V-JSONRPC 0.2现在与协议无关,这意味着它不再与一个协议绑定,并且可以按其他方式使用,例如STDIN,TCP,UDP等。提供的输入是字符串。 安装 VPM v install nedpals.jsonrpc vpkg get v-jsonrpc 例子 此代码示例...
JSON-RPC 实现这是 JSON-RPC 规范的实现,完全用 Rust 编写。 实现很简单,但目前缺少很多功能。去做: 实现批量调用当前实现绑定到 。 找到一种解耦它的方法,以便可以使用替代的 HTTP 库。 添加示例。 添加更多...
在"jsonrpc.lua"项目中,我们利用 lsocket 来创建一个监听特定端口的服务器,处理来自客户端的 JSON-RPC 请求。 首先,我们需要理解 JSON-RPC 的基本概念。JSON-RPC 2.0 标准规定了请求和响应的格式,其中请求包含...
4. **序列化(Serialization)**:将Java对象转化为网络可传输的数据格式,如JSON、protobuf等。 5. **反序列化(Deserialization)**:将接收到的网络数据还原为Java对象。 6. **网络通信(Network Communication)...
Slate可帮助您创建美观,智能,响应Swift的API文档。 上面的示例是使用Slate创建的。 在检查。特征简洁,直观的设计—使用Slate,API的描述位于文档的... 用多种语言编写代码示例—如果您的API具有多种编程语言的绑定
oqs-kex-rpc- JSON-RPC 2.0 服务器和客户端通过oqs. mullvad-wg-establish-psk- 用于通过wireguard 隧道协商wireguard 兼容的预共享密钥的服务器和客户端程序。此密钥稍后可用于将隧道升级为后量子安全。
这个库提供了一个Laravel服务提供者和服务容器绑定,使得在Laravel框架内使用Gearman变得更加方便。 ** 安装与配置 ** 首先,你需要通过Composer安装`mhlavc/gearman`库: ```bash composer require mhlavc/...
JSON基于JavaScript的一个子集,但它的语法不限于JavaScript,而是被广泛应用于各种编程语言中。JSON支持数据类型如字符串、数字、布尔值、数组、对象等,可以表示复杂的数据结构。 与XML相比,JSON通常被认为更...
Python有许多RPC框架可供选择,如xmlrpc、jsonrpc、gRPC和zerorpc等。在Python-Cplus-Rpc的场景中,ZeroMQ可能是首选,因为它的性能强大且灵活,能支持多种协议,包括请求/响应模式,发布/订阅模式,以及点对点模式...
这种协议通常基于JSON-RPC,它允许客户端发送一个包含方法名和参数的JSON对象到服务器,服务器执行该方法并返回结果。zerorpc-node提供了一种简单的方式来定义和实现这些协议,使得服务的部署和调用变得轻松。 具体...
Avro的数据模型基于JSON,包括记录(Record)、枚举(Enum)、数组(Array)、映射(Map)、固定值(Fixed)和基本类型(如字符串、整数等)。这些数据结构允许Avro在不同的编程语言之间进行无缝的数据交换。 Avro ...
5. **数据编码**:RPC使用特定的数据表示格式,如XML-RPC或JSON-RPC,以便在网络上传输数据。 6. **错误处理**:当远程调用失败时,RPC框架会提供一套标准的错误处理机制。 7. **实现**:多种编程语言都有RPC实现,...
而Gin是一个基于Go语言的Web框架,它提供了高效的路由和中间件管理,使得构建API和服务变得简单。将protoc与Gin结合,可以通过protoc生成的接口直接服务于HTTP请求,提高开发效率和代码质量。 标题"protoc生成gin的...
1. **高性能**:Hession采用二进制协议,相比于基于文本的协议如XML-RPC或JSON-RPC,它的传输效率更高。 2. **易用性**:Hession可以直接序列化和反序列化Java对象,使得服务接口的实现和调用非常简单。 3. **兼容性...
可以是自定义的二进制协议,也可以是基于HTTP、JSON-RPC或gRPC等标准协议。协议定义了消息的结构,包括方法名、参数、返回值等信息的编码规则。 5. **多线程/异步处理**:为了提高效率,服务器端可能需要使用多线程...