Skip to main content

[Swift] Thiết lập thư viện Perfect để viết cho server-side

Perfect là gì ?

Perfect là một web-server và toolkit cho phép các nhà phát triển sử dụng ngôn ngữ lập trình Swift để xây dựng những ứng dụng và những REST service. Nó cho phép những developer có thể phát triển ứng dụng cả client-side và server-side trong cùng 1 workspace, cùng 1 ngôn ngữ lập trình Swift. Nó là một bộ khung hoàn hảo cho những kỹ thuật cloud và mobile.




Tại sao lại sử dụng Perfect?

- Hiện tại Swift đã được Open Source vì thế nó sẽ còn phát triển nhanh và mạnh, do đó Swift là ngôn ngữ của tương lai. Nếu bạn học và nắm bắt cơ hội này chắc bạn sẽ có nhiều cơ hội phát triển sự nghiệp của mình trong tương lai hơn nữa.

- Đa số những dân lập trình trên iOS chỉ biết về Objective-C hay Swift hoặc cả 2, vì thế nếu bạn muốn viết cho server-side thì bạn phải học thêm ngôn ngữ PHP hoặc Java để có thể viết cho server-side. Nếu bạn dùng thư viện Perfect thì bạn khỏi cần quan tâm đến việc học thêm ngôn ngữ khác cho công việc đó, bạn có thể dễ dàng debug cả bên client lẫn server đều được.

- Hiện tại Perfect cũng đang trong giai đoạn phát triển và đã có 1 phiên bản release là Perfect version 1.0. Code của thư viện Perfect cũng được open source trên GitHub, nếu các bạn muốn học thêm cách người ta viết library đó như thế nào thì cũng có thể tải về và đọc code.

- Swift và Perfect có thể chạy trên nền tảng Linux vì thế các bạn có thể viết để deploy trên Linux server. Hiện tại trên mạng cũng có nhiều hướng dẫn về việc này.

Làm thế nào thiết lập thư viện Perfect trên XCode?

Hiện tại mình chưa thấy đường link trên cocoapods cho thư viện này, vì thế cách mình hướng dẫn chỉ tải và dùng trên phiên bản release 1.0 như ở trên. Mình đang dùng OS X 10.11 và XCode 7.3 (7D175). Trên GitHub của Perfect nói phải như vậy mới build được thư viện của họ. Nên nếu ai đang xài phiên bản cũ hơn hãy update lên rồi mới chạy được nha.

Demo này mình viết 1 ứng dụng trên iOS truy suất REST api, có trả về dữ liệu là 1 chuỗi HelloWorld theo dạng GET và POST:


- Bước 1: Bạn mở XCode, chọn New > Workspace để tạo 1 workspace mới, đặt tên workspace ví dụ như PerfectTutorials.

- Bước 2: Bạn tải version 1.0 của Perfect về và giải nén sẽ xuất hiện những thư mục như sau:
Bạn copy 2 thư mục là PerfectLibPerfectServer vào cùng thư mục chứa workspace:
Quay trở lại XCode, bạn nhấn vào biểu tượng dấu cộng ở góc dưới bên trái, và chọn option là Add files to "PerfectTutorials", để thêm 2 project đó vào wordspace:

- Bước 3: Tạo 1 project trên iOS với tên là PerfectHelloWorld. Trong project đó bạn tạo 1 target mới với kiểu là 1 Cocoa framework cho OS X với tên là PerfectMyServer:

- Bước 4: Bạn phải link PerfectLib vào Framework này, chọn target PerfectMyServer, chọn General tab, chỗ Linked Frameworks and Libraries bạn chọn add PerfectLib cho OSX vào.
Sau đó bạn chuyển sang Build Settings tab, và thiết lập những thuộc tính sau:
  • Skip Install = No
  • Deployment Location = Yes
  • Installation Directory = /PerfectLibraries
  • Installation Build Products Location = $(CONFIGURATION_BUILD_DIR)

