Tag: Kitura

服务器端Swift与Kitura和Bluemix –编码自我–中

服务器端Swift与Kitura和Bluemix IBM Bluemix是一个云平台即服务解决方案,它使您能够专注于编写应用程序,而Bluemix处理大多数DevOps-y东西,例如网络,服务器,存储和软件依赖项。 它支持多种编程语言,包括Swift。 它也易于使用-您只需管理Web浏览器即可管理服务。 您甚至可以在IBM Swift Sandbox的浏览器中编写Swift代码。 本教程将带您了解Kitura和Bluemix入门的基础知识。 首先,我们将设置Bluemix,以便在准备就绪时可以以最小的努力上载我们的应用程序并启动服务器。 然后,我们将逐步完成Swift Package Manager和Kitura。 一旦建立了一定的熟悉度,我们将构建一些有用的东西并将其上传到Bluemix。 我们将使用Swift Package Manager中的SwiftCron软件包构建一个小型服务,该服务采用cron表达式并返回该表达式的可读描述。 设置IBM Bluemix 首先,请前往IBM BlueMix并注册免费的30天试用版。 登录时,系统会要求您命名组织的名称,这实际上是可以添加其他人员到您的团队并选择其位置的团队。 只需选择最接近您的位置-这些选项就限于Bluemix当前已设置基础架构的位置。 然后,将要求您设置一个空间,这是Bluemix组织应用程序和服务的方式。 然后,您将导航到仪表盘,该仪表盘是空的。 单击创建应用程序,我们将使事情变得更加生动。 Bluemix是基于Cloud Foundry构建的,Cloud Foundry是一种开源平台即服务(PaaS)。 然后,Bluemix为一些流行的Web框架(例如Python的Flask框架)提供了样板,以帮助您立即开始。 不幸的是,Swift还没有样板产品,因此我们将向下滚动这些诱人的选项,移至Cloud Foundry Apps部分。 为Swift选择运行时 。 设置您的应用名称。 我选择了SwiftCronServer,并将主机名保留为相同的自动填充值。 只需几分钟,我们已经在启动服务器。 那不是那么容易吗? 返回仪表盘,您应该可以看到您的新应用。 点击它。 然后,向下滚动到“持续交付”部分,然后单击“启用”。 您可以使用命令行界面手动将代码部署到Bluemix,但是将其向上游推送到Github并自动构建它更容易,更可靠。 在“持续交付工具链”页面上,向下滚动到可配置的集成。 链接您的GitHub帐户,然后单击“创建”。 轻松享受SPM和Kitura 现在是时候在本地运行Kitura项目了。 为您的项目创建一个新文件夹。 mkdir SwiftCronServer cd SwiftCronServer 我们将要使用的Kitura和Cron库都可以通过Swift Package Manager作为软件包使用,因此,我们将使用带有swift […]

Heroku上Kitura入门

Kitura是IBM创建的Web框架。 这是一个非常简单的框架,与Sinatra,Express,Lumen和Flask之类的框架有很多相似之处。 它是用Swift编写的,因此在使用它方面有很多吸引力,因为您可以开始考虑使用相同的语言编写客户端代码(假设您正在为iOS和OS X进行构建)和服务器端代码。 这不是我们第一次看到这种东西。 在基于浏览器的应用程序领域,借助NodeJS之类的工具,您可以在浏览器和服务器上编写Javascript。 在Android上,由于使用Java,您可以与您的后端和应用程序共享代码(这在Java领域绝对是一个巨大的胜利)。 就个人而言,随着Swift 3的发布,我开始对Swift作为服务器端语言非常感兴趣,该版本捆绑在Swift Package Manager(SPM)和Foundation的本机端口中。 对于那些不了解的人来说,Foundation是为Objective-C和Swift带来很多好处的关键框架之一。 由于原始的Foundation库是用Objective-C编写的,因此Linux上的Swift尚无法使用它,但是现在人们已经在努力在Swift中重新实现Foundation本身,并且它开始取得成果。 设定 迅速 为了便于撰写本文,我假设您正在OS X上运行,在这种情况下,您将要跳到App Store并获取Xcode8。如果您不是App Store的粉丝,那么它也是可通过Apple Developer Portal直接下载。 在Linux上进行设置有点麻烦,但是Swift网站上为您概述了一些安装步骤。 安装完所有内容后,您将可以运行: $ swift-版本 这应该显示您当前已安装的Swift版本。 对于本指南,我假设您正在运行Swift 3.0。 Heroku 接下来,您将要抓住Heroku工具带。 这将为您的计算机设置所有内容,我假设您已经在Heroku中创建了一个帐户,并且此时已使用工具带登录。 不用担心,您现在还不需要创建任何应用。 建立 现在您已经设置好开发环境,我们可以开始实际构建应用程序了。 首先,您将要为您的应用程序创建项目结构。 Swift Package Manager(SPM)在这里为您提供帮助: $ mkdir myFirstKituraApp $ cd myFirstKituraApp $ swift软件包init –type可执行文件 这将为您设置以下标准SPM文件夹结构: 。 ├──.gitignore ├──Package.swift ├──套餐 ├──资料来源 │└──main.swift └──测试 […]

