Swift-一种复杂的服务器端语言

Swift-一种复杂的服务器端语言

自从苹果最初使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借鉴了大量最好的当代语言,例如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出现的地方,使您能够制作出完全成熟的多线程后端服务器,该服务器是开源的并且可以无限地配置。

无论是使用AWS,RackSpace还是您自己的物理服务器,服务器端Swift都为您提供了选择后端服务器的方式。您同样可以选择如何对服务器进行负载平衡(例如,借助出色的服务器解决方案,例如NGINX)以及如何在数据库中继续信息(例如,NoSQL安排,例如MongoDB或传统数据库) ,Postgres,MySQL或Oracle)。这样,以及您永远不会局限于一个部件排列,就可以在不影响整个应用程序代码库的情况下进行切换。

事实是,通过确定开放源代码服务器端Swift安排,例如Qutheory的Vapor,IBM的Kitura或Perfect,您可以利用大量的模块,这些模块使您仅可以设计后端。您需要的方式,可以利用Swift中当前组的能力范围来做到这一点。

服务器端Swift绝对令人信服,但是哪种结构最适合您?接下来,我们从基图拉开始对每个人进行调查。

从基图拉开始

从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的连接而获利,并且还为macOS支持提供了直接协调到其Bluemix云平台的支持。除了在Linux / Unix和macOS服务器上交叉使用的其他常规部署替代方案之外,这还为您提供了更多选择。

尽管该平台绝对提供了从Kuery到结合不同IBM API库的功能的非凡功能集。它没有Vapor拥有的网络影响力。接收Kitura要求确认和掌握自己的非常规方法来完成工作,从Kuery的工作方式到其认证机制。无论如何,考虑到它是由一个大型组织赞助的,并且着眼于这项工作,所以有一些对未来的肯定。

安装和运行Kitura

首先,最快捷的方法是利用同时支持macOS和Linux的Kitura方向线接口(CLI)。使用众所周知的软件包管理实用程序Homebrew,通过输入以下内容来安装Kitura和Kitura CLI:

$酿造水龙头ibm-swift / kitura

$ brew installkitura

在一个空缺的组织者(将用作您的企业)中,运行附带的文件以阐明您的承诺:

$ kitura初始化

在完成生成骨架应用程序时,您将看到另一个名为HelloKitura.xcodeproject的项目。通过参考Kitura的文档,您可以了解有关项目生成的更多信息。您可以在Xcode中打开最近创建的项目,并更改基本应用程序类Application.swift ,以处理对服务器根目录http:// localhost:8080 / URL的所有调用:

//将HTTP GET请求处理为“ /”

router.get(“ /”){请求,响应,下一个

response.send(“你好,世界!”)

下一个()

}

上面的代码段通过还原示例性的Hello,World!做出了反应。 。在最终运行项目之前,更改您的Xcode方案以指向HelloKitura(您的活动项目),然后按Command-R开始您的工作。当服务器运行时,在您选择的浏览器中,转到http:// localhost:8080 ,您应该在浏览器中看到hello世界。

从蒸气开始

在2016年9月Kitura发布后的几个月,就社区规模和模块数量而言,Qutheory的Vapor通常被认为是最杰出的。它建立在Apple的Swift-nio框架之上,使其成为真正的执行引擎。完全不像Kitura和不同的阶段,它们不是简单地在Swift中构建的,而是在Node.js或其他中间人解析器上构建的,Vapor将自身与任何依赖项分离以提供Swift解析器并提供清晰一致的API。

Vapor为Kitura等SQL供应商(例如MySQL和PostgreSQL)以及NoSQL供应商(例如Redis和MongoDB)提供了彻底的数据库帮助。尽管Kitura拥有自己的Kuery ORM解决方案,但Vapor利用Fluent ORM来支持我刚刚引用的数据库,这使得将ORM扩展到其他第三方数据库提供商的过程相当简单。 Vapor在本身支持Apple的Push Notification Service,还支持SMTP推送电子邮件通知的过程中将自己与其他框架隔离开来。

