Tổng hợp các thư viện cần biết, nên dùng về xử lý networking trong lập trình Android

1251

Trong lập trình nói chung và lập trình Android nói riêng, xử lý networking luôn là một trong những công việc quan trọng nhất bạn cần làm. Công việc này luôn đòi hỏi thời gian và độ khó cao nhất. Giả sử bạn làm một ứng dụng mạng xã hội – social networking nào đó, bạn cần tương tác tới các API, tới Database, các thao tác thêm sửa xoá dữ liệu từ ứng dụng của bạn sẽ được cập nhật lên DB của hệ thống. Thường là bạn sẽ phải tự tạo ra các controller để thao tác nhưng trong Android, bạn có thể dùng các thư viện mã nguồn mở – Open Source Libraries để thực hiện điều này một cách dễ dàng hơn, các thư viện này thường đã được dùng trong các hệ thống lớn và xử lý nhiều trường hợp – case mà chúng ta sẽ gặp phải. Chính vì thế hôm này tôi sẽ tổng hợp và giới thiệu các thư viện tốt nhất, được dùng nhiều nhất để xử lý networking trong lập trình Android. Sau đó, tôi sẽ có những bài viết cụ thể giới thiệu cách làm việc với những thư viện này.

1. Retrofit

Retrofit là một thư viện được phát triển bởi Square, một trong những hãng phần mềm nổi tiếng thế giới, trong quá trình họ phát triển phần mềm POS Square họ đã viết ra rất nhiều thư viện để phục vụ cho ứng dụng của mình. Bạn có thể tham khảo trên trang chủ của Square những thư viện đó, tất cả đều là open source.

Retrofit là một REST Client(1) cho Android và JAVA.Nó được phát triển giúp cho quá trình kết nối client – server trở nên dễ dàng, nhanh chóng.Với Retrofit bạn có thể GET,POST,PUT,DELETE …

Dưới đây là kết quả so sánh thời gian thực thi giữa Async Task thuần của Android, Volley Library của Google và Retrofit :

tIdZkl3

Bạn có thể thấy Retrofit đạt tốc độ vượt trội hơn hẳn.

Tham khảo thêm tại Github, Retrofit Square, Google

2. Volley

Volley là một Networking Library được Google phát triển và công bố tại Google I/O 2013 để quản lý các request network và lưu trữ các kết quả trả về – response, nó giúp các nhà phát triển – developers không phải viết nhiều code như trước nữa.Các tính năng – features trong Volley cho phép cùng một lúc thực hiện nhiều request trên các tiến trình – threads khác nhau với các mức độ ưu tiên – priority. Tất cả các request được thực hiện và lưu trữ trong bộ nhớ cache – cache memories giúp cho việc reload lại dữ liệu nhanh hơn.Toàn bộ response được lưu trong memories vậy nên nó không tốt khi dùng để load các dữ liệu lớn như âm nhạc – music hoặc phim – movies.Nhưng nó thực sự tuyệt vời để load các dữ liệu dạng JSON, Image hay String.

Tham khảo thêm tại AndroidHive, Android Trainning, Google

3. Google GSON

GSON là một java library hỗ trợ việc convert Java Objects sang định dạng JSONtương ứng, và ngược lại, nó cũng có thể sử dụng để convert từ JSON sang Java Objects. Có một vài thư viên Java cũng có khả năng làm việc này, những Google Gson hỗ trợ tối ưu hơn cả và đặc biệt nó được update liên tục.Nó có thể làm việc với các Java Object tùy ý ngay cả với việc các object trong hệ thống cũ không có source code.

Mục đích của Google Gson

  • Cung cấp kỹ thuật xử lý đơn giản để convert từ Java Object sang JSON và ngược lại.
  • Cho phép các unmodifiable objects converted từ Java sang JSON và ngược lại.
  • Hỗ trợ mở rộng Java Generics.
  • Cho phép custom format của object.
  • Hỗ trợ custom các objects phức tạp.
  • Và rất nhiều nữa

Ngoài ra, GSON cũng là nhân của Retrofit đã nói ở trên.

Tham khảo thêm tại Github, Mkyong, Google

4. okHttp

okHttp cũng là một open source library do Square phát triển.Công nhận là thằng Square này cực bá đạo?

okHttp là một Http Client(2) hiện đại, nhanh chóng và hiệu quả. Nó hỗ trợ HTTP/2 và SPDY và làm nhiều thứ cho bạn. okHttp hoạt động giống như các lớp truyền tải.

Tham khảo thêm tại okHttp, Github, Stackoverflow

5. Android Asynchronous Http Client

Là một thư viện Http Client xây dựng trên cơ chế callback bất đồng bộ dựa vào Apache’s Http Libraries.Mọi request được thực hiện bên ngoài thread UI chính trong ứng dụng của bạn, nhưng bất kì một callback logic nào sẽ được lại trên cùng một thread như callback sử dụng Handler của Android.

Các tính năng chính:

  • Tạo các request Http bất đồng bộ, xử lý các kết quả trả về trong các callback ẩn danh.
  • Thực hiện HTTP requests bên ngoài UI thread…

Tham khảo thêm tại : Home Page, Github

Notes :

(1) REST định nghĩa các quy tắc kiến trúc để bạn thiết kế Web services chú trọng vào tài nguyên hệ thống, bao gồm các trạng thái tài nguyên được định dạng như thế nào và được chuyển tải qua HTTP thông qua số lượng lớn người dùng và được viết bởi những ngôn ngữ khác nhau. Nếu tính theo số dịch vụ mạng sử dụng, REST đã nổi lên trong vài năm qua như là một mô hình thiết kế dịch vụ chiếm ưu thế. Trong thực tế, REST đã có những ảnh hưởng lớn và gần như thay thế SOAP và WSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều.

(2) HTTP là chữ viết tắt từ HyperText Transfer Protocol (giao thức truyền tải siêu văn bản). Nó là giao thức cơ bản mà World Wide Web sử dụng. HTTP xác định cách các thông điệp (các file văn bản, hình ảnh đồ hoạ, âm thanh, video, và các file multimedia khác) được định dạng và truyền tải ra sao, và những hành động nào mà các Web server (máy chủ Web) và các trình duyệt Web (browser) phải làm để đáp ứng các lệnh rất đa dạng. Chẳng hạn, khi bạn gõ một địa chỉ Web URL vào trình duyệt Web, một lệnh HTTP sẽ được gửi tới Web server để ra lệnh và hướng dẫn nó tìm đúng trang Web được yêu cầu và kéo về mở trên trình duyệt Web. Nói nôm na hơn, HTTP là giao thức truyền tải các file từ một Web server vào một trình duyệt Web để người dùng có thể xem một trang Web đang hiện diện trên Internet.HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet)

Bài viết được tham khảo tại: Blog NguyenTrongTai