﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-socketref,再见！高德-随笔分类-Android</title><link>http://www.cppblog.com/socketref/category/20217.html</link><description>gis,mouse,luolasi</description><language>zh-cn</language><lastBuildDate>Thu, 22 Nov 2012 03:16:23 GMT</lastBuildDate><pubDate>Thu, 22 Nov 2012 03:16:23 GMT</pubDate><ttl>60</ttl><item><title>Rpc+Mq实现分布式系统</title><link>http://www.cppblog.com/socketref/archive/2012/11/22/195531.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 22 Nov 2012 02:50:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/11/22/195531.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/195531.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/11/22/195531.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/195531.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/195531.html</trackback:ping><description><![CDATA[聊聊草草<br />实现一套通信框架 <br />A - 移动终端； B - 接入服务器(网关) , C,D,E - 内部服务系统 ， M -内部服务系统的消息队列 <br />B 用于接入成千上万的A，B不具备业务能力，只有CDE才能与A进行业务交互，M充当消息管道。<br />一般的做法，各个系统模块指定标准协议，可以是xml或者二进制的，然后各开发各的，socket或者http等部件，开发语言也是cpp，python，java齐上阵。<br />这种开发模式过于繁琐，模块之间的耦合比较紧密，应该把应用和通信细节剥离出来。<br />我的做法是所有有系统对象之间的消息传递都是基于Rpc接口级的调用，更本不设计通信、协议编码，只要根据IDL就可以，A请求C的服务，那A只需要调用C的接口函数即可，底部的工作：<br />A到B的socket通信，B将A的消息转换到M，M再传输到C，这些工作都可以透过Rpc层完成透明，反过来C的调用请求也安原路返回到A。<br />C要发送消息到A，那调用A的接口，rpc层自动将请求转化未MQ协议，被路由到B，B找到A的链接，并将Mq消息转化未socket消息传递到A，A端接收消息转换成Rpc函数回调到A的应用代码。<br /><br />除了简单的调用、返回方式还有<br />单项调用请求、异步调用请求、消息广播请求<br /><br />B端可以通过外部配置使得A的请求路由到C，或者D，或者全部接收，取决与应用需求(应用还是集群)<br />MQ如果系统总线一般，将各个服务子系统链接成网络，是构成整个系统的基础。Rpc可以解脱程序员，让其将经历花在具体业务上，而且基本只要编写若干的服务接口函数即可。<br /><br />当然要实现以上功能特点，很多可用的框架，CORBA，DCOM，ICE等等，但这些过于庞大，对环境要求也有限制，如果要更高效、灵活的运用和包装需要大量修改其底层代码，与第三方的整合只能工作在他们的上层接口上，这个令人很沮丧，会导致产生更多的依赖和复杂的编程技巧。<br />这些全都丢弃，还是自己的rpc<img src ="http://www.cppblog.com/socketref/aggbug/195531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-11-22 10:50 <a href="http://www.cppblog.com/socketref/archive/2012/11/22/195531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android的xml-Rpc实现</title><link>http://www.cppblog.com/socketref/archive/2012/11/22/195526.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 22 Nov 2012 02:17:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/11/22/195526.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/195526.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/11/22/195526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/195526.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/195526.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 弄Rpc有一段时间了，从定义IDL规则，自动生成存根代码给应用使用，相继做了c++，java,python,actionscript四个版本，且都都能互相调用，协议是自定义的二进制格式。公司的项目要求我从事android的开发，编写一些小的应用，要与平台服务器通信。与服务器的通信采用xml交换，之前做的二进制编码便不能使用。不想很弱智的去重复的编解码xml消息格式，去编写socket通信代码，工作...&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2012/11/22/195526.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/195526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-11-22 10:17 <a href="http://www.cppblog.com/socketref/archive/2012/11/22/195526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>