Hình 3.1 mô hình hệ thống My Vid
3.1.1.Server My Vid
- Web server My Vid được phát triền bằng ngôn ngữ PHP dựa trên framework Laravel .
- Nhiệm vụ chính của server là để lưu dữ liệu (chủ yếu là video) và gửi trả dữ liệu khi nhận được yều cầu từ phía client.
- Web server My Vid chỉ có một trang quản trị có vai trò: quản lý video, quản lý nhạc và quản lý user với quyền admin.
3.1.2.Server Firebase
- Firebase Realtime Database là Dữ liệu trong cơ sở dữ liệu Firebase của bạn được lưu trữ dưới dạng JSON và đồng bộ realtime đến mọi kết nối client. Khi bạn xây dựng những ứng dụng đa nền tảng như Android, IOS và JavaScript SDKs, tất cả các client của bạn sẽ chia sẻ trên một cơ sở dữ liệu Firebase và tự động cập nhật với dữ liệu mới nhất.
- Firebase sẽ tự động tính toán quy mô ứng dụng Khi ứng dụng của bạn muốn phát triển, bạn không cần lo lắng về việc nâng cấp máy chủ...Firebase sẽ xử lý việc tự động cho bạn. Các máy chủ của Firebase quản lý hàng triệu kết nối đồng thời và hàng tỉ lượt truy vấn mỗi tháng.
- Tất cả dữ liệu được truyền qua một kết nối an toàn SSL với một chứng nhận 2048- bit. Cở sở dữ liệu truy vấn và việc xác nhận được điều khiển tại một cấp độ chi tiết sử dụng theo một số các quy tắc mềm dẻo security rules language. Tất cả các logic bảo mật dữ liệu của bạn được tập trung ở một chỗ để dễ dàng cho việc cập nhật và kiểm thử.
3.1.3.Android client
- Client sẽ lấy dữ liệu (video) từ trên server My Vid để hiện thị cho người dùng thấy được.
- Mọi tương tác của client đều được tương tác chủ yếu qua Server Firebase.
- Server My Vid chỉ đóng vai trò lưu dữ liệu giúp client
3.2.Mô hình MVP
Hình 3.2 Mô hình MVP
- MVP tách ứng dụng thành 3 lớp: Model, View, Presenter.
- Model tổ chức business logic của ứng dụng. Nó kiểm soát như thế nào dữ liệu có thể được tạo ra, lưu trữ, và sửa đổi.
- View là một giao diện thụ động hiển thị dữ liệu và các tuyến đường hành động dùng cho Presenter.
- Presenter đóng vai trò như một lớp vận chuyển. Nó lấy dữ liệu từ Model và cho thấy nó trong các View. Nó cũng xử lý hành động người dùng mong muốn được nó bằng các View.
3.2.1.Khác nhau giữa MVP và MVC
- Các mô hình Model View Presenter được dựa trên mô hình Model View Controller.
Kể từ khi họ chia sẻ một số khái niệm, nó có thể được khó khăn để phân biệt chúng.
Các Presenter và Controller có vai trò tương tự. Chúng có trách nhiệm giao tiếp giữa Model và View. Điều đó nói rằng, Controller không quản lý Model và View như đúng như trình bày không.
- Trong mô hình MVC, View lớp có phần thông minh và có thể lấy dữ liệu trực tiếp từ Model. Trong các mô hình MVP, View là hoàn toàn thụ động và dữ liệu luôn được phân phối đến các Xem theo Presenter. Bộ điều khiển trong MVC cũng có thể được chia sẻ giữa nhiều lượt xem. Trong MVP, View và trình bày có một mối quan hệ một-một, do đó, các Presenter được gắn với một View.
- Trong MVP, View không thể truy cập các Model.
- Các thuyết trình được gắn với một Xem đơn.
- Xem là hoàn toàn thụ động trong các mô hình MVP.
- Những khác biệt về khái niệm làm cho rằng các mô hình MVP đảm bảo một tách tốt hơn các mối quan tâm và nó cũng làm tăng đáng kể khả năng kiểm thử của ứng dụng bằng cách thúc đẩy một tách lớn hơn trong ba lớp lõi: Activity, Fragment, and View Objects
- Có rất nhiều cách hiểu về cách MVP có thể được thực hiện trên Android. Nhìn chung, mặc dù, hoạt động và các mảnh vỡ được giao vai trò của Xem và chịu trách nhiệm cho việc tạo ra các Presenter và Model. The View cũng là trách nhiệm duy trì mô hình và thuyết trình giữa những thay đổi cấu hình, thông báo cho họ về sự phá hủy cuối cùng của View.
- Xem các đối tượng khác, chẳng hạn như RecyclerView, cũng có thể được coi là một phần của lớp View trong MVP. Có một mối quan hệ một-một giữa View và các thuyết trình và các tình huống phức tạp đôi khi có thể yêu cầu nhiều diễn giả.
3.2.2.Các điểm quan trọng khi sử dụng mô hình VMP
- Người dùng tương tác với các View.
- Có quan hệ nhiều – một giữa View và ViewModel nghĩa là nhiều View chỉ ánh xạ tới một VideoModel duy nhất.
- View tham chiếu đến ViewModel không nắm giữ thông tin gì của View.
- Hỗ trợ two-way databinding giữa View và ViewModel.
3.2.3. Lợi ích của mô hình MVP
- Code rõ ràng rành mạch, các task lớn được chia ra nhiều task nho -> dễ test/debug.
- Phân chia rành mạch giữa các loại xử lí : xử lí dữ liệu / xử lí view / xử lí business logic.