服务器端Swift简介(工具和框架)

这篇文章旨在提供Server Side Swift开发的介绍,并介绍工具和框架。 工具类 Swift软件包管理器(SPM) Swift Package Manager是在Mac和Linux上运行的必不可少的构建和依赖性管理工具。 苹果/快速包装经理 swift-package-manager – Swift编程语言的软件包管理器 github.com 最有用的SPM命令包括: swift build以构建快速软件包 swift build -c release构建用于发布的快速代码 swift package update以更新依赖项 swift package generate-xcodeproj用于从Swift代码创建或更新Xcode项目 swift package resolve以获取所有依赖项 将来,我将发布更完整的SPM指南。 Xcode Apple提供的IDE可以编写,编译和调试Swift代码。 尽管还有其他选择可以开发Server Side Swift ,但是Xcode是最传统的选择。 Xcode –苹果开发人员 Xcode包含了为iPhone,iPad,Mac,Apple Watch和Apple TV创建出色应用程序所需的一切。 developer.apple.com 其他选项包括 文本编辑器,例如vim,Sublime Text,Atom和VS Code + SPM Jetbrains的AppCode AppCode:JetBrains的Smart Swift和Obj-C IDE 适用于iOS / macOS开发的智能IDE,专注于代码质量,高效的代码导航,智能的代码完成… […]

顶级服务器端Swift框架与Node.js的基准测试

方法与注释 为什么要使用博客和JSON? 最简单的是,博客不仅仅是返回“ Hello,world!”,而且JSON是一个非常常见的用例。 好的基准测试在每个框架上都需要类似的负载,并且需要更多的负载才能在屏幕上打印两个单词。 保持相同 我试图坚持的主要主题之一是使所有博客尽可能彼此相似,同时仍按照每个框架的样式和语法进行开发。 许多结构(如内容生成)会逐字重复,因此每个框架都可以使用相同的数据模型,但是诸如URL路由之类的方面有时会完全不同,以适应每个框架的语法和样式。 细微差异 服务器端Swift框架之间有一些细微的差异需要注意。 如果Kitura和Zewo的绝对文件路径中有空格,则在构建时都会遇到问题。 在任何框架中,Xcode在使用绝对文件路径中的空格进行构建时也存在问题。 Zewo使用的是05–09-a Swift快照,这意味着它在发布模式下构建时遇到问题,必须在调试模式下运行。 因此,所有Zewo测试都是使用Zewo构建并在调试模式下运行的(没有发行优化)。 静态文件处理是服务器端Swift框架之间争论的焦点。 Vapor和Zewo都建议使用Nginx作为静态文件处理的代理,然后将该框架作为后端的处理能力。 Perfect建议使用其内置的处理程序,并且我还没有看到IBM关于他们对此主题的观点的任何评论。 由于这项研究不是关于框架如何与已建立的服务器应用程序(如Nginx)一起工作的,因此每个框架都在本地使用静态文件处理。 如果选择考虑这一点,则可能在Vapor和Zewo上都可以实现更好的性能。 这也是我包含JSON测试的第二个原因。 [9月1日添加了更新的结果] Zewo是单线程应用程序。 您可以通过在每个可用CPU上运行一个应用程序实例来获得额外的性能,因为它们遵循并发而非多线程模型。 为了本研究的目的,每个应用程序仅运行一个实例。 工具链。 每个框架都在构建与Apple不同的开发快照工具链。 在最终测试时,它们是: –完美的DEVELOPMENT-SNAPSHOT-2016-08–24-a – Vapor&Kitura的DEVELOPMENT-SNAPSHOT-2016-07–25-a – Zewo的DEVELOPMENT-SNAPSHOT-2016-05–09-a Vapor具有用于运行发行版的特殊语法。 如果仅执行二进制文件,则将获得一些额外的控制台日志记录,这些日志记录将有助于开发和调试过程。 那有一点点开销。 要以发布模式运行Vapor,您需要添加 –env =生产 到可执行文件。 即 .build / release / App –env =生产 [9月1日添加了更新的结果]使用Zewo时,即使不能在05-09-a工具链上以发布模式快速构建,也可以通过传递以下参数来添加一些发布模式优化: 迅速建立-Xswiftc -O Node.js / Express不生成,也不区分调试/发布 静态文件处理包含在Vapor的默认中间件中。 […]

