当前位置: 首页 > news >正文

wordpress 网站锁网站建设外包怎么样

wordpress 网站锁,网站建设外包怎么样,wordpress菜单调用图片,西城广州网站建设一、Windows的网络编程 其实对开发者而言,只有Windows和其它平台。做为一种普遍流行的图形OS,其一定会与类Linux的编程有着明显的区别,这点当然也会体现在网络编程上。Windows有着自己一套相对独立的上层Socket编程模型或者说框架&#xff0…

一、Windows的网络编程

其实对开发者而言,只有Windows和其它平台。做为一种普遍流行的图形OS,其一定会与类Linux的编程有着明显的区别,这点当然也会体现在网络编程上。Windows有着自己一套相对独立的上层Socket编程模型或者说框架,而且这么多年来,没有再看到有革命性的模型或者框架出现,这也是在Windows上进行网络编程的一个优势。同时,由于其的闭源性,使得其它许多想by pass的技术,只能由微软自己的主导,从而导致技术进步的缓慢甚至没有推动的动力。

二、Windows常用的IO模型

在Windows平台上,其通用的IO模型与前面分析的一致,但在一些常用的网络IO模型上,则可以分为以下几种:
1、select模型
其函数接口如下:

int WSAAPI select{int nfds;fd_set *readfds;fd_set *writefds;fd_set *exceptfds;const timeval *timeout;
};

此select模型和Linux平台上的select模型基本类似,只是有个别参数的设置可能略有不同,比如第一个参数“int nfds”,在Windows平台上无意义,而在Linux表示监控最大的句柄数,不过不影响具体的功能。其应用场景和缺点也是小并发,在高并发时,效率可能会急剧降低。
2、WSAAsyncSelect模型
其函数接口定义如下:

int WSAAsyncSelect([in] SOCKET s,[in] HWND   hWnd,[in] u_int  wMsg,[in] long   lEvent
);

此模型主要是为了适应Windows的消息通知机制。可能没有写过Windows编程的不知道,在Windows系统上,UI的通信基本都是消息方式传递的,宏定义基本以WM_XXX开头。它的缺点自然也就带着消息的缺点,一是消息自身的限制,如队列的大小、同步非同步以及需要有UI线程等,二是可能会丢失。所以其性能仍然比较低,需要较为复杂的UI线程共同处理。它也不适合高并的客户端连接。

3、WSAEventSelect模型
其函数接口定义如下:

int WSAAPI WSAEventSelect([in] SOCKET   s,[in] WSAEVENT hEventObject,[in] long     lNetworkEvents
);

一般来说,事件的处理都是有上限限制的,毕竟事件的机制受内核限制的。所以使用此模型,一个线程处理的事件上限为64个。它的优点在于支持事件编程,这个在Windows上是有专门的接口的。
其它应用场景也是中低并发场景,一般不宜超过百的量级。
4、重叠(overlapped)模型
这玩意儿其实就是异步IO的一种实现(重叠就是多个IO在一起被工作)。也就是常理解的IO与实际的操作分离。这样导致的结果就是可以利用多个线程的复用来管理大批的IO操作。即业务是业务,IO是IO。而非是同步IO中的线程与IO同步,造成线程的浪费。在Windows平台上提供了waitformultipleobjects和waitforsingleobject两个函数来处理对IO的监听。
它的优点很明显,对并发量处理上去了,但实际上,仍然在大量线程操作大量IO操作时,会产生不小的资源浪费,比如到了千以上级。
它的数据结构和相关函数定义如下:

typedef struct _WSAOVERLAPPED {DWORD    Internal;DWORD    InternalHigh;DWORD    Offset;DWORD    OffsetHigh;WSAEVENT hEvent;
} WSAOVERLAPPED, *LPWSAOVERLAPPED;
BOOL WSAAPI WSAGetOverlappedResult([in]  SOCKET          s,[in]  LPWSAOVERLAPPED lpOverlapped,[out] LPDWORD         lpcbTransfer,[in]  BOOL            fWait,[out] LPDWORD         lpdwFlags
);

5、完成端口模型(IOCP)
如果弄明白了上面的重叠IO,就很容易理解IOCP(Completion Port)。重叠IO需要人为的处理上层应用线程和下层的异步IO调度,这本身就是一个非常复杂和非常有难度的问题。小数量并发时,不会体现出来。不过也不会用IOCP,但在大数量时,这个现象就非常突出了。所以Windows自己提供了一套线程和数据队列的管理机制,用来处理异步IO与上层线程池的的数据交换和管理。
它的优点非常明显,可以非常好的平衡多线程和IO之间的平衡并在此过程中取得最大的优化。缺点也非常明显,复杂,不好调试。
下面看一下创建完成端口的函数:

