自Apple首次推出Swift作为Objective-C的后继产品以来,它彻底改变了社区对iOS,macOS,watchOS和tvOS应用进行编码的方式。 当Swift成为开源平台时,它为移动和客户端应用程序之外的语言提供了新的可能性-Swift也成为服务器语言! 在本教程中,您将学习什么是服务器端Swift,以及为什么要在后端使用Swift。
服务器端Swift计划由三个杰出的项目推动-Qutheory的Vapor , IBM的Kitura和Perfect –旨在让Swift开发人员创建完全成熟的后端服务。 从本质上讲,这将使此类开发人员转变为全栈开发人员,从而无需依赖Node或PHP或控制BaaS平台(例如Google的Firebase)。
本文目的
在本文中,您将学习有关服务器端Swift的所有知识。 首先,我将说明服务器端Swift的工作原理,然后向您展示如何开始使用Kitura,Vapor和Perfect框架。
什么是服务器端Swift?
Swift于2014年由Apple首次发布,并Swift成为增长最快的编程语言之一。 Swift借鉴了许多最好的当代语言,例如Python,它既优雅又易于使用。 它使工程师摆脱了Objective-C的技术束缚,从而使工作更流畅,更直观。
2015年12月,Apple再次发布了一项具有里程碑意义的公告,并使其Swift语言及其支持库,调试器和程序包管理器成为Apache 2.0许可下的开源项目,为公众开放了平台以创建拉取请求和有助于。 从Objective-C的转变不仅吸引了许多向App Store做出贡献的Objective-C开发人员,而且使所有技能和背景的开发人员都可以通过Swift轻松进入Apple生态系统。
但是,尽管从历史上看,苹果的开发工具使开发人员更容易为App Store创建视觉上引人入胜的引人入胜的应用程序,但一个值得注意的瓶颈是,项目仍需要专业的后端开发人员来创建复杂的数据驱动的应用程序。 因此,iOS和macOS开发人员要么需要Python,PHP或Node开发人员的帮助来创建他们的后端数据库,要么自己掌握这项技能,从而导致要完成项目目标的工作量大大增加。
尽管后端即服务(BaaS)已经为iOS开发人员带来了帮助,但无代码的后端解决方案(例如Google的Firebase和苹果自己的CloudKit)减轻了后端的复杂性,但许多团队和项目有更多需求。 这就是服务器端Swift出现的地方,它允许您创建一个成熟的多线程后端服务器,该服务器是开源的并且可以无限地配置。
服务器端Swift可让您选择如何使用AWS,RackSpace或您自己的物理服务器托管后端服务器。 您还可以选择如何对服务器进行负载平衡(例如通过流行的服务器解决方案,例如NGINX)以及如何将数据持久存储在数据库中(例如,NoSQL解决方案,例如MongoDB,或传统数据库,例如Postgres,MySQL或Oracle) 。 不仅如此,而且您永远不会局限于一个组件解决方案,您可以在不影响整个应用程序代码库的情况下进行切换。
关键是,通过选择开源服务器端Swift解决方案(如Qutheory的Vapor , IBM的Kitura或Perfect) ,您可以利用大量的插件,使您可以按照自己的方式配置后端利用现有团队在Swift中的技能来做到这一点。
服务器端Swift当然听起来很引人注目,但是哪个框架适合您? 接下来,我们从Kitura开始依次介绍每个组件。
Kitura入门
总览
从Kitura开始,您有了一个平台,该平台最初于2016年2月发布,并于当年晚些时候在Apple的WWDC上声名显赫,代表着IBM尝试使用Swift支持服务器端网络,然后将其从Apple手里转变为开源。
一般来说,Kitura专注于约定而不是配置:在选择要构建的特定框架和库之前,它会使用存根构建初始项目。 Kitura的身份验证机制由其自己的Kitura-Credentials中间件框架支持,您可以使用处理JSON Web令牌 (JWT)的OpenID从大量的身份验证机制中进行选择,从传统的用户名/密码到社交媒体登录和联合身份验证。 )。
Kitura的数据库ORM解决方案由Kuery提供支持,以消除直接处理SQL的复杂性,它通过各种其他兼容插件原生支持常见的关系数据库(例如MySQL,SQLite和PostgreSQL)以及其他数据库解决方案,包括NoSQL数据库。
Kitura还使用诸如Stencil和Markdown之类的流行插件,为诸如HTML模板之类的事情提供了其他有用的插件。 来自IBM的服务器端框架还得益于与IBM Watson API的紧密连接,并提供了直接集成到其Bluemix云平台中的本机macOS支持。 这提供了一个可供您使用的附加选项,以及跨Linux / Unix和macOS服务器的其他传统部署选项。
尽管该平台确实提供了一组独特的功能(从Kuery到与各种IBM API库集成的功能),但它不具备Vapor拥有的社区影响力。 采纳Kitura要求欣赏和拥抱自己的非传统方式,从Kuery的运作方式到其认证机制。 但是,鉴于它得到了一家专注于企业的大公司的支持,因此内置了一些面向未来的保证。
安装和运行Kitura
入门的最快方法是使用macOS和Linux均支持的Kitura命令行界面(CLI)。 使用流行的软件包管理实用程序Homebrew ,输入以下内容来安装Kitura和Kitura CLI:
- $ brew tap ibm-swift/kitura
- $ brew install kitura
在将用作项目的空文件夹中,运行以下命令来初始化项目:
$ kitura init
完成骨架应用程序的生成后,您会注意到一个名为HelloKitura.xcodeproject的新项目。 您可以通过参考Kitura的官方文档来了解有关项目生成的更多信息。 您可以在Xcode中打开新生成的项目,然后编辑主应用程序类Application.swift ,以处理对服务器根目录http:// localhost:8080 / URL的所有调用:
- // Handle HTTP GET requests to "/"
- router.get("/") { request, response, next in
- response.send("Hello, World!")
- next()
- }
上面的代码段通过返回经典的Hello,World!进行响应。 。 在最终运行项目之前,请更改Xcode方案以指向HelloKitura(您的活动项目),然后按Command - R启动项目。 在服务器运行时,在您选择的浏览器中,转到http:// localhost:8080 ,您应该在浏览器中看到hello world文本。
更多信息
查看以下链接,了解有关Kitura的更多信息。
蒸气入门
总览
在2016年9月,比Kitura发行晚了几个月,就社区规模和插件数量而言, Qutheory的Vapor被广泛认为是最受欢迎的。 它建立在Apple的Swift-nio框架之上,使其成为真正的性能强国。 与Kitura和其他平台(不是完全在Swift中构建,而是在Node.js或其他中间解析器上构建)不同,Vapor将其自身与任何依赖项分离以提供Swift解析器并提供清晰易读的API。
Vapor为SQL供应商(如MySQL和PostgreSQL)以及NoSQL供应商(如Redis和MongoDB,如Kitura)提供全面的数据库支持。 Kitura拥有自己的Kuery ORM解决方案,而Vapor利用Fluent ORM支持我刚刚提到的数据库,这使得将ORM扩展到其他第三方数据库提供商相对容易。 Vapor在自身支持Apple的Push Notification Service以及支持SMTP推送电子邮件通知方面与其他框架独立。
Kitura实现了自己的身份验证框架,而Vapor将Stormpath的Turnstile身份验证库本地移植 。 与Kitura一样,该平台也支持Mustache和Markdown模板,以及其自己的Swift原生表达模板语言Leaf 。 与其他服务器端Swift框架一样,Vapor还具有自己的CLI引擎,并具有使用自定义标志扩展应用程序命令行参数的功能。
安装和运行
要开始使用Vapor,请先安装Vapor工具箱 ,该工具箱由所有库依赖项和CLI工具箱组成。 在终端中输入以下内容,使用Homebrew进行安装:
$ brew install vapor/tap/vapor
安装完成后,您可以通过输入vapor —help
确认Vapor已成功安装。 要创建一个项目,请输入以下内容,并用您自己的项目名称代替:
$ vapor new <PROJECT_NAME>
Vapor引擎将构建类似于以下内容的文件夹结构:
- .
- ├── Public
- ├── Sources
- │ ├── App
- │ │ ├── Controllers
- │ │ ├── Models
- │ │ ├── boot.swift
- │ │ ├── configure.swift
- │ │ └── routes.swift
- │ └── Run
- │ └── main.swift
- ├── Tests
- │ └── AppTests
- └── Package.swift
要实际创建Xcode项目,您还需要在项目文件夹中明确输入以下命令:
$ vapor xcode
最后,要构建和运行项目,请从Xcode中选择“ 运行”方案以及My Mac的部署目标设备,然后像对待其他任何Xcode项目一样按“ 运行”按钮。 如果您的Xcode项目没有遇到任何错误,那么您应该在终端中看到以下确认消息:
Server starting on http://localhost:8080
继续,在您选择的浏览器中输入该URL,您应该看到您的应用程序正在运行。
更多信息
请查看以下链接以获取更多信息。
完美入门
总览
最后,我们来看一下PerfectlySoft的Perfect ,PerfectlySoft是功能强大的服务器端平台,如Vapor和Kitura。 完美包括与以前的供应商相同的标准功能,从使用Moustache或Markdown进行模板到使用Web套接字以及Apple Push Notification和SMTP进行联网。
与其他服务器端平台一样,Perfect拥有自己的ORM实施,即StORM平台 (Perfect StORM),该平台为MySQL,PostgreSQL和其他重要关系数据库以及MongoDB,Redis和其他NoSQL解决方案提供本机支持。 Perfect的一个显着遗漏是CLI,但是该框架通过本机macOS应用弥补了这一不足。
像蒸汽,完美也辊闸烤电源其认证机制,扩展更加紧密地结合风暴进行交互。 此解决方案与其他解决方案之间的另一个区别是,它支持许多本机实用程序库,包括它们自己的cURL包装器以及用于处理文件和文件夹的工具。 Perfect的开发人员基础是第二大,几乎与Vapor的开发人员持平,这意味着您拥有一个强大的社区来支持此平台,并且拥有丰富的教育资源,如果您选择它,将给您带来信心。
安装和运行
使用Perfect启动并运行非常简单。 首先,通过输入以下内容克隆PerfectlySoft存储库:
$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git
在克隆的文件夹中,构建项目:
$ swift build
最后,运行项目,该项目将在地址0.0.0.0:8181上运行本地服务器:
.build/debug/PerfectTemplate
您还可以通过首先生成一个新项目,在Xcode上运行您的项目,如下所示:
$ swift package generate-xcodeproj
在Xcode中,确保在构建和运行项目之前将可执行目标指向My Mac 。
更多信息
请查看以下链接,以获取有关Perfect框架的更多信息。
结论
Swift向开源社区的发布促使Swift解决方案超越了客户端应用程序,后端服务器框架成为下一个前沿领域。 在三个杰出的项目(Qutheory的Vapor , IBM的Kitura和Perfect) 的推动下 ,服务器端Swift使iOS(和macOS)工程师成为了全栈开发人员。 这可以消除对Node.js,PHP或.NET后端工程师的依赖。 服务器端Swift也使团队能够控制后端,而不必依赖Firebase或CloudKit等移动后端即服务解决方案。
服务器端Swift并不适合每个人:您必须决定后端需要多少控制权,以及是否适合自己滚动。 另外,我也没有尝试告诉您哪种服务器端Swift解决方案是最好的。 开发人员肯定会选择众多,这三者提供了独特而成熟的方法,值得尝试。 我鼓励您试用每个示例代码,评估语法,并与各自的社区联系,看看哪种解决方案最适合您。
翻译自: https://code.tutsplus.com/tutorials/how-to-code-with-swift-on-the-server--cms-31608