使用Kitura的Server Side Swift入门

服务器端Swift在iOS开发社区中正在蓬勃发展,现在是时候打破其他编程语言和框架的束缚,并以我们心爱的Swift语言实现一切。 有几种服务器端Swift框架可用,但最受欢迎的三个框架如下: 汽 Kitura 完善 有时我介绍了Vapor框架。 这篇文章讨论了如何开始使用Kitura,Kitura是IBM的服务器端Swift框架。 先决条件: Xcode 8或以上 斯威夫特3.0 使用Swift Package Manager安装Kitura软件包: 第一步是使用Swift Package Manager安装Kitura软件包。 在此之前,您需要初始化Swift Package Manager。 创建一个名为“ hello-kitura”的文件夹,然后使用终端进入该文件夹。 一次,在文件夹中初始化Swift软件包,如下所示: 运行“ swift build”命令来构建代码,如下所示: 构建完成后,您可以使用以下命令运行可执行文件。 世界您好! 当您执行代码时,它将在“ main.swift”中运行所有代码。 如果打开“ main.swift”文件,则会发现以下代码行。 打印(“ Hello World”) 这确认您的包已成功初始化。 现在打开您的Package.swift文件,其中包含您需要在应用程序中使用的所有软件包。 默认情况下,Package.swift将包含以下代码行。 导入PackageDescription 让包=包( 名称:“ hello-kitura” ) 如此,您可以看到Package.swift文件没有引用任何包或依赖项。 让我们对其进行修复,并添加对Kitura项目的依赖。 除了Kitura,我们还添加了对HeliumLogger的依赖。 HeliumLogger用于记录从Kitura生成的事件,对调试请求非常有帮助。 对Package.swift文件进行上述更改后,跳至终端并运行以下命令。 快速构建 这将触发构建并下载Package.swift文件中包含的所有依赖项。 一切完成后,您可能会看到类似以下内容的内容。 最后一步是生成Xcode项目,以便您可以在自己喜欢的编辑器中开始使用Kitura应用程序🙂 迅捷包generate-xcodeproj 这将生成Xcode项目。 您可以使用以下命令从终端打开Xcode项目。 […]

具有Kitura编码路由的服务器端Swift CRUD API

Kitura是IBM创建的服务器端Swift Web框架。 它已获得MIT许可,免费使用,并且源代码是开放源代码。 最近,随着2.0版本的发布,Kitura团队引入了新的Codable Routes功能,这使开发人员可以非常轻松地使用Swift 4 Codable自动处理URL请求和响应。 Swift 4引入了Codable协议,这意味着实现Codable协议的类型能够将其属性解码和编码为任何外部表示形式,例如JSON。 在语言级别上,许多原始数据类型(例如Int,String,Double,Data,URL)已经是Codable类型,包含Codable类型的Array和Dictionary也已经是Codable类型。 struct TodoItem:可编码{ var id:字符串 var标题:字符串 var内容:字符串 } //将TodoItem结构编码为JSON数据 让todoItem = TodoItem(id:“ 1”,标题:“ hello”,内容:“ world”) 让jsonData =试试! JSONEncoder.encode(todoItem)//将JSON数据解码为TodoItem结构 让todoItem2 =试试! JSONDecoder.decode(TodoItem.self,来自:jsonData) 使用内置的JSONEncoder和JSONDecoder类的Swift,从JSON编码和解码可编码对象,反之亦然。 使用Codable,我们不必手动解析JSON或使用第三方库(如SwiftyJSON)进行解析。 可编码的工作就像魔术一样。 使用Kitura Codable Routes,我们可以创建一个Router终结点方法,该方法接受请求的Codable对象,并将完成闭合传递给该Codable对象作为响应。 作为开发人员,我们不再需要手动编写编码和解码逻辑。 要查看所有这些操作,让我们使用内存数据存储区为TodoItem构建一个CRUD API。 进口Kitura 导入KituraContractsstruct TodoItem:可编码{ var id:字符串 var标题:字符串 var detail:字符串 } var todos = [ TodoItem(id:“ 1”,标题:“清理房子”,详细信息:“我的房子”), TodoItem(id:“ […]

使用Kitura在Swift中进行全栈编程

