Tag: Swift Nio

使用Swift-NIO开发基本的Swift Echo Server

我不是Java或JVM类型的开发人员。 这可能是我从未感到需要尝试Netty框架的原因之一。 我一直在用Erlang,Elixir或Go开发所有高性能服务器代码,并对工具感到满意。 但是,Apple最近发布了Swift-NIO,这是一个用于开发跨平台服务器和客户端应用程序的新库和框架。 我不是前端开发人员,而是更具可伸缩性的后端开发人员。 就是说,我喜欢Swift编程语言,并且自从Apple在2014年发布它以来就一直关注着它的进步。这就是为什么这个新框架引起了我的注意。 编写服务器端软件有多好? 由于Swift-NIO是Netty的一个端口,它是由Netty杰出贡献者Norman Maurer领导的团队开发的,因此我首先研究了Netty设计,以更好地了解Swift-NIO的工作方式。 我喜欢我所读到的东西。 Netty的概念提供了很好的通用抽象,这是好的网络应用程序所共有的。 它是一个参考框架,在Java世界中用于构建许多非常高级的服务器和客户端工具。 这些概念与Swift编程语言非常吻合。 很好的契合度让我认为这确实可以加速Swift服务器端开发和跨平台推广。 我敢打赌它可能会产生很大的影响,并帮助Swift继续迅速崛起为顶级编程语言之一。 Swift-NIO依赖于非阻塞IO。 这意味着您可以通过使中间层分派准备好处理到工作线程的网络操作的方式,来管理相对数量的线程,从而管理大量的网络连接。 因此,从处理线程的角度来看,网络操作是无阻塞的。 他们可以完全使用CPU,因为它们可以共享大量套接字的网络操作,而无需等待。 在Swift-NIO措辞中,阻塞操作被委派给通道。 通道将网络操作上的事件触发到负责管理通道的事件循环。 开发人员将服务器或客户端的逻辑作为处理程序提供给事件循环。 处理程序是实现触发网络事件时执行的操作的代码段。 可以将它们组合在处理程序管道中以提供额外的灵活性。 这为去耦增加了一层,并使处理程序更可重用。 在客户端服务器环境中,“ Hello World”应用程序通常是“ Echo”服务器。 服务器接收客户端发送的内容,并将其发送回客户端。 使用Swift-NIO非常容易实现。 让我们看看如何做到。 请注意,以下步骤已在MacOS上进行了测试,但是如果您已安装Swift,则它们也应该在Linux上也可以使用。 您可以使用Swift命令行引导项目: $ mkdir EchoServer $ cd EchoServer / $ swift package init —键入可执行文件 创建可执行程序包:EchoServer 创建Package.swift 创建README.md 创建.gitignore 创建源/ 创建Sources / EchoServer / […]