Tag: Kitura

探索服务器端Swift

当Apple开源Swift时,许多人都为在其他平台上使用这种有趣的新语言而感到非常兴奋。 早期,Swift被移植到Linux,人们开始考虑使用Swift构建服务器。 最近,随着IBM在新的Server API项目中扮演了重要角色,与IBM的现有合作伙伴关系日益加深。 作为ustwo的iOS开发人员,我决定带出服务器端Swift在Linux上试一试。 为了探索在Linux和Swift Package Manager上编写Swift的方法,我决定创建一个名为Mockingbird的小样本。 Mockingbird是模拟服务器的开端,该服务器采用Swagger规范并存入定义的各种端点。 我之所以选择使用IBM的Kitura框架是因为他们与Apple的关系,并且因为它们本身提供了云平台即服务,但是还有许多值得考虑的替代方案(Perfect,Vapor和Zewo仅举几例)。 为什么用Swift编写服务器? 除了对Swift语言的好奇心或强烈的偏好之外,为什么还要使用Swift构建服务器? 我想到了一些原因,但是最终您需要确定它们是否在您的上下文中有意义。 除了iOS或macOS应用程序(将来可能还会有Android和Windows!)之外,用Swift编写服务器还可以使两者共享代码和框架。 在维护方面,只需要编写一次代码就可以节省短期和长期的时间。 它还减少了测试方面的开销。 所有这些对独立开发者特别有吸引力,但对大型企业也可能有利。 与任何语言一样,Swift都是自以为是的,旨在以特定方式解决某些问题。 例如,Swift支持静态类型。 Swift也更喜欢简短,表达力强的代码,而不是冗长的代码。 恰恰相反,并不是说Swift在这些方面比其他语言要好。 每种语言都是一种工具,并且有自己的位置。 但是,如果这些东西吸引您,您可能会对使用Swift感兴趣。 另外,如果您打算在iOS,tvOS或watchOS上运行,则具有第一方支持和框架的语言选择将受到限制。 最近,Apple的重点肯定是Swift,而不是Objective-C或其他语言。 使用Swift构建Linux服务器 使用Kitura和IBM开发的各种相关软件包来构建Mockingbird,使其非常容易启动并将基本逻辑绑定到HTTP服务器。 编写的大部分代码用于文件管理和解析。 只需很少的代码即可构建服务器本身。 我在开发此微型服务器时遇到的最大挑战分为两类。 首先,Apple维护其Foundation框架的两个版本,这是大多数Apple开发人员使用的关键框架之一。 Darwin上的Foundation框架(即macOS,iOS等)和Linux上的Foundation框架是不同的实现。 换句话说,当您为它们提供相同的输入而获得不同的结果时,这些实现并不总是产生相同的输出。 这些实现也不完全与API兼容。 其次,Kitura在可测试性方面还有很多需要改进的地方。 在很多情况下,我都会在macOS上完美构建该软件包,但发现我启动Docker容器时,它耗尽了运行测试或启动服务器的能力。 在整个代码中,您会看到一些片段,在这些片段中,我不得不提供条件编译块,例如: #if os(Linux) 让regexObj =尝试吗? RegularExpression(模式:Endpoint.kituraPathRegexString,选项:[]) #其他 让regexObj =尝试吗? NSRegularExpression(模式:Endpoint.kituraPathRegexString) #万一 虽然我在小型实现中并不经常遇到它,但苹果的swift-corelibs-foundation(Foundation的开源版本)仍然有很多部分尚未实现(在存储库中搜索NSUnimplemented() )。 对于在Linux上使用Swift的任何人,我强烈建议您为该存储库加注星标,因为您可能需要参考已实现的内容以及在Linux和macOS上已实现的不同内容。 对于我的Kitura实施,这也是非平凡的写作测试。 由于无法对路由器的elements属性进行内部作用域确定,并且也没有可公开访问的迭代器(甚至是只读的),因此无法遍历服务器定义的API端点。 Kitura也不提供删除所有端点测试所共有的样板的测试框架(有关如何执行此操作的良好示例,请参阅ProcedureKit)。 因此,我在EndpointTests.swift编写了自己的简化版本,以简化测试。 使用Swift包管理器 […]

服务器端Swift-快速入门