Swift成为了完全开放源代码(Apache 2.0许可)项目,并且走得更远,这使得Swift不仅可以在Darwin设备上运行,而且可以在Linux和其他平台(例如Android,raspberry-pi,大型机)上运行。 所有繁重的工作都是由Swift社区完成的,以使Swift可以在Linux和多个平台上使用,并且还在不断增长。 这意味着在大多数平台上都可以使用Foundation API,Swift语言,所有标准库以及用于并发的Dispatch。 现在大约有数十种可用的框架,包括IBM的Kitura,PerfectlySoft的Perfect,基于Swift语言的Q理论的Vapor。 为什么选择Swift? Swift是Java之类的高性能语言 Swift的内存使用率低 重用客户端代码,工作空间,工具和组件可以加快开发速度并提高生产率 IBM的Kitura Kitura是使用IBM开发的Swift语言编写的服务器端模块化框架。 Swift语言主要用于为Apple App Store创建基于iOS的应用程序。 开发人员必须为Java,Python,Ruby等后端编程选择不同的语言,基于Swift的客户端可以将其连接以进行CRUD操作。 Kitura使iOS开发人员更容易使用一种语言进行前端和后端编程,并创建完整的应用程序。 Kitura框架的重点 基于模块化和打包的Web框架 开箱即用,并利用Foundation API在macOS和Linux上创建应用程序。 Swift具有高性能,安全性和表现力,因此具有Kitura的特质。 轻松部署到IBM Bluemix和Watson集成等云平台,以创建Cognitive应用程序。 Xcode支持可实现更快,更轻松的开发 Yeoman生成器可在几分钟内创建和部署您的应用 全栈演示 使用ServerSide Kitura,IBM Watson和IoT平台控制由PI驱动的机器人 我们将为Raspberry PI驱动的机器人创建一个Remote,并使用服务器端Kitura作为中间件。 该机器人还将与Watson Text-To-Speech服务集成在一起。 遥控器将能够控制机器人的两件事: 输入文字让机器人说出来 选择一种颜色让机器人闪烁 建筑 遥控器使用swift构建并运行在iOS设备上。RobotRemote Control应用程序使用公开的REST API与基于Kitura的服务器进行通信。 该服务器具有CRUD API以及一个接受远程输入并将其发送到IBM IoT平台的API。 服务器上的API从远程应用程序接收JSON数据,并以MQTT消息的形式发布到IoT平台。 服务器使用Aphid MQTT客户端将消息发布到IBM IoT平台上的某个主题。 该机器人是使用raspberry-PI构建的。 LED和扬声器已连接到raspberry-PI。 PI运行一个nodejs应用程序,该应用程序正在侦听来自IoT平台的MQTT消息,该主题与基于Kitura的服务器发布消息的主题相同。 接收到MQTT消息后,将使用Watson开发人员云SDK将接收到的文本转换为语音,并将其通过管道传输到安装在raspberry-PI中的扬声器。 树莓派PI还运行Python代码,将正确的颜色信号发送到LED,使其闪烁。 创建远程机器人服务器 先决条件: […]

通过Swift Package Manager生成Xcode项目

作为我使用Swift的旅程的一部分,我正在观看WWDC 2016的这段视频—“ 使用Swift开源进入服务器端 ”,并且可能是我的同事Pat提到的视频的31:36,“我经历了并创建了一个Xcode项目”。 Xcode项目的创建是为了调试Bluepic的Bluepic-Server文件夹下的服务器端代码,Bluepic是用于iOS的示例照片共享应用程序。 作为一名Swift新手,我想知道他是怎么做到的? 我开始探索各种选择,例如CMake,QT等,但没有得到我想要的东西。 注意:要快速创建,维护和监视BluePic示例,请参阅IBM Cloud Tools for Swift 在尝试Kitura( 用于 Linux(Ubuntu)上Swif t的Web框架和HTTP服务器 )时,我正在阅读Package Manager的文档,并遇到了此说明。 使用Swift快照,可以使用包管理器的支持来生成Xcode项目。 如果您的Mac上已经安装了Xcode 7.3.1或更高版本,请执行Swift快照安装步骤,最终结果应如下所示 在终端上,运行以下命令(如果尚未完成) 导出PATH = / Library / Developer / Toolchains / swift-latest.xctoolchain / usr / bin:“ $ {PATH}” 导航到终端上的BluePic-Server文件夹,然后运行以下命令以生成.XcodeProj, 迅捷包generate-xcodeproj 如果一切正常,您应该在文件夹中看到Bluepic-Server.xcodeproj文件 Vidyasagars-MacBook-Pro:Bluepic-Server VMac $ swift软件包generate-xcodeproj 克隆https://github.com/IBM-Swift/Kitura.git HEAD现在位于d643c31 IBM-Swift / Kitura#513 Changed BluePic链接 解决的版本:0.15.7 克隆https://github.com/IBM-Swift/Kitura-net.git HEAD现在位于6193ca8,通过执行更少,更长的字符转换操作来避免__CFGetConverter中的锁定瓶颈(#32) […]

