Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Architecture
Swift Language
Standard LibraryFoundation
CoreFoundation
Dispatch Swift Language
Standard LibraryFoundation
CoreFoundation
Dispatch
Darwin Linux
Architecture
Darwin
Swift Language
Linux
Standard LibraryFoundation
CoreFoundation
Dispatch Swift Language
Standard LibraryFoundation
CoreFoundation
Dispatch
Kitura• Swift 웹 프레임워크• Apache 2.0 라이센스• HTTP URL 라우팅
• GET, POST, PUT, DELETE• 파라미터 파싱 • 정적 파일 서빙• JSON 파싱 • Pluggable
iOS 앱 개발 과정• 서울대, 연세대(국제), 한양대, …• 앱 개발이지만 간단한 서버가 필요하다• 1학기 내에 2개의 언어를 익히기는 어렵다.
• 이미 서버 사이드 코딩 언어를 알면 알아서 만들어라• 모르는 학생들에겐 Swift로 알려주겠다
Kitura는 쓸만한가?• Swift 👍
• Linux (Ubuntu) Benchmarks for Server Side Swift vs Node.js
• Swift 👎 • Swift Backend with CouchDB: Kitura vs. Vapor vs.
Node.js
리포지터리 만들기 - Bluemix Web• Bluemix Web 페이지에서 Kitura 프로젝트 만들기• GitHub에 리포지터리 만들기• 로컬에 Clone
• 로컬 Host에서 실행하기
Cloud Runtime 만들기 http://codershighkitura.mybluemix.net/hello/json
Router 클래스 제작HeliumLogger.use()
let todoList = ToDoList() let router = todoList.router
Kitura.addHTTPServer(onPort: 8090, with: router) Kitura.run()
Router 클래스 생성, 저장공간 연결public class ToDoList { public let router = Router() var todoArray:Array<String> = [] public init() { todoArray += ["코더스하이 미팅"] router.all("*", middleware:BodyParser()) router.get(“/itct/tasks", handler:handleGetTasks) router.post("/itct/tasks", handler:handleAddTask) }
GET 핸들러func handleGetTasks(request:RouterRequest, response:RouterResponse, next: @escaping() -> Void) throws { let responseStr = String(describing: todoArray) response.status(.OK).send(responseStr) next()
}
POST 핸들러func handleAddTask(request:RouterRequest, response:RouterResponse, next: @escaping() -> Void) throws{ guard let body = request.body else { return }
guard case let .text(bodyText) = body else { return }
todoArray += [bodyText] next()
}
Kitura에 뛰어들어야 할까요?• 적극매수
• 학생이고 Swift를 이미 공부하고 있다• “성능이 중요하지 않다” 거나 “튜닝 자신 있다”• 스위프트 힙스터
• 관망• 당장 Deploy 해야 하는 서버 개발자• 고성능 서버 개발을 공부하는 사람