罗伯特·巴兰 ( Robert Baran) 构建Swift Web应用程序使您可以重用已有的技能。 但是,如果您不是iPhone mac开发人员,也可以从头开始。 本文向您展示了最受欢迎的服务器端Swift框架,并让您进入使用Swift的更快,更安全的API的世界。 Swift于2014年发布。从那时起,它已成为iOS和macOS开发的流行解决方案。 由于Swift是开源的,人们开始使用它。 有很多尝试寻找Swift的其他用法。 事实证明,它们是服务器端的理想之选,同时比其他语言更快,更安全。 该过程的下一步是将Swift应用于服务器端开发。 在这里,重要的是要提到Swift可以在macOS,Linux甚至Windows上编译。 此外,一些框架允许开发人员创建云应用程序。 在Server-Side Swift发布之后,我感到有快速浏览它的冲动。 当时真的很难分辨它是否已准备好用于商业用途。 现在,当我看着它时,我会说它足够稳定。 因此,让我们尝试比较最受欢迎的框架。 就个人而言,我建议您在尝试每个框架之前,甚至选择最适合您的框架,它们之间会有细微的差异。 当前,最受欢迎的服务器端Swift框架是Vapor,Perfect和Kitura。 还有其他一些工具,例如Zewo和NozelIO,但是它们并不那么受欢迎,但这并没有失去它们的价值。 事实上,我调查了每个框架,我的结论是:Perfect and Vapor。 几年前,当Server-Side Swift对我来说还很陌生时,我并不相信这将是针对特定后端的最佳语言。 为什么? 因为它像其他所有后端解决方案一样工作,并且没有什么特别的特殊之处使其变得特别,但是对于我作为IOS开发人员而言,它仍然使我处于全栈状态。 我知道Java和JS,在我看来,掌握最新技术非常好,主要是因为它们使我们成为了更好的开发人员。 我还没有找到太多有关它的教程或文章。 当然,关于Java或JS的数量并不多。 因此,您必须自己创建很多东西。 我认为,Swift也比其他语言快。 如果您想将其与其他产品进行比较,这是基准服务器端swift框架vs nodeJS。 SPM — Swift Package Manager —管理发行版Swift代码,与构建系统集成在一起,以自动执行在Mac和Linux上运行的下载,编译和链接依赖项过程。 XCode — Apple IDE,用于编译和调试Obj-C和Swift代码。 AppCode — Jetbrains IDE,用于编译和调试Obj-C和Swift代码。 其他文本编辑器,如括号,VS代码,Sublime等。+ SPM 对于框架,还有很多非常特定的工具,在快速概述中,我将进一步介绍这些工具。 […]

如何在Amazon AWS上部署Swift后端

在本指南的最后,您将拥有应用程序的基本后端。 为了实现此目标,我们将使用服务器端Web框架Kitura,该框架允许我们使用Swift构建用于API端点的服务器,Postgres(一种开放源代码关系数据库)来存储数据,并使用Docker来管理资源。 现在可能您是WAT ?! 什么是API端点? 我会帮你! API是一种编程接口,由一个或多个向定义好的请求-响应消息系统公开暴露的端点组成,这些端点通常以JSON表示,并通过HTTPS协议公开。 在本指南中,我们将使用HTTP而不是HTTPS,因为最后,为了支持看似无关的字母,将有许多艰巨而漫长的步骤。 最后,我们将有三个API端点。 我们将能够查询这些端点以获得JSON响应。 该数据库是由三个表组成的数据库,这些表描述了旅行应用程序的结构。 行动! 我们到了。 首先,需要一些先决条件。 对于Kitura,如果您使用的是macOS,则需要安装Xcode 9或更高版本,并在终端上运行xcode-select –install 。 如果您使用的是Linux,请遵循本指南。 要继续,您将需要在计算机上安装其他软件包。 我建议您安装Homebrew,这是一种数据包管理器,使用以前的混乱安装可以简化您的生活。 现在已经完成所有设置,通过Homebew安装Kitura: $ brew tap ibm-swift/kitura $ brew install kitura 现在是时候安装Docker,这是一个功能强大的工具,可以帮助您管理可扩展的后端并轻松进行部署。 下载Docker并按照应用内步骤进行安装。 慢慢来,安装完成后,请登录并返回此处。 恭喜,您已经安装了所需的一切! 现在我们需要一个项目文件夹。 我们的层次结构由一个名为“ MyFirstBackend”的主文件夹组成。 在其中,我们将创建另外两个文件夹:“ 后端 ”,“ 证书 ”和“ 数据库 ”。我们将使用这些文件夹存储docker容器映像的规则。 稍后,在数据库文件夹中,我们将使用规则来创建……猜测:数据库。 相反,在后端文件夹中,我们将实例化Kitura项目。 看起来很有趣,对不对? 让我们深入研究吧! Postgres,该您了! 如前所述,Docker是执行操作系统虚拟化的功能强大的程序。 我们正在使用它,因为我们会将后端部署在云上。 这样,您将不必担心内存,空间以及普通虚拟主机的所有限制。 这要归功于云及其可扩展性。 让我们现在建立数据库! 在“ […]