HANDLE WINAPI CreateIoCompletionPort(_In_     HANDLE    FileHandle,_In_opt_ HANDLE    ExistingCompletionPort,_In_     ULONG_PTR CompletionKey,_In_     DWORD     NumberOfConcurrentThreads
);

使用完成端口还需要其它函数,这里不再介绍,待专门写完成端口时再进行分析和说明。

值得一提的是,其实上述的模型也属于IO多路复用的模型,就看从什么角度来划分了。另外,Windows平台上对传统的Socket进行了一系列的封装,这些封装可能对初学者来说不太友好,需要一个学习和适应的过程。

三、比较分析

WSAAsyncSelect和WSAEventSelect在底层的机制基本一是类似的。不同的在于得到网络通知时,一个用来使用Windows的消息机制,一个使用的是Windows的事件机制。很多没有在Windows上开发过的开发者可能不明白二者的不同。不过这不难,用到的时候儿仔细看一下即可。
overlapped模型实际中看到的应用非常少,也可能是经历比较少吧。但确实在开源的库和框架里也很罕见。它有点类似于IOCP出现前的一个半成品,IOCP出现后,小并发的基本前面几个模型就可以轻松应对,大的基本就上IOCP了。
IOCP在高并发服务端应用还是非常广泛的,它是一个纯异步IO模型即从上到下可以认为全是异步操作。这种操作等于隔离了IO操作和IO结果应用的实现。IO操作由系统实现,只有和上层应用通信即IO结果应用上才会发生状态和数据上的交换。其实就是将数据对IO的投递和接收队列化。由队列做为一种通信接口来实现应用线程与异步IO操作的交互,从而达到既隔离操作但又提供交互的机制。
需要说明一个问题,很多初学者甚至很多开发网络编程多年的开发者,都认为这些模型只用于服务端,其实不是的。不管是在什么平台,除非特别的约定或特定的情况下,都可以用在服务端和客户端。但一般情况下,由于这些模型相对来说要复杂不少,客户端的功能一般也比较弱小,所以大多还是使用普通的Socket编程来处理。

四、总结

在Windows平台上,网络高并发的开发,重点以游戏居多。其它的当然也可以做,毕竟IOCP可不是白给的。其实游戏行业是一个非常好的方向,开发者如果有兴趣的话可以深入的学习研究。当人们吃饱饭的时候儿,精神食粮就提到了必须的日程上来。至于游戏对青少年的影响,就看大环境了。
已经好多年不在Windows上进行编程了,以后的网络编程重要分析也是以类Linux平台为主。

http://www.yayakq.cn/news/963218/

相关文章:

  • 能够做网站的资质国内网站制作公司排名
  • 综合门户网站什么意思山东高端网站建设wang
  • 服务器做网站用什么环境好微信可以上网
  • 企业建网站的 程序新网站seo技术
  • dz网站建设视频教程怎么在网站做gif
  • 佛山住房和城乡建设部网站网页设计与网站制作知识框架
  • 北京移动网站建设公司排名深圳高端画册设计机构
  • 咨询公司网站模板设计师网名怎么取
  • 课程网站建设的基本原理鞍山网络
  • 建站公司常见提成比例国际数据公司idc
  • 网站建设与网站开发汕头做网站公司哪家好
  • 青岛做网站建设的公司哪家好如何做婚恋网站
  • 在线做app的网站眉山市住房和城乡建设部网站
  • 网站建设方案项目书免费申请一个网站
  • 如何做微信网站建设交易所网站建设
  • 网站的经营推广网站开发专业就业培训学校
  • 网站建设 数据上传 查询服务号 wordpress
  • 三亚网站建设哪家专业学校网站建设和维护情况
  • 什么叫域名访问网站互联网推广的好处
  • 电子商务网站建设课程评价wordpress中文版源码
  • 比特币交易网站开发推广网站的公司
  • 网站icp 备案进度查询网页布局设计技术包括
  • 网站有源码 怎么建设基于阿里云的网站开发
  • 乌镇网站建设投标书如何做网站推广及优化
  • 临沂市建设局网站公示网站安全检测腾讯
  • 高中网站建设课程网站建设行吗
  • 营销网站做的好的公司wordpress的域名形式
  • 常州建设局考试网站做js链接的网站要加证书吗
  • 妇科网站源码谷歌google play官网下载
  • 在线课程网站开发价格济南网站建设正规公司哪家好