平步青云:连接管理器如何连接2011-12-14 msdn Marcus Perryman我记得那是会议的第三天。我坐在吹着冷气的会议室中听首席项目经理讲全新连接管理器技术的奥秘,可能前一晚离开酒吧时有点晚了,想起前两天超负荷的信息量,我的思维有些混乱。我脑中冒出的想法是,所有这些有什么意义呢?我的意思是说,有谁会需要一种以指示设备是否已连接为己任的技术?当时,连接只能通过连接电缆或大型配件实现,需要 PhD 分析网络协议,需要不厌其烦地进行运算:如果用户不知道设备已连接,还有什么资格拥有设备呢?令人欣慰的是,技术已有了很大的发展,现在普通的移动电话就能够提供多种奇异的无线技术,比如,可以通过移动电话加热 40 步内的饭盒中的食物。Windows Mobile 设备在此领域中占据了比较多的一大块,并与 Windows CE 强占式多任务内核紧密结合,连接管理器团队的远见卓识显而易见。如果没有连接管理器,恐怕除了最简单的网络环境外,应用程序只能通过为用户提供选择列表的方式让用户选择连接,这将使您倒退到需要 PhD 分析网络协议的阶段。连接管理器的出现巧妙地为用户解决了这一难题 — 毕竟用户的目的只是希望应用程序能够正常运行,解决此问题应该是移动运营商和 OEM 的责任,如果他们都不能解决,对此知之甚少的用户就更加无能为力了。正确使用连接管理器对于需要网络数据的 Windows Mobile 应用程序至关重要,主要原因有两个。首先,并非只有代码需要连接网络。现今的很多应用程序都需要连接到网络,或者至少提供某种形式的联机能力以下载更新功能或其他功能。这就使设备中的两个应用程序在某个时刻争用连接的可能性增加了。对于使用推送或轮询电子邮件解决方案的企业用户来说,这种争用必然会发生。其次,Windows Mobile 设备的销售和使用范围覆盖全球。对于一个获得全球市场青睐的应用程序来说,它应该具有移动运营商可能梦想到的任何网络配置,并且据我了解,在涉及到网络拓扑问题时,移动运营商的想象力是极其丰富的!我坚信,了解的越多,使用的效果就越好。在本专栏中,我将深入内部介绍连接管理器的一些内部工作,尤其会介绍它何以能在通过广域手机网连接时增加价值和消除复杂性。这似乎与 C++ 开发人员的相关性更大,因为他们通常直接调用连接管理器 API。托管代码开发人员拥有很多无需开发人员直接干预即可使用连接管理器的类,如 HttpWebRequest。但是,即使对于 .NET 开发人员来说,了解隐藏在背后的连接管理器如何支持托管代码,对解决复杂的连接问题也非常有用。