Mô hình phát triển ứng dụng

by doanquyet
360 views

Mục đích của blog này là cung cấp phân tích chi tiết về phân tích mô hình phát triển di động và các lựa chọn công nghệ, khuôn khổ khác nhau. Điều này sẽ giúp xác định con đường để chọn dựa trên các thông lệ kinh doanh và kỹ thuật.

CÁC MÔ HÌNH PHÁT TRIỂN ỨNG DỤNG

Cung cấp trải nghiệm di động đẳng cấp thế giới cho người dùng cuối liên quan đến các mô hình phát triển Ứng dụng khác nhau. Có 5 mô hình phát triển ứng dụng tồn tại:

  1. Phát triển ứng dụng nền tảng(Native App Development)
  2. Phát triển ứng dụng kết hợp (Hybrid App Development)
  3. Phát triển ứng dụng nền tảng chéo (Cross Platform App Developmen)
  4. Phát triển PWA (PWA Development)
  5. Phát triển ứng dụng dành cho máy tính (Desktop App Development)

Native App Development
Phát triển ứng dụng nền tảng liên quan đến việc tạo ra một ứng dụng di động chỉ phù hợp với một nền tảng. Trong trường hợp này, chúng ta sử dụng ngôn ngữ lập trình riêng cho hệ điều hành. Nó có thể là Java hoặc Kotlin cho Android và Swift / Objective-C cho iOS. Native Development có quyền truy cập vào bộ tính năng đầy đủ của thiết bị và do đó cho phép chúng tôi tận dụng chức năng nâng cao có hiệu suất cao.
Công cụ sử dụng: XCode, ATOM, Android Studio, Android IDE.
Ví dụ: Ghim sở thích, Cleartrip, v.v.

Hybrid App Development
Các ứng dụng kết hợp kết hợp các yếu tố web với các yếu tố di động. Vì vậy, bạn tạo một cơ sở mã bằng cách sử dụng các công nghệ web tiêu chuẩn (HTML, CSS, JavaScript). Sau đó, bạn bọc nó bên trong một vùng chứa gốc – WebView. Các ứng dụng kết hợp chạy trong một trình duyệt toàn màn hình, được gọi là webview, ẩn đối với người dùng. Thông qua các plugin gốc có thể tùy chỉnh, họ có thể truy cập các tính năng gốc của thiết bị di động cụ thể (chẳng hạn như máy ảnh hoặc ID cảm ứng) mà không cần mã lõi bị ràng buộc với thiết bị đó.
Công cụ sử dụng: Ionic, Cordova, v.v.
Ví dụ: Evernote, Gmail, v.v.

Cross Platform App Development
Phương pháp tiếp cận dành cho nhà phát triển đa nền tảng sử dụng công cụ kết xuất gốc. Cơ sở mã được viết bằng ngôn ngữ lập trình phổ biến (Phụ thuộc vào khuôn khổ) kết nối với các thành phần gốc thông qua cái gọi là cầu nối. Điều này cung cấp UX gần giống với nguyên bản. Ứng dụng đa nền tảng không có móc nối nền tảng. Chúng cung cấp chức năng liền mạch, dễ dàng triển khai và sản xuất hiệu quả về chi phí.
Các công cụ sử dụng: React Native, NativeScripts, Flutter, v.v.
Ví dụ: Uber Eats, GoogleAds, Alibaba, Instagram, v.v.

Progressive Web App Development
PWAs  cung cấp một cách tiếp cận thay thế cho phát triển ứng dụng di động truyền thống bằng cách bỏ qua việc phân phối cửa hàng ứng dụng và cài đặt ứng dụng. PWA là các ứng dụng web sử dụng một tập hợp các khả năng của trình duyệt – chẳng hạn như làm việc ngoại tuyến, chạy quy trình nền và thêm liên kết vào màn hình chính của thiết bị – để cung cấp trải nghiệm người dùng ‘giống ứng dụng’.
Công cụ sử dụng: React, Angular JS, v.v.
Ví dụ: Flipkart, Ali Express, Hầu hết được thấy trong nền tảng thương mại điện tử.

Desktop App Development

Phát triển ứng dụng dành cho máy tính đã tăng mức độ áp dụng trong những năm gần đây và có rất nhiều sự phát triển đang diễn ra để tạo ra ứng dụng máy tính đa nền tảng, như chuông, Slack, Spotify, v.v.
Công cụ sử dụng: Electron cho ứng dụng máy tính đa nền tảng
Ví dụ: Chime, Slack vv

CÁCH LỰA CHỌN MÔ HÌNH PHÁT TRIỂN – SO SÁNH

