移动开发平台网络引擎的开发概述(1)
做Symbian的网络开发将近一年,在程序网络模块的开发上还是有一些心得的。和大家分享一下。
如何设计一个可靠的,并且能够良好移植的网络引擎,简单的说有三点:
1.有一个底层http模块(Net),该模块负责具体的接入点选择,网络报文的组装,收发,超时控制,差错处理。
2.在Net模块之上,有一个引擎模块(Engine),负责控制程序的流程,业务的走向。
3.Net模块和Engine模块有低耦合的回调通信机制,即net模块可以将收到的数据顺利的提交给Engine进行处理,但不依赖于Engine.
手机操作系统肯定会提供http的库,不要告诉我你一直用的socket做网络,http库相对最基本的socket主要提供了一个报文解析,你不需要手动去解析http header&body里面的各项参数和内容,一般会有框架给的一个专门的回调函数把这些值传给我们,以symbian为例
void CMyHttpModule::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent){switch (aEvent.iStatus) {case THTTPEvent::EGotResponseHeaders:{RHTTPResponse resp = aTransaction.Response();TInt status = resp.StatusCode();if (status != 200){aTransaction.Close();return;}}break;case THTTPEvent::EGotResponseBodyData:break;case THTTPEvent::EResponseComplete:break;case THTTPEvent::ESucceeded:break;case THTTPEvent::EFailed:break;default:break;}}