Kitura实施自己的身份验证框架时,Vapor将Stormpath的Turnstile身份验证库本机生成。与Kitura一样,该平台也支持Mustache和Markdown诱惑,此外,它还拥有自己的Swift本机表达模板语言,Vapor像其他服务器端Swift框架一样,还附带了自己的CLI马达,具有扩展应用程序命令的能力。自定义标志的在线参数。

安装和运行

要开始使用Vapor,首先需要安装Vapor工具套件,该套件包括所有库依赖项和CLI工具箱。在终端中输入以下内容,使用Homebrew进行安装:

$ brew installvapor / tap / vapor

在安装完成时,您可以通过键入vapor -help确认Vapor已成功安装。要创建一个项目,请键入以下内容,并用您自己的项目名称代替:

$蒸气新

Vapor引擎将构建类似于以下内容的文件夹结构:

├──公众

├──资料来源

│├──应用

││├──控制器

││├──型号

││├──boot.swift

││├──configure.swift

││└──route.swift

│└──跑

│└──main.swift

├──测试

│└──AppTests

└──Package.swift

要实际创建Xcode项目,同样需要从项目文件夹中明确输入以下命令:

$ vapor xcode

最后,要构建和运行项目,请从Xcode中选择“运行”方案以及My Mac的开发目标设备,然后像对待其他任何Xcode项目一样,按“运行”按钮。鉴于您的Xcode项目没有任何错误,您应该在终端中看到以下确认消息:

服务器从http:// localhost:8080启动

继续,在任何浏览器中输入该URL,您应该看到您的应用程序正在运行。

从完美开始

最后,我们来看看Perfect by PerfectlySoft,它是功能丰富的服务器端平台,例如Vapor和Kitura。完美整合了与以前的供应商类似的标准功能,从使用Mustache或Markdown进行模板制作到通过Web套接字进行联网,再加上Apple Push Notification和SMTP。

像其他服务器端平台一样,Perfect也有自己的ORM实现,即StORM平台(Perfect StORM),该平台为MySQL,PostgreSQL和其他重要的关系数据库以及MongoDB,Redis和其他NoSQL解决方案提供了本机支持。 Perfect被排除在外的一个突出特点是CLI,但是该框架通过本机macOS应用程序弥补了这一不足。

像Vapor一样,Perfect还引入了Turnstile来增强其身份验证机制,并扩展为与StORM进行更紧密的交互。这种安排相对于其他安排的另一种资格是它支持的大量本机实用程序库,包括它们自己的一种cURL包装器以及用于处理文件和文件夹的工具。 Perfect的开发人员基础是第二大的,几乎与Vapor的开发人员并驾齐驱,这意味着您拥有一个强大的社区来支持此平台,同时拥有丰富的教育资源,这使您可以确定是否选择了该平台。

安装和运行

使用Perfect启动和运行非常简单。最初,通过输入以下内容来克隆PerfectlySoft存储库:

$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git

在克隆的文件夹中,构建项目:

$快速建立

最后,运行项目,该项目将在地址0.0.0.0:8181上运行本地服务器

.build / debug / PerfectTemplate

您还可以通过首先创建一个新项目,在Xcode上运行您的项目,如下所示:

$ swift包generate-xcodeproj

在Xcode中,在构建和运行项目之前,请确保将可执行目标指向My Mac。

结论

Swift进入开源网络,推动了Swift解决方案的发展,超出了客户端应用程序的范围,后端服务器框架变成了以下郊区。由三个杰出的项目推动-Qutheory的Vapor,IBM的Kitura和Perfect。服务器端Swift已授权iOS(和macOS)开发人员成为全栈开发人员。这可以消除对Node.js,PHP或.NET后端开发人员的依赖。服务器端Swift还使组能够控制后端,而不必依赖Firebase或CloudKit等移动后端即服务器解决方案。

服务器端Swift并非适合每个人,您需要确定后端需要多少控制权以及是否适合自己滚动。此外,我没有尝试告诉您哪种服务器端Swift解决方案是理想的。毫无疑问,开发人员会因决策而破产,这三者中的每一个都给出了独特而成熟的观点,值得尝试。我敦促您使用示例代码中的每一个,评估语言结构,并与它们的特定社区联系,以查看哪种解决方案最适合您。