Perfect是一個使用Swift編程語言開發(fā)Web和其他REST服務(wù)的框架,其主要目標是簡化需要后端服務(wù)器軟件的移動應(yīng)用的開發(fā),使開發(fā)人員可以使用同一種語言進行客戶端和服務(wù)端開發(fā)。
因為是基于Swift開發(fā),所以對于在iOS平臺上可以達到客戶端與服務(wù)端使用相同的類和一些封裝好的工具,一定程度上可以減少代碼重復(fù),這一點有點像Android與Java服務(wù)器協(xié)作的好處,它完全支持使用Xcode開發(fā)和調(diào)試。由于Swift的開源特性,所以它必須能夠在Linux上跑起來。
Perfect的工程可以在git上查看并且附有Demo,官網(wǎng)也有關(guān)于Perfect的詳細文檔與很多視頻教程
git:https://github.com/PerfectlySoft/Perfect
官網(wǎng):https://www.perfect.org
Perfect主要包含以下組件。詳細查閱
http://www.infoq.com/cn/news/2015/11/perfect-swift
PerfectLib
PerfectLib是一個Swift模塊,提供了一套進行服務(wù)端和客戶端開發(fā)的核心工具。在許多情況下,客戶端和服務(wù)端使用相同的API。
Perfect Server
Perfect Server是一個讓Perfect能夠運轉(zhuǎn)的服務(wù)端組件。它是一個始終處于運行狀態(tài)的獨立進程,接受客戶端連接、處理請求并返回響應(yīng)。
搭建一個Perfect工程大致步驟如下:
- 創(chuàng)建工作空間引入Perfect庫
- 設(shè)置工程
- 編碼運行
準備工作:
下載Perfect庫
推薦從git上下載源碼,因為里面包含了可能用到的所有組件:
解壓Perfect庫的壓縮包,安裝xcode的Perfect模板
打開這個工程直接run就可以
1. 創(chuàng)建工作空間引入Perfect庫
1.1 創(chuàng)建工作空間
打開Xcode—>File—>New—>WorkPlace
創(chuàng)建一個PerfectDemo的工作空間,穿件完成后會生成一個PerfectDemo.xcworkspace文件該文件就是一個Xcode的工作空間。

1.2 引入PerfectLib與Perfect Server

注意添加選項的選擇


添加完成后可以看到我們創(chuàng)建的PerfectDemo工作空間已經(jīng)引入Perfect的依賴

接下來,創(chuàng)建一個PerfectDemo工程,該工程為正式的服務(wù)器工程:
推薦創(chuàng)建的時候以cocoaframwork的形式添加

注意添加工程的時候選擇我們的工作空間為添加選項:

工程添加完成之后工作空間結(jié)構(gòu)如下:

2. 設(shè)置工程
工程添加完成之后,開始設(shè)置我們的工程

具體設(shè)置項目如下:
Skip Install = No
Deployment Location = Yes
Installation Directory = /PerfectLibraries
Installation Build Products Location = $(CONFIGURATION_BUILD_DIR)
3. 編碼運行
所有的設(shè)置成功之后,開始編寫服務(wù)端代碼:
創(chuàng)建PerfectMain.swift文件:
先運行一下官方的示例代碼:
import Foundation
import PerfectLib
// This is the function which all Perfect Server modules must expose.
// The system will load the module and call this function.// In here, register any handlers or perform any one-time tasks.
public func PerfectServerModuleInit() {
// Install the built-in routing handler. // Using this system is optional and you could install your own system if desired.
Routing.Handler.registerGlobally() Routing.Routes["GET", ["/", "index.html"] ] = { (_:WebResponse) in return IndexHandler() }
// Check the console to see the logical structure of what was installed. print("\(Routing.Routes.description)")}
class IndexHandler: RequestHandler {
func handleRequest(request: WebRequest, response: WebResponse) {
response.appendBodyString("Index handler: You accessed path \(request.requestURI())") response.requestCompletedCallback()
}
}
代碼編寫完成之后,設(shè)置運行的Schema
選中PerfectDemo工程不要選到Perfect的庫上去了
設(shè)置Excutable為我們之前添加的Perfect模板

設(shè)置完成之后,Run工程會啟動一個PerfectServer Http程序,
表示我們的Perfect服務(wù)器已經(jīng)啟動,改程序面板可以設(shè)置服務(wù)器的端口號,ip,已經(jīng)webroot目錄等等

至此,Perfect服務(wù)器工程的創(chuàng)建與配置完成
工程可參照官方Demo或者該示例工程的
git: https://github.com/ilioner/PerfectServerDemo
原文地址:http://ilioner.github.io/2016/05/30/從頭開始創(chuàng)建一個Swift的Perfect的服務(wù)端.html