- Bước 5: Tại Group PerfectMyServer trên XCode bạn tạo 1 file mới với tên như PerfectHandlers trong file đó bạn viết những đoạn code như sau:
Sau đó bạn chọn Scheme PerfectMyServer và chọn build (Command + B). Mỗi khi bạn thay đổi code bạn bắt buộc phải build framework này lại và restart lại server.

Bạn có thể thiết lập Scheme cho PerfectServerHTTPApp để mỗi lần build app này thì sẽ tự động build framework chứa code web-service của mình:


- Bước 6: Sau khi build Framework thành công bạn chọn Scheme là Perfect Server HTTP App và chọn run trên OS X:
Lưu ý: Theo mình thấy thì code trên Perfect Server HTTP App này thiếu 1 đoạn code để thay đổi đường dẫn Document Root. Các bạn có thể viết thêm 1 đoạn code trong file ViewController.swift của PerfectHTTPApp như hình sau:

- Khi bạn chạy ứng dụng PerfectServerHTTPApp thành công sẽ xuất hiện màn hình như sau:

Do mình đã thiết lập Server Address(mặc định là 0.0.0.0) theo ip của máy mình để những máy khác cùng lớp mạng có thể truy suất được và đổi Document Root (mặc định là ./webroot/) theo dúng thư mục webroot trên máy của mình. Ngoài ra các bạn nên để ý log trong console phải xuất ra như sau:

PS: Cách mở port để những máy khác có thể truy suất được máy mình làm local server các bạn vào Settings của hệ thống chọn Sharing và bật File Sharing lên:

Bạn đang chạy server thành công bây giờ là lúc bạn test xem server có phản hồi những request  của bạn hay không thì bạn có thể gọi request bằng terminal, những addon trên browser hay viết ứng dụng để thử request lên server.

Gởi request lên server thông qua terminal:

Mở ứng dụng terminal và nhập đoạn lệnh sau để truyền request kiểu GET lên server:
curl 10.190.201.95:8181/hello
Bạn sẽ thấy màn hình xuất hiện chữ như:


Nhập đoạn lệnh sau để truyền request kiểu POST lên server:
curl -v -XPOST 10.190.201.95:8181/hello -H 'Content-Type: application/json' --data '{"content":"congpc"}'
Màn hình Terminal sẽ hiển thị như sau:


Console sẽ hiển thị:

Gởi request lên server bằng ứng dụng trên iOS dùng thư viện Alamofire:

Giả sử mình viết 1 ứng dụng có 2 nút button để gởi 2 loại request lên server với đoạn code như sau:
Sau khi gọi nhấn 2 button sẽ hiển thị kết quả từ server trả về lên 2 label:

Console sẽ sinh log như sau:

Thiết lập với cơ sở dữ liệu MySql:

- Bạn cần cài MySql với tại đường dẫn và làm theo hướng dẫn của trang MySql.
- Bạn có thể tải MySql Workbench để thao tác trên GUI cho dễ.
- Tại Framework của server bạn thêm project MySql vào workspace và link framework đó vào Tutorials project:

Những database khác có thể làm tương tự như MongoDB, PostgreSQL.

Sau đó khai báo những thông số kết nối đến MySql, chi tiết mình có để trong code cũng như trên GitHub:


Các bạn có thể lấy toàn bộ source code của mình tại GitHub

Tài liệu tham khảo:

- Creating a Web Service for Your App in Swift with Perfect.
- Integrate MySQL Into a Swift Perfect Web Server.

Comments


  1. Đại phát viễn thông chuyên thay màn hình iphone tại hcm:
    ----------------------------------------------------
    Giá rẻ nhất-chất lượng tốt nhất – Xem ngay bảng thay màn hình iphone tại đây:
    Web: thay màn hình iphone
    ( Xem tai day): thay màn hình iphone
    ( xem tai day ): thay man hinh iphone

    ReplyDelete

Post a Comment

Popular posts from this blog

