当前位置:首页 > CN2资讯 > 正文内容

swift搭建服务器 swift写服务器

3天前CN2资讯


用swift写服务器的已经不是什么新鲜事了,这几年的发展,也是swift在服务端的表现越来越成熟,目前比较流行服务端框架主要有Vapor、Perfect、Kitura和Zewo,他们各有长短,本人这次主要是使用Perfect来写的,因为Perfect的功能比较完善,在GitHub上具有1W+的星,而且有一个非常重要的原因是,Perfect有中文文档。

Perfect 包括了您所期待的所有基本功能,包括路由、websockets 基于 HTTP 的网络套接字、TLS(SSL)通信加密、Mustache 模板和 Markdown 模板、JSON 结构化数据等等,以及全部其他所有 Swift 后台框架加在一起才有的 XML 结构化数据、苹果推送消息 APNS、MqTT 消息队列和 SMTP 邮件发送,甚至大数据也支持。Perfect 的数据库支持非常广泛,其原生 SQL 驱动包括 MySQL、SQLite、PostgreSQL 和 MariaDB,还支持 MongoDB、Redis、CouchDB 甚至还包括 FileMaker(苹果自己的数据库 Swift 都不支持,Perfect 反过来支持——译者注)。Perfect 据说还部分支持微软的 ODBC,即多种数据库的底层兼容界面——有点像 ORM,但是以 C 函数库为基础。提到 ORM 数据库对象关系自动化管理,Perfect 有 StORM 并完整实现了 PostgreSQL、MySQL、CouchDB 和 SQLite。



经过对Perfect框架一周的学习,基本可以开启服务,该踩的坑也踩的差不多了,然后打算用Perfect写一个后台,希望可以上线使用。


本篇主要介绍使用Perfect开启第一个服务,后续还会持续更新。对于环境配置这里就不多介绍了,Perfect官方文档和GitHub上都有。这里是使用MacOS系统和Xcode进行开发的


废话不多说,现在开始创建我们swift服务器,先使用swift的SPM(Swift Package Manager)创建和管理我们的工程

先创建一个空文件夹,然后使用终端创建我们的框架管理工程,如果你是iOS开发工程师,你可以把它看做cocoapods


swift package init



这时,就创建出没有xcodeproj的工程,使用命令创建

xcodeproj,这样就可以使用Xcode来编译了

swift package generate-xcodeproj



然后打开这个工程,选择Package.swift这个文件,如下图编辑,或按

官方文档编辑都可以


编辑完成以后,使用命令


swift build



然后就会自动从GitHub上把需要的框架下载下来。这样,我们的框架管理工程就算暂时建好了,以后如果要添加新的方法,只要在url的数组中添加git地址就可以了。但是这里有两个坑,首先每次更新或添加库或框架,xcodeproj就需要重新创建一次,不然无法引用到新库或新框架;其次,在source文件夹如果发生任何改动,库或框架的更新就会失败。这就是为什么我要专门建一个

工程来管理这些框架或者库(这是我踩的最恶心的坑)。为了解决这个大坑,就再创建一个项目工程,然后使用workspace来管理,就像iOS中,使用了cocoapods一样。项目工程的创建和上面基本一样,但是在创建的时候,需要有一个可执行文件。因此,创建命令和之前的不一样,

swift package init --type executable

还有,就是在Package.swift文件中不需要添加任何git地址,因为已经有一个工程帮助管理了。

workspace的创建:

打开Xcode,然后File->New->Workspace


这样就创建出了一个空的workspace,然后添加工程

添加完需要的工程后,需要给我们的项目工程做配置,让它与框架工程关联,可以使其引用需要的模块


然后,我们可以开始写代码啦。

首先,我先建了一个server类和一个接口类以及一个管理接口的文件

在server类中,配置我们的服务


