关于网络 2.0 是如何实现的

关于网络 2.0 是如何实现的

几个月前,我谈到了 网络 2.0,但我没有提到的是,这些改进背后的驱动力是 Corona 社区的 Bob Dickinson。

有一段时间,Bob 非常直言不讳地指出旧网络 1.0 堆栈的一些缺点,并在他的错误报告中表达了他的沮丧。他会说一些很残酷的话,比如“网络请求/下载支持只适用于玩具应用程序”,但会用关于他希望看到的改进的建设性想法来平衡这些评论。

在一次电子邮件交流中,结果表明 Bob 真的想做点什么

我想做的是自愿重做 Corona 网络 API(特别是 network.request 和 network.download),以便解决特定的未解决错误,并扩展 API 并使其更加健壮,如 14023 中所述。我认为这可以在不更改 API 定义的情况下完成(因此新的实现将完全向后兼容并通过任何当前的单元测试)。

因此,经过几次交谈,我们同意试一试!我主要担心的问题之一是 API,当我对 API 更改的每一个细节进行研究时,Bob(谢天谢地)很有耐心。我们仅在 API 上就进行了几十次交流。我们讨论了很多事情,包括错误处理、区分响应中的文本/二进制文件以及诸如下载文件路径应如何指定等细节。

这是一个我们之间进行的典型交流示例。在这个例子中,我们决定了一个新的 API 的名称来取消 http 请求

我来回考虑。我选择了 cancelRequest( ),因为与
定时器模块不同,网络模块有几个方法处理
您可能会认为可以取消但不是的
请求(网络状态函数)。但我两种方式都可以。

我稍微倾向于更简洁的“network.cancel()”,所以我们选择这个。

然后是开发。Bob 重写了 Android 实现,因为自从我们编写原始版本以来,出现了一个较新的 HttpURLConnection。然后,他移植了我们现有的 iOS、Mac 和 Windows 实现。

考虑到涉及的平台数量,这绝对是一项艰巨的任务,也是 Bob 的一项艰巨努力。我可以继续谈论所有技术细节,但长话短说,我们都有一套更丰富的 http API。

感谢 Bob 的辛勤工作、慷慨和奉献精神。Corona 因此变得更好!

walter
15 条评论
  • Bob Dickinson
    发布于 5 月 23 日 00:32

    谢谢你的赞扬 Walter。这是一个有趣且具有挑战性的项目——最困难的部分是在 C++ 和 Objective C (Mac/iOS)、Java (Android)、C (Windows)、lua (测试套件) 和 Python (测试服务器) 之间切换,通常是在一天之内使用所有语言和平台进行编写。这让我对你们团队面临的持续挑战以及执行此类开发所需的技能和专注程度有了很大的尊重,并且你们的团队做得很好。我希望大家喜欢 Networking 2.0!

  • IcySpark
    发布于 5 月 23 日 01:31

    感谢 Bob 花费时间和精力在这方面。这是一件非常无私的事情,它使整个 Corona 社区受益。

  • Raymond Cheng
    发布于 5 月 23 日 05:50

    谢谢你 Bob

  • Matthew Webster
    发布于 5 月 23 日 06:57

    哇,Bob,你是一位真正的英雄。做得好,祝贺你,并表示衷心的感谢。

    我非常尊重和钦佩任何能够掌握这些语言的人——你已经完成了所有这些,并将网络大师也加入了其中!

  • Stephen Lewis
    发布于 5 月 23 日 09:19

    有趣的故事。将挫折(和专业知识)转化为有成效的东西的方法。感谢您分享您的辛勤工作 Bob!

  • Chevol
    发布于 5 月 23 日 09:40

    非常感谢你 Bob!您的工作非常受赞赏。

  • Kerem
    发布于 5 月 23 日 11:11

    Bob,你真是一位英雄。非常感谢您为社区所做的一切。我们非常感谢您。

  • WideAwakeGames
    发布于 5 月 23 日 15:18

    我假设 Bob 对为 CL 工作不感兴趣?如果我发现有人表现出这里的天赋和奉献精神,就会有一个可靠的报价摆在桌面上。

  • Owen Yang
    发布于 5 月 23 日 19:13

    太棒了!!!
    我认为 cancelRequest( ) 对许多开发人员来说非常好!
    谢谢 bob

  • Raffaele
    发布于 5 月 23 日 23:49

    很棒的工作 Bob,谢谢。
    但难道只有我一个人认为,对于我付费购买许可的 SDK 来说,依靠志愿者工作来修复网络等核心 API 的错误并使其保持最新状态,至少是很奇怪的吗?我们如何才能依靠 corona 开发关键任务应用程序?
    别误会我的意思,也许如果 Bob 一开始可以选择本地方式,他可以节省大量的邮件、挫败感和时间。

  • JCH_APPLE
    发布于 5 月 24 日 05:46

    Raffaele 的观点非常中肯,看来重要的改进是由并非在 Coronalabs 工作的人员完成的(我个人的英雄是 Matt/Horacebury,每次我遇到问题或疑问时,他都会提前找到解决方案)。
    我希望这些人至少不必支付他们的订阅费 :o)
    恭喜大家,Corona 人的努力是伟大的,但请鼓励顶级贡献者,没有他们,Coronalabs 就不会是现在的样子。

  • Bob Dickinson
    发布于 5 月 25 日 20:51

    我确实在为一家营利性公司贡献免费代码/工作这一想法上挣扎过。但我自愿做这项工作的基本原理是,如果这是一项开源工作,我会直接去修复代码(显然,我不会为此获得报酬)。我这样做主要是因为我想出于我自己的原因完成它,其次是为了从社区获得学习经验和一点自我提升。所以我想,如果我愿意为开源工作做这件事,我为什么不为一个闭源项目做这件事呢(我喜欢这个项目、公司、人等等)。当然,他们这样做是为了盈利,但最终这真的有什么区别吗?他们应该为这项工作付费,因为他们是营利的吗?也许吧。但他们不会这样做,而且我想完成这件事,所以我只是站出来做这件事,就像我在开源项目上做的那样。而且我得到了我想要的。我使用的网络 API 很可靠,公司和社区向我表示了感谢,并且我在此过程中学到了很多东西(而且,顺便说一句,我有一段时间不用支付我的 Corona 许可证费用)。所以我承认这有点奇怪,但它对我来说很有效。

  • Joe
    发布于 5 月 30 日 12:07

    谢谢 Bob!

  • Opus
    发布于 5 月 30 日 13:07

    非常感谢!

  • Praveen
    发布于 11 月 24 日 15:01

    谢谢 Bob!这让社区中的我们所有人的生活都变得更美好。