为什么80%的码农都做不了架构师?>>>   

在新版本的Beetle.NetPackage开源组件中集成了对Protobuf的支持,在android下可以简单地使用Beetle.NetPackage实现基于Protobuf的TCP通讯数据交互.下详细讲解实现一个网络订单管理功能的过程.

协议定义

既然使用Probobuf进行数据交互,那就需要基于Protobuf制定一系列的通信对象,主要包括数据请求和应答的数据对象格式.在做之前需要把需求整理一下明确一下有那些功能,由于Demo主要是用于介绍一下protobuf在Beetle.NetPackage下的使用所以功能并不复杂包括:订单分页查询和订单明细查看.具体Protobuf定义如下:

package ordermanager;
option java_package = "com.beetle.samples.ordermanager";
option java_outer_classname = "orderproto";message GetEmployee
{optional string Name=1;
}message GetEmployeeResponse
{repeated Employee Items=1;
}message Employee
{optional string ID=1;optional string Name=2;
}message GetCustomer
{optional string Name=1;
}message GetCustomerResponse
{repeated Customer Items =1;
}message Customer
{optional string ID=1;optional string Name=2;
}message Response
{optional string Error=1;optional string Type =2;
}message OrderSearch
{optional string    Employee=1;optional int32  PageIndex=2;optional string Customer =3;optional string FromDate =4;optional string ToDate =5;
}
message OrderSearchResponse
{repeated Order Items =1;optional int32    PageIndex =2;optional int32  Pages =3;
}
message Order
{optional string OrderID=1;optional string Employee =2;optional string Customer =3;optional string OrderDate=4;optional string RequiredDate=5;optional string ShippedDate=6;optional string ShipName=7;optional string ShipAddress=8;optional string ShipCity =9;optional string ShipRegion=10;
}
message GetOrderDetail
{optional string OrderID =1;
}
message GetOrderDetailResponse
{repeated OrderDetail Items =1;
}
message OrderDetail
{optional string OrderID=1;optional string Product=2;optional double UnitPrice=3;optional int32  Quantity=4;optional float  Discount=5;
}

主要制定了订单雇员,客户,订单和订单明细查询的数据交互格式.

通讯定义

Beetle.NetPackage基础通讯都已经封装好了,所以使用起来非常简单,probotuf的注册和创建相应的TCP连接只需要几行代码即可

        ProtoPackage.Register(orderproto.class);mClient = new NetClient("10.0.2.2", 9088, new ProtoPackage(), this);mClient.Connect();

以上代码是注册相关Protobuf对象信息,主要用于Beetle.NetPackage对protobuf进行自动化处理.然后定义一个基于Protobuf解释器的连接对象,交接入到相应IP端口的服务中.

消息接收定义

Beetle.NetPackage提供基础的Controller功能,因此只需要定义相关消息类型的方法即可.

    public void OnGetOrderDetali(NetClient client, GetOrderDetailResponse e) {final List<OrderDetail> details = e.getItemsList();mHandler.post(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubmOrderDetailViewAdapter.clear();for (OrderDetail item : details) {mOrderDetailViewAdapter.add(item);}mOrderDetailDialog.show();ListView lv = (ListView) mOrderDetailDialog.findViewById(R.id.lstOrderDetail);lv.setAdapter(mOrderDetailViewAdapter);}});}public void OnGetCustomerResponse(NetClient client, GetCustomerResponse e) {mCustomers = e.getItemsList();}public void OnGetEmployeeResponse(NetClient client, GetEmployeeResponse e) {mEmployees = e.getItemsList();}public void OnOrderSearchRespnose(NetClient client, OrderSearchResponse e) {final List<Order> orders = e.getItemsList();mPages = e.getPages();mHandler.post(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubmOrderViewAdapter.clear();for (Order item : orders) {mOrderViewAdapter.add(item);}mOrderViewAdapter.notifyDataSetChanged();}});}

通过调用以下方法则可以自动切入到相关消息方法中.

        @Overridepublic void Receive(NetClient client, Object msg) {Controller.Invoke(this, mClient, msg);}

消息发送请求

        GetCustomer.Builder getcusomer = GetCustomer.newBuilder();mClient.Send(getcusomer.build());GetEmployee.Builder getemployee = GetEmployee.newBuilder();mClient.Send(getemployee.build());

功能截图

下载代码

下载

Beetle.NetPackage官网

https://beetlenp.codeplex.com/

*--------------------------------------
*个人站:www.ikende.com www.asquestion.com              
*个人开源项目github.com/IKende             
*--------------------------------------*

转载于:https://my.oschina.net/ikende/blog/159930