Trong phần này, chúng tôi sẽ phân tích một số lựa chọn khung và đánh giá chúng về kỹ thuật và phi kỹ thuật, đối với nghiên cứu này, chúng tôi đã chọn 3 mô hình phát triển:

  1. Phát triển ứng dụng nền tảng(iOS và Android)
  2. Ứng dụng kết hợp (Cordova)
  3. Ứng dụng đa nền tảng (React Native, Flutter)

Phân tích kỹ thuật

Hiệu suất ứng dụng

Hình 1.png
  1. Ứng dụng Hyrbid: Hiệu suất của Ứng dụng kết hợp bị tụt hậu so với nền tảng phát triển ứng dụng khác vì đó là chế độ xem web được bao bọc, Vỏ ứng dụng đang tương tác với thành phần gốc và do đó làm giảm hiệu suất ứng dụng tổng thể, đã nói rằng điều này cũng có thể dựa vào cách chúng tôi viết mã chế độ xem web, tất cả chức năng gốc mà chúng tôi đang xây dựng, v.v.
  2. Ứng dụng nền tảng chéo: Nền tảng chéo cung cấp gần với hiệu suất ứng dụng gốc thực và đó là lý do tại sao hiệu suất tốt hơn so với kết hợp. Một trong những lý do là mã chúng ta viết trong khung chọn sẽ được biên dịch nguyên bản, có một chút khác biệt về hiệu suất tùy thuộc vào khung mà chúng ta chọn.
    2.1. Flutter: Flutter sử dụng khung công tác Dart có hầu hết các thành phần có sẵn nên thường không yêu cầu cầu nối để giao tiếp với các mô-đun gốc, Dark Framework sử dụng Skia một công cụ c ++ và tất cả mã được biên dịch sẽ ở trong skia để có hiệu suất tốt hơn.
    2.2. React Native: Kiến trúc React Native chủ yếu dựa vào kiến ​​trúc môi trường thời gian chạy JS, còn được gọi là cầu nối JavaScript. Mã JavaScript được biên dịch thành mã gốc trong thời gian chạy. Tóm lại, React Native sử dụng cầu nối JavaScript để giao tiếp với các mô-đun gốc.
  3. Ứng dụng Native: Bạn có thể không thể đánh bại các ngôn ngữ bản địa. Mã gốc được viết tốt sẽ luôn hoạt động hiệu quả hơn so với mã gốc đã được biên dịch hoặc mã kết hợp.

Quyền truy cập tính năng gốc
Hình 2.png

  1. Ứng dụng kết hợp: Hầu hết các ứng dụng kết hợp đều sử dụng wireova hoặc tụ điện cung cấp các API JS cho các ứng dụng vốn thường được gọi là thành phần gốc cho bất kỳ quyền truy cập tính năng Gốc nào, có rất nhiều plugin của bên thứ 3 được yêu cầu cho bất kỳ ứng dụng kết hợp nào để sử dụng cho quyền truy cập tính năng gốc, hầu hết của plugin tính năng gốc sẽ có thể sử dụng được nhưng nếu được yêu cầu, nhà phát triển ứng dụng cũng có thể viết các trình bao bọc của riêng mình xung quanh các chức năng gốc và sau đó đưa chúng vào mã.
  2. Ứng dụng nền tảng chéo: Nền tảng chéo cung cấp quyền truy cập tính năng gần giống như bản địa, rất khó sử dụng:
    2.1. Flutter: Flutter cung cấp các gói chính thức cho hầu hết các tính năng gốc phổ biến và dễ dàng có sẵn trong hệ sinh thái rộng lớn.
    2.2. React Native: React Native có tập hợp các gói bên thứ ba phong phú cũng như một số API có sẵn để truy cập tính năng gốc, dựa vào các plugin của bên thứ ba đi kèm với chi phí bảo trì.
  3. Ứng dụng Native: Bạn có thể không thể đánh bại các ngôn ngữ native, truy cập trực tiếp vào thành phần bản địa và tất cả phần phát hành thành phần mới của hệ điều hành sẽ có thể sử dụng đầu tiên trong Phát triển ứng dụng bản địa.

