移动开发平台网络引擎的开发概述(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;
	}
}


MHFRunL就是系统框架在收到报文的时候回调给Http模块的回调函数,光看名字就能知道每个case处理的是什么内容了吧?

收的问题系统API已经替我们做了,我们只需要对每一次事务做出处理就行了,那发的问题怎么解决呢?http库不会让你一个字一个字去拼http的header和内容的,调用相应的api即可,对Http头和内容的组织形式,相关参数的意义请自行去官网查阅。

累了,先写到这儿,明天继续~~

你可能感兴趣的:(c,.net,框架,socket,Symbian)