Nên chọn công cụ phát triển đa nền tảng nào ?

Với sự phát triển của smartphone, hàng loạt các nền tảng trên mobile xuất hiện : Ios, Android, Windows Phone,Blackberry, v.v.. Để phát triển một ứng dụng, dịch vụ phần mềm không còn chỉ phục vụ cho một nền tảng đặc thù nữa. Ngay nay các nhà phát triển phải cân nhắc việc xây dựng một loạt ứng dụng trên nhiều nền tảng. Với các yêu cầu cần tính toán : chi phí đầu tư, thời gian phát triển, hiệu quả của phần mềm, v.v..

Tùy vào yêu cầu đặc thù của từng dự án, tuy nhiên nếu xét đến các dự án dạng cung cấp dịch vụ, nội dung số thì độ phủ của dịch vụ trên các nền tảng càng nhiều thì càng có lợi. Tuy nhiên, độ phủ càng lớn thì chi phí và thời gian đầu tư càng nhiều. Điều đó dẫn đến sự ra đời của công nghệ cross platform. Dù thế, nó vẫn không để tối ưu so với các ứng dụng native trên mỗi nền tảng được.

Trong bài này, mình sẽ lướt qua các nhóm nền tảng, cùng nhau phân tích để chọn công nghệ phù hợp với nhu cầu của mình.

Trước tiên, phải nói đến Web, đây là một công nghệ phổ biến và có mặt ở hầu hết các platform. Để tiếp cận một cách nhanh nhất đến mọi nền tảng, chúng ta có thể bắt đầu từ Web. Chi phí rẽ nhất, hữu dụng nhất, tiếp cận nhanh nhất. Tuy nhiên, đối với các ứng dụng đòi hỏi truy xuất đến các thành phần của hệ thống, hoặc đòi hỏi performance cao thì web không còn phù hợp nữa. Bên cạnh đó, việc cài đặt app trên mobile và các hệ điều hành trên pc – laptop ngày càng dễ dàng nên người dùng dần có xu hướng cài các ứng dụng để sử dụng hơn là vào các website.

Tiếp theo web là các nền tảng cross platform  hay còn gọi là các hybrid app, code một lần và được sử dụng ở nhiều nền tảng. Với công nghệ  này, chi phí và thời gian phát triển giảm đi rất nhiều. Triết lý của công nghệ giống hệt Java, viết một lần và chạy mọi nơi. Có 2 nhóm công nghệ ở mãng này:

  • UI Webview: Điển hình cho nhóm này là Phonegap, Cordovar, v.v.. Phần giao diện được xây dựng hoàn toàn dựa trên nền web, viết bằng html, css , js. Giao tiếp với phần cứng và các services của OS thông qua 1 sdk được xây dựng riêng cho mỗi nền tảng. Do phần UI chạy trên webview sẽ không được mượt như khi sử dụng các control của OS. Riêng Windows phone và Android, webview hổ trợ mạnh nên ứng dụng hoạt động tương đối mượt, nhưng IOS thì ngược lại nên không được mượt.
  • UI Native: Điển hình cho nhóm này là Xamarin, Titanium,v.v.. Phần giao diện được convert thành các control Native trên các OS, do đó trên mỗi nền tảng, phải xử lý điều chỉnh riêng. Tuy nhiên, do chỉ code 1 ngôn ngữ trên các nền tảng nên thời gian cũng giảm đi rất nhiều, Xamarin sử dụng C#, Titatinium sử dụng javascript. Phần tương tác với phần cứng và các services của OS cũng được thông qua 1 sdk, đồng thời cho phép nhúng các đoạn code native, do đó ta có thể tương tác sâu hơn và toàn diện hơn với hệ điều hành.

Và cuối cùng là , các native app. Khỏi phải bàn cải về hiệu năng đối với nhóm này. Tuy nhiên, chi phí và thời gian để đầu tư sẽ nhiều hơn. Do đặc thù mỗi nền tảng là khác nhau, do đó phải xây dựng riêng từng app một cho từng nền tảng.

Để kết thúc lại bài này, mình sẽ đưa ra một số nhận định:

  • Nếu ứng dụng của bạn đơn giản, chỉ là cung cấp các thông tin, chi phí đầu tư rất hạn chế và cần tiếp cận thị trường rộng, nhanh thì nên cân nhắc sử dụng WebApp. Với giải pháp này, thời gian phát triển ứng dụng sẽ nhanh hơn và phủ rộng trên tất cả các nền tảng.
  • Nếu ứng dụng của bạn đòi hỏi truy xuất đến một số services trên hệ điều hành, đồng thời không đòi hỏi performance cao , chi phí đầu tư có hạn và có mặt trên nhiều nền tảng thì nên cân nhắc sử dụng Hybrid App dạng UI Webview. Chúng sẽ làm cho ứng dụng của bạn không quá mạnh mẽ, tuy nhiên, với các yêu cầu đơn giản, không đỏi hỏi xử lý nhiều thì công nghệ này sẽ phù hợp với bạn.
  • Tương tự như trên nhưng nếu ứng dụng của bạn đòi hỏi sâu hơn một chút, các control đặc thù trên các hệ điều hành, mạnh mẽ hơn nhưng không đòi hỏi quá cao về performance thì bạn cân nhắc sử dụng Hybrid App UI Native. Tuy không hoàn toàn tốt, nhưng khả năng đáp ứng của công nghệ này cũng rất cao.
  • Khi ứng dụng của bạn đã đến độ chín, cần tối ưu performance hoặc đòi hỏi phải sử dụng các service của OS sâu và hiệu quả thì đến lúc bạn cần chuyển qua native app. Mặc dù tốn nhiều công sức phát triển trên nhiều nền tảng nhưng ứng dụng bạn thu được sẽ là một ứng dụng tuyệt vời.

Cuối cùng, mình  muốn nhắc nhủ hãy nhận định nhu cầu của mình tới đâu, chi phí đầu tư như thế nào để có thể chọn lựa phù hợp. Nên nhớ rằng 50% lập trình viên mobile không phát triển native app và 2 nền tảng mobile phổ biến nhất là Android và IOS. Ban đầu chỉ cần phủ Web (pc – laptop) -> IOS – > Android và các nền tảng ít phổ biến hơn.

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.