android使用protobuf实现网络订单管理功能相关推荐

  1. 微信小程序上线订单管理功能:实现订单管理、售后维权一体化

    [TechWeb]3月13日消息,微信小程序正式上线订单管理功能,可支持用户统一查看小程序交易订单并进行管理. 如今在小程序"云逛街"早已成了微信用户的新潮流.为了方便用户对小程序 ...

  2. 【SSM】第四课 超市订单管理平台--订单管理功能

    概念 本文在供应商管理功能之后,继续讲解订单管理功能,该功能是由普通员工与供应商之间的订单进货,经理进行监管等等. 需求分析 订单管理: 1.如果系统管理员登录,操作订单管理没有权限 2.如果经理登录 ...

  3. 构建外卖系统小程序,订单管理功能实现步骤详解

    外卖系统小程序是近年来越来越受欢迎的一种订餐方式,方便快捷,并且可以减少人与人之间的接触,更加卫生安全.为了搭建一个完善的外卖系统小程序,订单管理功能是必不可少的一部分.在本文中,我们将详细介绍如何实 ...

  4. Android基于NSD实现网络服务发现功能

    一. 简介 网络服务发现:一般是指通过此功能,在局域网内来发现同样支持此功能的设备,并跟其他设备建立连接. Android 提供了一个网络服务发现(NSD),可让应用访问其他设备在本地网路上提供的服务 ...

  5. 前端开发Vue项目实战:电商后台管理系统(八)------ 订单管理模块

    git checkout -b order git push -u origin order 目录 1. 挂载组件及基本布局 2. 获取订单数据 3. 表格渲染 4. 分页功能 5. 实现省市区县数据 ...

  6. 机械行业ERP系统生产订单管理 分享式操作轻松协同

    产品生产制造过程,就像大厨按单做菜,按照清单提前采购配料,拣菜.洗菜.切菜.配菜.烧菜.装盘.上桌,只需快速分工协作,分分钟就能搞定一道道美味.可实际却远没这么简单,要么没顾客,要么来一堆,同一道菜, ...

  7. 基于Springboot的超市订单管理系统设计与实现

    目录 摘要 I Abstract II 1 系统需求分析 1 1.1 系统功能分析 1 1.2 系统功能需求 2 1.3 系统性能需求 2 2 可行性分析 3 2.1 研究前提 3 2.2 设计要求 ...

  8. cnzz 广告管家 代码下载 java,CNZZ“广告管家”让订单管理一气呵成

    [IT168 应用]从联盟广告到直客广告,对网站来说是个里程碑,既证明了网站的成长,也为网站运营提出了新要求.直客客户经常会同时在多个广告位投放多个广告,并经常更换广告物料,使广告管理工作变得复杂起来 ...

  9. 基于SSM的超市订单管理系统设计与实现

    目 录 1 系统需求分析 1 1.1 系统功能分析 2 1.2 系统功能需求 3 1.3 系统性能需求 3 2 可行性分析 5 2.1 研究前提 5 2.2 设计要求 5 2.2.1 安全性 5 2. ...

  10. Cdiscount的订单管理ERP怎么选择?无忧易售ERP已与Cdiscount达成合作,完成对接

    一.Cdiscount是一个怎么样的平台呢? ①平台介绍: Cdiscount是法国本土排名第一的电商平台,成立于1998年,隶属于Casino集团,包含3C数码,家居,园艺,户外,娱乐等全品类商品的 ...

最新文章

  1. ICML 2020论文贡献榜排名出炉:Google单挑斯坦福、MIT、伯克利;清华进TOP 20
  2. c语言规定标识符 字符串,c语言中标识符命名规则是怎样的
  3. markdown 笔记
  4. 两数组的交集(无重复)Intersection of Two Arrays
  5. Elementui动态换肤
  6. 因曝光“同事被抬上救护车”被开除?拼多多:该员工在匿名社区发布极端言论...
  7. 修改UCenter用户名长度限制的方法php程序和数据库修改
  8. [bzoj4763]雪辉[bzoj4812][Ynoi2017]由乃打扑克
  9. 计蒜客 16876 韩梅梅的抽象画
  10. 懵圈了,面试官问一个 TCP 连接可发多少个 HTTP 请求?
  11. 阿里java代码规范插件
  12. 计算机类文献综述如何写,应该如何撰写计算机类文献综述.doc
  13. 注册快手提示服务器繁忙,快手登录失败怎么回事
  14. (三)SGE 部署 SGE
  15. 为响应国家号召1+X证书Web前端开发最新考试模拟题
  16. 啊哈算法之水管工游戏
  17. AtCoder Beginner Contest 190 D - Staircase Sequences
  18. put url带参数_Superlurl 一款开源关键词URL采集工具
  19. Stack Overflow使用总结
  20. LAYUI表格自动渲染

热门文章

  1. automake 安装及使用
  2. linux内存源码分析 - 内存池
  3. 4207. 最长合法括号子序列
  4. 单例模式(Singleton mode)实战讲解
  5. Hadoop Configuration 源码详解
  6. comsol积分函数_COMSOL教程- 巧用PDE、ODE耦合方程实现变量的时间积分或者空间微分...
  7. Anaconda安装opencv3.4.1.15
  8. php网站模板包括增删改查,PHP实现简单的增删改查
  9. 网络的小区号和网络tac_网络问政|城基路老旧小区排污管长期堵塞没人管?
  10. eclipse修改jsp不生效_JSP+Servlet+JDBC+mysql实现的个人日记本系统