Cơ sở mã đơn: Khả năng tái sử dụng
Hình 3.png

  1. Ứng dụng Hyrbid: Ứng dụng kết hợp có khả năng phục hồi tuyệt vời vì đây là một chế độ xem web sử dụng HTML / CSS / JS (Tương tự như Web), nó đi kèm với cơ sở Mã đơn và mức độ khả năng phục hồi cao hơn.
  2. Cross Platform App: Cross Platform cũng có độ phục hồi tốt nhưng không bằng hybrid, vẫn còn một số đoạn mã sẽ được viết riêng cho iOS / Android.
    2.1. Flutter: Flutter widgets sử dụng thiết kế Material design trên cả hai nền tảng theo mặc định, có nghĩa là cùng một CX sẽ ở đó cho cả hai ứng dụng, nếu chúng ta cần thiết kế kiểu dáng khác nhau dựa trên nền tảng thì sẽ có một số công việc cần thiết dành riêng cho hệ điều hành.
    2.2. React Native: React Native cung cấp một số thành phần giao diện người dùng cơ bản nhưng hầu hết chúng cần tự tạo kiểu, mã có thể được khôi phục vì chúng tôi đang sử dụng langugae lập trình đơn lẻ nhưng khoảng ~ 15-20% mã cần phải dành riêng cho nền tảng.
  3. Ứng dụng Native: Rất khó để duy trì khả năng phục hồi trong phát triển ứng dụng gốc vì khung phát triển, ngôn ngữ khác nhau ở cả hai nền tảng.

Học một lần, viết ở mọi nơi
Hình 4.png

  1. Ứng dụng Hyrbid: Ứng dụng kết hợp tất cả đều được viết trong khung phát triển web và học một công nghệ giúp tạo ứng dụng trên tất cả các nền tảng.
  2. Ứng dụng đa nền tảng: Nền tảng chéo cũng sử dụng khái niệm tương tự, khung công tác khác nhau có các lựa chọn ngôn ngữ khác nhau nhưng ngôn ngữ duy nhất của nó được sử dụng để tạo ứng dụng trên tất cả các nền tảng. Ví dụ: Flutter sử dụng phi tiêu và React Native sử dụng JavaScript.
  3. Ứng dụng Native: Tốt trong việc phát triển ứng dụng Gốc như một khung phát triển, ngôn ngữ khác nhau ở cả hai nền tảng, chúng ta cần tìm hiểu sâu về cả ngôn ngữ và nền tảng, ví dụ: iOS sử dụng XCode + Swift, Android sử dụng Kotling / Java.

Thành phần kiểu giao diện người dùng

Hình 5.png
  1. Ứng dụng Hyrbid: Ứng dụng hỗn hợp có thành phần giao diện người dùng được tạo kiểu sẵn phụ thuộc vào khung giao diện người dùng bạn chọn, những cái nổi tiếng là ion. Những thành phần đó áp dụng cho cả hai nền tảng và mang lại trải nghiệm giống như bản địa về Kiểu giao diện người dùng.
  2. Ứng dụng đa nền tảng:
    2.1. Flutter: Flutter đã tích hợp sẵn các widget sử dụng thiết kế Material design và một số phong cách cupertino (cụ thể cho iOS) với tất cả các widget tích hợp này, bạn có thể tạo ứng dụng tuyệt vời mà chỉ cần tạo kiểu thủ công rất ít.
    2.2. React Native: Các bản soạn phong cách giao diện người dùng phong phú có sẵn, rất nhiều plugin của bên thứ ba có thể sử dụng được yêu cầu nhà phát triển ứng dụng cũng phải viết kiểu riêng của họ.
  3. Ứng dụng Native: Việc tuân thủ giao diện người dùng ứng dụng gốc là phổ biến và có thể sử dụng được cho tất cả các nền tảng gốc.

Thư viện bên thứ ba / Hệ sinh thái
Hình 6.png

  1. Tất cả các nền tảng: Tất cả các nền tảng đều đã trưởng thành và có sẵn hệ sinh thái tốt nếu nhà phát triển gặp khó khăn.

Phân tích phi kỹ thuật

Mức độ phổ biến / Hỗ trợ cộng đồng

Hình 7.png
  1. Ứng dụng Hyrbid: Ứng dụng kết hợp có Mức độ phổ biến đã giảm dần trong một số năm khi các nhà phát triển trong gần như cùng thời gian có thể tạo ứng dụng giống như bản địa bằng cách chọn nền tảng phát triển ứng dụng khác.
  2. Ứng dụng nền tảng chéo: Nền tảng chéo đã cho thấy sự phổ biến to lớn sau khi ra mắt công khai phản ứng gốc vào năm 2015
    2.1. Flutter: Flutter được google ra mắt công khai vào khoảng năm 2017 và đã đạt được sự phát triển vượt bậc và rất được nhiều công ty lớn chấp nhận để tạo ứng dụng đa nền tảng.
    2.2. React Native: React Native dẫn đầu về phát triển ứng dụng, rất nhiều hỗ trợ từ cộng đồng, stackoverflow, github repositry (80k Stars trong github)
  3. Ứng dụng Native: Mặc dù việc phát triển ứng dụng khác đã phổ biến nhưng sự phát triển ứng dụng gốc vẫn đang bùng nổ ngày nay vì trải nghiệm và hiệu suất ứng dụng liền mạch. Rất nhiều công ty lớn đã thử sử dụng nền tảng kết hợp / chéo và cuối cùng đã tạo ra ứng dụng ở dạng bản địa. Ứng dụng ban đầu Ex Cleartrip là ứng dụng lai và sau đó được viết lại hoàn toàn bằng bản địa.