import PerfectHTTPServer import PerfectHTTP import PerfectLib class CXServer { let server = HTTPServer() // static let shareServer = CXServer() init() { setupServer() } private func setupServer() { server.serverPort = 8080 server.serverName = "localhost" server.documentRoot = "./webroot" } func configRoutes(_ routes: [Routes]) { for route in routes { server.addRoutes(route) } } //MARK: - 启动服务 func startServer() { do { // Launch the servers based on the configuration data. //try HTTPServer.launch(configurationData: confData) try server.start() } catch { fatalError("\(error)") // fatal error launching one of the servers } } }

在testRoute中的代码

import PerfectHTTP class TestRoute { var testRoute = Routes() init() { testRoute.add(method: .get, uri: "/") { (request, response) in response.setHeader(.contentType, value: "text/html") response.appendBody(string: "<html><title>Hello, world!</title><body>Hello, world!</body></html>") response.completed() } } }

接口管理文件中的代码

let test = TestRoute().testRoute

在程序入口main文件中开启服务

let server = CXServer() server.configRoutes([test]) server.startServer()


然后运行,这样,我们的第一个服务就开启了,可以在网页中输入http://0.0.0.0:8080/试试,效果如下




大家可以有空尝试一下,说不定swift真会火到和JAVA一样

项目地址:https:///NickQCX/ServerOfPerfect


参考:

https://swift.org/package-manager/#conceptual-overview

https:///PerfectlySoft/Perfect



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/20897.html

    分享给朋友:

    “swift搭建服务器 swift写服务器” 的相关文章

    CN2 GIA是什么?探索高效国际网络连接的解决方案

    在当今这个数字化时代,网络连接的稳定性与速度成为了企业和个人活动的重中之重。CN2 GIA,或称为全球互联网接入(Global Internet Access),是由中国电信提供的一项高级国际专线网络服务。这项服务在CN2产品线中占据了顶级位置,专为那些需要快速且稳定的国际网络连接的用户而设计。通过...

    轻云互联:助力企业数字化转型的云计算解决方案

    轻云互联是隶属于广州轻云网络科技有限公司的云计算服务提供商。自成立以来,轻云互联专注于云计算领域,提供一系列全方位的一体化解决方案。这些解决方案涵盖了云计算产品、租用托管服务、云服务器、裸金属服务器、云虚拟主机以及游戏云服务等。走进轻云互联,你会发现这里不仅是一个技术创新的平台,更是一个通过边缘计算...

    使用宝塔面板配置与优化IPv6技术的全面指南

    宝塔面板简介 宝塔面板是一款非常实用的服务器管理工具,它的功能覆盖了许多方面。从LAMP、LNMP环境的快速搭建到监控、FTP、数据库及JAVA的管理,宝塔面板都能提供一键式的解决方案。通过这样一款工具,服务器的管理不再复杂,用户只需通过友好的Web界面进行操作,即可轻松实现各种任务。 我常常使用宝...

    莱卡云:高性价比云服务器解决方案,助力企业发展

    莱卡云概述 莱卡云,这个名字你或许已经听说过。成立于2019年,它在云计算服务领域迅速崭露头角,成为一些企业的首选合作伙伴。凭借持有的多个《中华人民共和国增值电信业务经营许可证》,莱卡云有效地展开了多种多样的服务,充分满足了市场需求。与三大公有云的合作让它在竞争激烈的市场中站稳了脚跟,提供的解决方案...

    Putty教程:从安装到高级功能的全面指南

    什么是Putty? Putty是一款广泛使用的终端仿真器,它主要用于与远程设备进行连接。通过Putty,用户能够在本地计算机上访问多种类型的网络设备和服务器。它的界面简单明了,尤其适合新手使用,后期又具备足够的扩展功能来满足高级用户的需求。每当我需要管理远程服务器时,Putty总是我首选的工具。 我...

    LiteServer: 快速搭建轻量级本地开发服务器的终极指南

    1.1 什么是 LiteServer LiteServer 是一款轻量级的本地开发服务器,专为开发者提供简单、快速的web服务环境。它的设计理念是让开发者能够轻松地启动项目,而无需过多的配置和繁杂的设置。对于进行前端开发、静态网站测试,甚至小型后端服务的程序员来说,LiteServer 都是一个值得...