CFNetwork 在 iOS 和 MacOS 上相对于 BSD 套接字和 GCD 的优势?



我正在构建一个与iOS(设备和模拟器)通信的Mac应用程序。当与模拟器一起使用时,它只打算使用Wifi网络(适用于Mac网络范围内的设备)或环回/链接本地设备。它永远不应该使用3G/LTE网络,但通过wifi将iOS设备连接到网络的VPN连接可能对一些用户有用。

使用基于CFNetwork/CFRunloop/CFStream的套接字比使用BSD套接字(与GCD&dispatch_io结合使用)"走向金属"有什么优势吗?

在我看来,如果我要使用GCD、调度I/O和调度源,而不是基于CFNetwork/CFRunLoop的数据读/写事件,CFNetworking只是在BSD套接字之上添加了一个不必要的抽象。

网络协议将是一个自定义的二进制协议。即,不基于HTTP或任何其他现有协议。

如果您不需要蜂窝式或VPN-demand,那么我真的想不出有什么理由使用CFNetwork,但一位智者曾告诉我:"使用最高级别的抽象来完成任务。"CFNetwork是比BSD套接字和GCD dispatch_io更高级别的API。

另一方面,"按照你所知道的去做。"如果你在BSD套接字或GCD dispatch_io习惯用法中工作得更舒服,那么无论如何,就去做吧。

相关内容

最新更新