Hình 8.png

Thời gian đưa ra thị trường
Hình 9.png

  1. Ứng dụng Hyrbid: Thời gian đưa ra thị trường sẽ ít hơn đối với việc phát triển Ứng dụng lai vì hệ số xem web và khả năng tái sử dụng của nó rất cao cũng như cơ sở mã duy nhất giúp thời gian đưa ra thị trường nhanh hơn.
  2. Ứng dụng Cross Platform: Thời gian tiếp thị trên nhiều nền tảng vẫn ít hơn so với ứng dụng gốc, lý do để đặt nó không ngang bằng với ứng dụng kết hợp là vẫn còn đường cong học tập ban đầu có thể làm tăng thời gian tiếp thị cho các ứng dụng này.
  3. Ứng dụng Native: Đường cong học tập, duy trì hai ngăn xếp khác nhau, cơ sở mã, v.v. khiến thời gian đưa ra thị trường chậm hơn tất cả các tùy chọn khác.

Chi phí phát triển
Hình 10.png

  1. Ứng dụng Hyrbid: Chi phí phát triển sẽ thấp hơn nhiều vì cùng một nhóm triển khai mã ứng dụng web có thể được sử dụng để tạo các trang web trong ứng dụng kết hợp.
  2. Ứng dụng Cross Platform: Chi phí đa nền tảng sẽ cao hơn một chút, vì sẽ có một số đường học tập về công nghệ mới và cũng yêu cầu một số kiến ​​thức phát triển ứng dụng gốc.
  3. Ứng dụng Native: Chi phí phát triển cao hơn vì bảo trì / phát triển hai cơ sở mã yêu cầu kiến ​​thức chuyên môn đặc biệt.

Thuê mướn
Hình 11.png

  1. Ứng dụng Hyrbid: Không cần thuê bất kỳ người mới nào vì cùng một nhà phát triển đang phát triển ứng dụng web có thể viết ứng dụng kết hợp.
  2. Ứng dụng đa nền tảng: có thể yêu cầu hoặc không vì nó yêu cầu phát triển khung cụ thể, chúng tôi đã thấy việc thuê tổ chức chỉ phản ứng nhà phát triển bản địa hoặc nhà phát triển chập chờn.
  3. Ứng dụng Native: Cần thuê hoặc duy trì hai nhóm dành riêng cho Android và iOS.

Chi phí bảo trì
Hình 12.png

Thời gian phát triển
Hình 13.png

Trưởng thành
Hình 14.png

  1. Ứng dụng Hyrbid: Ứng dụng kết hợp vẫn là ứng dụng đầu tiên ra đời sau khi bản địa vẫn chưa hoàn thiện về các tính năng truy cập bản địa.
  2. Ứng dụng nền tảng chéo: Nền tảng chéo đã cho thấy sự tuyệt vời và rất nhiều ứng dụng đa nền tảng như uber eat, instagram, quảng cáo goodle, alibaba được tạo ra ở đó ứng dụng trên ứng dụng đa nền tảng.
    2.1. Flutter: Flutter được google ra mắt công chúng vào khoảng năm 2017 và đã đạt được sự phát triển vượt bậc và nó rất được nhiều công ty lớn chấp nhận để tạo ra ứng dụng đa nền tảng, vì nó vẫn còn ở giai đoạn đầu, tôi chỉ xếp nó sau RN, điều này chắc chắn sẽ xảy ra trong thời gian tới.
    2.2. React Native: React Native dẫn đầu về phát triển ứng dụng, rất nhiều hỗ trợ từ cộng đồng, stackoverflow, github repositry (80k Stars trong github).
  3. Ứng dụng Native: Mặc dù việc phát triển ứng dụng khác đã phổ biến nhưng sự phát triển ứng dụng gốc vẫn đang bùng nổ ngày nay vì trải nghiệm và hiệu suất ứng dụng liền mạch. Các công ty phụ thuộc rất nhiều vào trải nghiệm di động chủ yếu chọn phát triển ứng dụng gốc như một cách thuần thục để tạo ứng dụng cho người dùng

HIGH LEVEL DECISION TREE

Hình 15.png

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.