服务器端Swift的火焰图

火焰图是性能概要分析数据的强大可视化形式,通常用于帮助分析复杂应用程序的CPU使用率。 它们由布伦丹·格雷格(Brendan Gregg)推广,他拥有一个不错的网站,向他们解释了所有相关信息。 这是如何生成服务器端Swift应用程序的火焰图。 就我而言,我正在对Kitura进行性能分析,但是我认为该指南适用于任何服务器端Swift应用程序。 整个过程的大部分过程都是正确地设置您的系统-希望这些信息对我来说对其他人有用! 我正在使用Ubuntu 16.04(Xenial)。 我不会尝试使用任何较旧的版本,因为perf分析器正常工作可能很棘手,但是较新的版本应该没问题。 首先,您需要在apt安装中添加一些额外的Ubuntu软件包存储库-我们需要安装的某些软件包未包含在默认存储库中。 在/etc/apt/sources.list.d/ddebs.list添加三行: deb http://ddebs.ubuntu.com xenial主要受限宇宙multiverse deb http://ddebs.ubuntu.com xenial-updates主要受限制的宇宙multiverse deb http://ddebs.ubuntu.com xenial建议的主要受限宇宙multiverse 将Ubuntu调试符号签名密钥添加到您的受信任密钥中,并重新同步程序包索引文件: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys C8CAB6595FDFF622sudo apt-get更新 现在,您可以为特定的内核安装性能分析器: 须藤apt-get install linux-tools-$(uname -r) 您可以通过运行sudo perf record /bin/true来验证perf是否正常工作。 您应该看到类似以下内容: [性能记录:唤醒1次以写入数据] [性能记录:捕获并写入0.010 MB性能数据(4个样本)] (如果收到有关kptr_restrict的错误消息,请尝试允许访问内核地址映射: echo 0 | sudo tee /proc/sys/kernel/kptr_restrict )。 像Kitura这样的服务器端Swift应用程序通常需要一些额外的系统软件包。 您可以将它们安装在一个命令中: 须藤apt-get install clang […]

IBM Kitura Bluemix-XCode设置

第一部分是如何在Mac上创建Kitura Project并将其推送到Bluemix上。 有很多方法可以做到这一点。 我选择以下方式,因为我希望能够在xcode上编写所有代码并运行本地服务器进行调试。 您可以在以下存储库中找到项目的完整源代码: zirinisp / XCodeKituraBluemix XCodeKituraBluemix – IBM Kitura Bluemix的入门Xcode项目 github.com 克隆Kitura-样品 打开终端并输入以下内容 git clone https://github.com/IBM-Bluemix/Kitura-Starter.git 重命名项目(可选) 打开Package.swift并将应用程序名称(Kitura-Starter)更改为所需的名称。 打开manifest.yml并将命令:更改为新的应用名称。 转到Sources文件夹,然后将Kitura-Starter文件夹重命名为新名称。 在xcode上运行 运行以下命令以生成Xcode项目: 迅捷包generate-xcodeproj 这将生成一个.xcodeproj文件。 在Xcode上打开 在顶部选择可执行文件: 然后运行(cmd + r)。 这将构建并运行Web应用程序。 因此,您可以忽略命令行生成和运行命令。 完成后,打开一个野生动物园窗口并访问:http:// localhost:8090 哪个应该给您Kitura入门样本页面 添加包裹 请记住,使用此设置,如果要添加新的swift程序包,则必须运行 迅捷包generate-xcodeproj 再次,因此新软件包将安装在xcode项目上。 我希望有一天xcode可以整合该过程,并且能够自动进行。 调试 您可以尝试在Controller.swift文件的getHello函数上添加断点。 然后访问localhost:8090 / hello,断点将被激活。 这非常有用,因为我们可以使用xcode的调试器。 为什么我不使用IBM Cloud Tools 我尝试使用它们,它们似乎使开发过程过于复杂。 我找不到在多台计算机上使用它们的方法。 我同时在iMac和MacBook上进行开发,并使用源代码控制来同步项目。 IBM […]