So sánh những framework hỗ trợ viết ứng dụng trên SmartPhone

Khi lập trình trên SmartPhone bạn không nhất thiết phải học những ngôn ngữ đặc thù trên từng loại hệ điều hành thì mới có thể lập trình được. Ví dụ như muốn lập trình trên iOS thì phải học ngôn ngữ Objective-C hay Swift, muốn lập trình được trên Android thì học ngôn ngữ Java, muốn lập trình trên WinPhone thì học ngôn ngữ C#. Hiện nay có rất nhiều những framework giúp đỡ cho các bạn rất nhiều khi các bạn muốn viết trên nhiều nền tảng smartphone bằng ngôn ngữ mà bạn yêu thích. Theo mình thấy thì hiện nay có 3 loại như: Native App, Hybrid Mobile App, Native Cross-Platform App. 1. Native App: là những ứng dụng sử dụng những framework và ngôn ngữ lập trình của hệ thống cung cấp sẵn. Ví dụ như bạn muốn lập trình iOS thì phải cài XCode, học ngôn ngữ Objective-C hay Swift, lập trình Android thì cài Android Studio và học ngôn ngữ Java. - Ưu điểm: Hiệu năng thực thi ứng dụng trên nền tảng nhanh và hiệu quả. Không bị phụ thuộc vào bên thứ 3. Khi phát hành ứng dụng trên những Mobile Store cũng dễ...

Hướng dẫn dùng Serverless sử dụng Lambda AWS

1. Lambda function là gì? AWS Lambda cho phép bạn chạy mã mà không cần cung cấp hay quản lý máy chủ. Bạn chỉ phải trả tiền cho thời gian xử lý thông tin đã sử dụng. Với Lambda, bạn có thể chạy mã cho gần như toàn bộ các loại ứng dụng hay dịch vụ backend – tất cả đều không cần quản trị. Chỉ cần tải đoạn mã của bạn lên và Lambda sẽ lo hết những gì cần làm để chạy và mở rộng mã của bạn với mức độ có sẵn cao. Bạn có thể thiết lập mã của bạn tự động kích hoạt từ các dịch vụ AWS khác, hoặc gọi trực tiếp từ bất cứ ứng dụng web hay di động nào. Chi phí chạy trên lambda function rẻ so với chi phí bạn mua 1 con server, duy trì và quản trị nó ( ví dụ như bạn phải xử lý bất đồng bộ những request, khi lượng user bạn tăng đột biến bạn phải có cơ chế auto scale, chứ không thì server bị sẽ bị treo, khi server bị treo bạn phải tự động khởi động lại sẽ mất thời gian,... ).

Phân biệt biến kiểu Property, Public, Protected, Private trong ngôn ngữ Objective C

- Theo kinh nghiệm làm việc của mình với các bạn trong nhóm khi lập trình Objective-C và cũng đọc qua code của những project cũ. Ít khi nào mọi người để ý và khai báo đúng với ý đồ của từng đối tượng, và vi phạm quy tắc tính đóng gói, tính bảo mật thông tin của đối tượng trong lập trình hướng đối tượng (Tham khảo lý thuyết Lập trình hướng đối tượng tại trang Wiki ). - Theo ngôn ngữ lập trình Java, người ta khuyến khích mỗi khi dùng biến kiểu public thì nên đặt 1 biến private và hỗ trợ những hàm getter/setter để truy suất biến private đó.     + Nguyên nhân họ nói là đảm bảo tính đóng gói, và nếu sau này có thay đổi gì trên biến đó bạn có thể sửa được dễ dàng, chi tiết về vấn đề này ở đây .     + Nói tóm tại thì nguyên nhân chính là có thể kiểm soát được truy xuất đến giá trị của 1 đối tượng từ bên ngoài, có thể dễ dàng mở rộng code bằng cách override lại những hàm getter/setter. - Các bạn có thể áp dụng nguyên tắc đó từ bên Java qua ngôn ngữ lập trình Object...