1
wptree 2011-04-15 12:41:22 +08:00
作为一个开发人员,socket通信是必须要了解的。
|
2
shinyzhu OP @wptree 我主要做Web的,还真没了解过socket。
iOS里面用URLRequest调用REST API也非常方便的啊。 |
3
xhinking 2011-04-15 12:50:41 +08:00
REST是基于HTTP协议的
|
5
yelusiku 2011-04-15 13:14:59 +08:00
没有socket,哪儿来REST。。。
|
6
kaktos 2011-04-15 13:31:45 +08:00
HTTP只是遵循REST架构风格的一种协议, 你socket也能REST
|
7
soulhacker 2011-04-15 13:52:13 +08:00
REST是一种应用层的架构风格,Socket是一种通讯机制,不是一个层次的东西没法拿来比较吧。。。
不过有一点题外话想说,在这行业待的越久,就越觉得稍微多了解一点自己主要领域之外的东西,经常会很有好处的,比如做应用的人表面上不需要知道底层通讯的机制,但是一旦你有所了解,经常会有奇效。 |
8
dongsheng 2011-04-15 14:19:16 +08:00
这哪跟哪,socket是http还下一层的东西,REST是http之上约定。
做Web也要了解socket的,比如用php,有时候后端得跟些没有被php封装的网络服务通信,这时候必须用socket自己连接。 |
9
9hills 2011-04-15 14:30:07 +08:00
给lz举个例子吧,假如你开发一个微型的跟踪仪,需要和网络服务器交换数据,难道要实现一下http协议?flash根本放不下一个http协议栈。。
|
11
ch_linghu 2011-04-15 15:30:00 +08:00
如 @9hill 所言,并不是所有场景都适合使用http这种高层协议的。(REST是完全基于http协议的)
有些对响应速度要求十分敏感的场景(比如证券/期货交易系统、金融系统),基于文本的解析带来的时间损失是不可接受的,更别提http协议中那么庞大的http header了。这些场景需要把数据封装成二进制数据包进行字节对字节的解析,这就要求在socket层面上直接进行协议封装。 另外,我觉得,对于开发人员来说,“方便”并不是一个好的理由。方便只对用户有意义。对于开发人员,使用“方便”的技术实现出效率或功能无法满足需求的产品,这个恐怕是不能接受的。 |
12
shinyzhu OP 感谢各位的回复:)
@yelusiku @kaktos 撇开效率,做应用开发的时候越上层的框架用起来越简单,除非性能要求特别高,所以一般就用简单的框架了。 @soulhacker 很有道理,所以需要学习的还很多:) @dongsheng iOS里也太多的C接口,我还不熟悉,所以开发起来有点难度。 @9hills iDev里面是讨论iOS开发的,不会出现这种情况。 |
13
shinyzhu OP @ch_linghu 感谢回复:)收获很多。
开发其实也是要追求效率的,小公司可没有时间让你开发底层轮子,所以只能用高层的框架来快速开发。 |
14
est 2011-04-15 16:38:55 +08:00
@ch_linghu
> 基于文本的解析带来的时间损失是不可接受的 文本解析成本不见得一定比二进制解析成本高。HTTP真正成本高的地方是因为它是一个无状态的连接,你就必须人工在数据里传输状态。 二进制只是一种更加紧凑的序列化传输而已,二进制和文本相比没有绝对的优势。 |
15
ch_linghu 2011-04-15 17:40:46 +08:00
@est 一般在这类协议中是不做解析这个动作的。只要两端定义相同的struct,然后从buffer里读取一个sizeof strcut然后直接塞进去,所有字段的值就直接有了。
|
16
ssword 2011-04-15 17:46:23 +08:00
一个在应用层,一个在传输层。没有socket就没有REST,而且REST也并非传输数据的协议。
|