Slimane服务器端Swift
这是我在Medium上的第一个帖子。
什么是Slimane?
一个明确的启发性的Swift3微型框架和HTTP服务器。 https://github.com/noppoMan/Slimane
在对其进行介绍之前,我可以花一点时间讲讲故事为什么开始吗?
首先,在我的工程生涯中,我将大部分时间用于基础架构,后端,数据分析和Web开发。 所以我对Swift(尤其是iOS和Cocoa)的经验不足。 但是在2015年3月,我有机会为LifeClips(类似Blogging平台的中型平台)构建了一个iOS应用,然后我第一次使用Swift。 很快,我就爱上了Swift语法,例如强大的类型系统和足以与LL进行比较的灵活性。
迅速成为OSS
时间流逝…终于在2015年12月成为开源。然后我想我应该做点什么,那就是Slimane。
首先,这只是我的业余爱好。 尽管是业余爱好,但我每天都在做很多现代Web系统所需的功能/模块,有一天我意识到它可以在实际的Project中使用…(我正在等待Swift3发布)
特征
- 100%与事件循环后端(libuv)异步
- 独立的HTTP服务器
- 快点
- 模块化的
- 完全托管的异步流,TCP,管道,文件系统,进程,计时器等。
- 采用开放式快速
可用的中间件和模块
- WS :Websoket服务器/客户端
- 衣架 :异步HTTP客户端
- 画眉 :轻量级的承诺实现
- QWFuture :将来通过uv_queue_work实现
- 会话 :SessionMiddleware在Slimane应用中启用会话。
- Redis :用于会话的Redis客户端和Redis存储
- BodyParser :用于在HTTP请求的主体中解析JSON和formData。
- TemplateEngine:小胡子和javascript模板
还有更多…https://github.com/slimane-swift
入门
目的是建立一个快速的服务器并尝试使用一些示例。 不用担心,您无需编写任何代码。 试试看!
安装
按照安装指南设置机器。
https://github.com/noppoMan/Slimane/wiki/Install-Guide
生成并启动服务器和应用程序
cd / path / to / your / slimane-example
进行调试
.build / debug / SlimaneExample
终端说,服务器监听0.0.0.0:3000。 到目前为止,情况看起来不错,但让我们在浏览器中进行检查。
似乎工作正常!
再试试!
sliman-example包含一些实用示例,这些示例可以使Web应用程序具有许多模块。 我从中挑选了一些有趣的示例,并在下面进行介绍。
与Websocket聊天的应用程序
该服务器在本地计算机上运行,但是如果Redis Client支持Pub / Sub,我们可以在服务器与服务器之间广播数据包。 我也在考虑使用Slimane实现Socket.io后端。
使用阻止API
当前,我们的项目还没有任何Mysql Client。 不用担心,我们可以在Swift中使用某些oss,例如Zewo / Mysql,novi / swift-mysql等。
封锁API的问题
但是应该有一个问题。 由于依赖于libmysqlclient…,几乎Mysql客户端具有阻塞的api。 这意味着在等待操作时事件循环被阻塞。 因此,这意味着我们应该从头开始?
不!!
鹅口疮
我们可以避免使用QWFuture进行阻止。 如您所知,它是uv_queue_work的包装,带有Future语法。 可以将其与Thrush(Promise)结合使用以构成现代异步流程。
在关闭QWFuture 时,它是在单独的线程中执行的,并且不会被阻塞。 当任务完成或抛出错误时,将调用future.onSuccess或future.onFailure。
多进程环境上的集群模式
Slimane的单个实例在单个线程中运行。 为了利用多核系统,用户有时会希望启动Slimane进程集群来处理负载。
那些怎么样 Slimane具有更多功能来构建Web应用程序,例如Session / Cookie,JSON,Rest api服务器等。
现在怎么办?
实际上,用Swift编写服务器端代码非常有趣,它可能成为Web开发的下一个主流。 因此,我相信Slimane不会成为主要的框架工作,但它应该具有重要意义,可以告诉人们服务器端swift的工作方式,这真有趣。
无论如何,我一直在独自制作Slimane …所以我想为此建立一个社区。 因此,如果您对Slimane感兴趣,请与我联系(yuki@miketokyo.com)。