Tìm hiểu về Native App và Hybrid App
Bài đăng này đã không được cập nhật trong 4 năm
Bất cứ khi nào công ty quyết định tạo ra một ứng dụng mobile, thì phải đối mặt với sự lựa chọn của Native app (Ứng dụng gốc) và Hybrid app (Ứng dụng lai) và điều quan trọng nhất là tìm kiếm những cách hiệu quả để thực hiện ý tưởng. Trong bài viết này, chúng ta sẽ tìm hiểu sự khác biệt giữa Native app và Hybrid app, tìm hiểu ưu và nhược điểm của chúng và cách chúng ảnh hưởng đến quá trình phát triển chung và performance của ứng dụng. Chúng ta sẽ xem xét các công nghệ được sử dụng cho nền tảng iOS và Android trong bối cảnh phát triển Native app và Hybrid app để bạn có thể chọn một công nghệ phù hợp nhất cho dự án của mình.
Ứng dụng mobile được xem là một trong những công cụ kinh doanh năng động nhất. Chúng đã trở thành tiêu chuẩn mới để xây dựng kết nối với khách hàng. Không chỉ về các sản phẩm phần mềm, mà bất kỳ dịch vụ nào khác như ngân hàng, chia sẻ xe hoặc giao hàng đều bị ràng buộc phải có ứng dụng mobile cho cả Android và iOS. Chúng cho phép các công ty cung cấp cho người dùng của họ trải nghiệm thuận tiện và nhanh chóng hợp thời. Kinh doanh được thúc đẩy bởi những đổi mới liên tục, do đó, rất nhiều ngành công nghiệp đã sử dụng các ứng dụng mobile ít nhất 6-7 năm. Thật tuyệt khi các công ty có sự lựa chọn phát triển Native app và Hybrid app vì cả hai đều trở thành một giải pháp hợp lý cho nhiều công ty. Hiện tại, một số doanh nghiệp dịch vụ, như Uber, một trong những ví dụ Hybrid app thành công, thích ứng với các ứng dụng di động hơn các trang web. Chúng giúp cải thiện khả năng duy trì bằng cách có khả năng tương tác trực tiếp với khách hàng. Khách hàng nhận được mức độ tiếp cận tăng lên như thông báo push, tùy chọn thanh toán mới, ...
Đây là một cơ chế quan trọng cho doanh nghiệp hiện đại, tuy nhiên chúng cũng đòi hỏi đầu tư vào phát triển và bảo trì ứng dụng mobile. Và cuối cùng, mỗi công ty sẽ phải đối mặt với câu hỏi Native app hay Hybrid app tốt hơn? Chúng ta sẽ tìm câu trả lời trong bài viết này. Tuy nhiên, chúng ta nên thay đổi câu hỏi cho những gì phù hợp hơn với nhu cầu và điều kiện của công ty bạn hơn, cũng như các công ty khác nhau có các mục tiêu khác nhau, hạn chế ngân sách và thời gian, chiến lược tiếp thị và các giai đoạn vòng đời kinh doanh. Sẽ không có câu trả lời đúng cho tất cả mọi trường hợp. Do đó, cả phát triển Native app và Hybrid app có thể trở thành phương pháp tốt nhất cho các công ty khác nhau.
TIẾP TỤC TÌM HIỂU SÂU VỀ PHÁT TRIỂN MOBILE : TỔNG QUAN VỀ NATIVE APP VÀ HYBRID APP
Khi bạn đưa ra quyết định của mình, sẽ thật tuyệt khi hiểu công ty của bạn có những lựa chọn nào. Dù sao đi nữa, bạn sẽ kết thúc việc so sánh Native app và Hybrid app. Cả hai cách tiếp cận đều phù hợp với một số trường hợp. Sự khác biệt giữa Native app và Hybrid app là gì?
Các Native app được tạo cho một nền tảng cụ thể là Android hoặc iOS, trong khi quá trình phát triển Hybrid app phụ thuộc vào chức năng đa nền tảng. Điều đó có nghĩa là, các Native app được xây dựng trên các ngôn ngữ lập trình chỉ có thể được hỗ trợ bởi một nền tảng nhất định. Java, Kotlin thường là các công nghệ được áp dụng để phát triển Android và Objective-C và Swift – cho iOS.
Đối với các Hybrid app, nhà phát triển nên sử dụng một số công nghệ web như HTML, CSS và Javascript framework. Nói cách khác, chúng là nhiều trang web được đóng gói vào các container mô phỏng hành vi phần mềm cho mọi nền tảng hoạt động và theo cách tự nhiên. Các nhà phát triển đối phó với một core code bao gồm cả hai nền tảng. Do đó, sự khác biệt chính giữa Native app và Hybrid app nằm trong quá trình phát triển. Và điều tuyệt vời là người dùng rất có thể sẽ bỏ lỡ sự khác biệt này khi các ứng dụng được tạo ra một cách chuyên nghiệp.
Xem xét tất cả các ưu và nhược điểm của Native app và Hybrid app, các nhà phát triển có thể đề xuất phương pháp phù hợp để đáp ứng yêu cầu của bạn. Những ứng dụng đó được đặc trưng bởi hiệu suất nhanh hơn và bảo mật tốt hơn, nhưng chu kỳ phát triển sẽ chậm hơn. Ngoài ra, mỗi nền tảng sẽ có một codebase riêng, điều này sẽ làm tăng sự đầu tư về tiền bạc và thời gian.
Đối với các cross-platform framework, tính linh hoạt sẽ là lợi thế đáng chú ý giúp tăng tốc chu kỳ phát triển và cắt giảm chi phí. Hiệu suất chậm hơn sẽ là một sự đánh đổi nhỏ.
Khi so sánh lợi ích Native app và Hybrid app của mỗi phương pháp là chân thật và rõ ràng. Đây là nhiệm vụ của mỗi công ty để làm rõ mục đích của họ ngay từ đầu để có được kết quả mong đợi. Các ứng dụng chuyên dụng cung cấp bảo mật tốt hơn để chúng được các tổ chức tài chính như ngân hàng, công ty bảo hiểm lựa chọn rộng rãi,... Họ sẵn sàng chi nhiều tiền hơn cho việc phát triển và bảo trì các ứng dụng mobile đắt tiền hơn để cung cấp bảo mật cho khách hàng của họ. Các công ty lớn cũng có thể quan tâm đến những Native app khi chúng có khả năng đáp ứng ứng dụng cho các nền tảng khác nhau. Amazon và PayPal có thể được đề cập như các ví dụ ứng dụng như vậy.
Cross-platform framework hấp dẫn hơn đối với các công ty mới khởi nghiệp với kinh phí hạn chế và kinh doanh tập trung vào phân phối nội dung. Nó sẽ là một cách tiếp cận tuyệt vời cho các ứng dụng kết nối với du lịch, đánh giá về hàng hóa khác nhau, hình ảnh và xếp hạng của khách hàng. Các ví dụ về Hybrid app nổi tiếng có thể được gọi là Uber, Twitter và Instagram. Native app và Hybrid app không gây ra sự cạnh tranh nhưng đem đến nhiều cơ hội hơn cho các công ty để cung cấp cho người dùng của họ những trải nghiệm tốt nhất. Mục tiêu chính của công ty và nhà phát triển là thực hiện chúng tốt. Trong các đoạn tiếp theo, chúng ta đi đến các thông tin chi tiết hơn về phát triển Native app và Hybrid app, ưu và nhược điểm của chúng.
PHÁT TRIỂN HYBRID APP
Ứng dụng mobile là một bước cải tiến quan trọng cho doanh nghiệp của bạn. Khi bạn đưa ra quyết định tạo Hybrid app, bạn nên tìm hiểu quy trình phát triển của nó, kiểm tra tất cả các tính năng và tìm ra điểm mạnh và điểm yếu. Ứng dụng này ban đầu được coi là một trang web được đưa vào các container. Do đó, mỗi page phải sử dụng các API được thiết kế đặc biệt để đạt được các tính năng cơ bản cũng như thu hút các phương tiện của bên thứ ba cho nó. Các ứng dụng này vận hành kiểm soát chế độ web view để nhận tệp HTML và JavaScript toàn màn hình tận dụng công cụ kết xuất của các trình duyệt trong hệ điều hành tích hợp.
Công nghệ được sử dụng để phát triển Hybrid app
Như đã đề cập, các công ty phát triển mobile đang làm việc với sự kết hợp của các công nghệ. Có ba khung phổ biến nhất để phát triển ứng dụng lai:
- React Native : Facebook đã tạo ra công nghệ open-sourced này để tương thích đa nền tảng. Các UI được đơn giản hóa có hiệu suất tăng đáng kể khi reloading. React Native được ưu chuộng sử dụng vì thời gian phát triển ngắn. Các kỹ sư phần mềm có quyền truy cập vào các đơn vị có sẵn để áp dụng, tuy nhiên, framework có thể thiếu các thành phần nhất định. Cả Facebook và cộng đồng thường xuyên cung cấp thông tin cập nhật.
- Xamarin : Open framework được Microsoft hỗ trợ và duy trì nâng cấp mạnh mẽ. Gần đây, họ đã đưa ra cách tiếp cận phát triển Hybrid mobile app mới cho phép code across platform. Nó đã giúp cải thiện tốc độ phát triển và đơn giản hóa bảo trì. Các nhà phát triển có thể sử dụng logic chung, tuy nhiên, các quy định UI sẽ duy trì cụ thể cho từng nền tảng. Xamarin sẽ không xử lý đồ họa phức tạp nhưng phù hợp với các ứng dụng đơn giản. Công nghệ này thường được chọn cho các dự án định hướng kinh doanh.
- Ionic : Framework này tạo ra các ứng dụng mobile với các công nghệ web tiêu chuẩn như JavaScript, CSS, HTML, Angular,... Các nhà phát triển cũng có rất nhiều UI component có thể truy cập đơn giản để xử lý. Thời gian phát triển là tuyệt vời như với tất cả các khung khác cho các ví dụ Hybrid app. Mặc dù có tất cả các lợi ích, việc bảo trì có thể khó khăn hơn. Ionic cung cấp rất nhiều plugin, vì vậy khi sự cố xuất hiện, nó có thể yêu cầu điều chỉnh thủ công thêm.
Trong khi so sánh Native app và Hybrid app, bạn nên tìm hiểu tất cả ưu và nhược điểm của quá trình phát triển Hybrid app. Tất cả các công nghệ được đề cập ở trên được đặc trưng bởi các đặc thù sau:
Ưu điểm khi phát triển hybrid app
- Single code base – Đây là lợi thế đem đến tất cả các lợi ích sau. Các ứng dụng này được các công ty và nhà phát triển ưa thích vì chúng có thể hoạt động trên cả hai nền tảng. Sẽ không cần building hai code riêng cho iOS và Android vì lý do code common chức năng.
- Lower cost / Chi phí thấp - Công ty có thể tiết kiệm một chi phí rất lớn bằng cách phát triển một ứng dụng mobile trong khi giải quyết vấn đề người dùng trên các nền tảng khác nhau. Bạn có nhu cầu thuê một nhóm có chuyên môn về cả hai nhưng chỉ cần chuyên môn tốt về phát triển web là đủ. Chi phí của bạn sẽ gần giống như chi phí xây dựng chỉ cho một nhưng được thiết kế để chạy ở mọi nơi.
- Simpler to build and test / Đơn giản để build và test – Team sẽ đạt được kết quả mong đợi nhanh hơn. Họ không thỏa thuận với từng nền tảng. Code được tạo một lần và thời gian test cũng sẽ được giảm.
- Easier to maintain / Dế dàng bảo trì – Tất cả các thay đổi và cập nhật bắt buộc sẽ được duy trì đồng thời trên cả hai nền tảng. Nó không chỉ thuận tiện cho các nhà phát triển cho người dùng là tốt. Rất nhiều vấn đề có thể khắc phục từ phía máy chủ và người dùng sẽ chỉ nhận được các bản cập nhật tự động.
- Faster delivery time / Thời gian delivery nhanh hơn – Như đã đề cập ở trên, bạn không cần phải có hai nhóm iOS và Android hoặc nhóm đa chức năng lớn, bạn chỉ cần tìm một nhóm chuyên gia tương đối nhỏ. Họ có thể tạo ra một sản phẩm được tiếp thị thông minh sẽ thú vị cho những người dùng khác nhau. Các Hybrid app đã tự đề xuất là định hướng nội dung.
Nhược điểm khi phát triển Hybrid app
- Bounded efficiency / Giới hạn hiệu quả – Cross-platform framework phụ thuộc vào các plugin được kết nối với các tính năng của thiết bị. Đôi khi các nhà phát triển phải tạo chúng bằng tay để tiếp cận chức năng cụ thể của thiết bị.
- Internet connection – Đối với hiệu quả của Native app và Hybrid app, có một sự khác biệt đáng kể. Các cross-platform framework yêu cầu kết nối internet thường xuyên. Một số chức năng sẽ không có sẵn khi người dùng thiếu kết nối internet.
- Bản build dung lượng lớn – Dung lượng của bản build khá lớn, tốn bộ nhớ của device nhieufehow so vớ Native app.
PHÁT TRIỂN NATIVE APP
Khi xem xét phát triển Native mobile app và Hybrid mobile app, chúng ta nên nhớ các tính năng quan trọng của Native app. Chúng được xây dựng riêng cho chỉ một nền tảng, do đó các công nghệ được áp dụng sẽ khác nhau. Để xử lý việc phát triển Native app của ứng dụng mobile Android, các kỹ sư có thể áp dụng Java hoặc Kotlin, Swift hoặc Objective-C sẽ cần cho phát triển iOS Native app. Các công ty thường chọn phương pháp này có sự cần thiết phải xây dựng hai ứng dụng cùng một lúc. Rõ ràng là quá trình kỹ thuật dài hơn và đòi hỏi nhiều nỗ lực hơn. Nhưng kết quả cuối cùng sẽ cân bằng nó. Các khách hàng có thể có một trải nghiệm nhanh nhạy hơn và nhanh hơn. Performance tốt hơn là lợi thế cho các ứng dụng mobile phức tạp xử lý hoạt hình và kết xuất. Hơn nữa, bảo mật dữ liệu là một tính năng có lợi khác. Vì chúng ta đang tìm kiếm sự khác biệt giữa Native app và Hybrid app, hãy kiểm tra các framework có thể.
Công nghệ được sử dụng để phát triển iOS Native app
- Objective-C – Ngôn ngữ lập trình này được biết đến với trải nghiệm phát triển tuyệt vời, thư viện có sẵn và một nhóm chuyên gia rộng lớn. Objective-C là một mature framework, cũng có được khả năng tương thích với các công nghệ lập trình khác. Bất chấp những lợi ích đó, chúng ta nhận ra rằng các ngôn ngữ mới xuất hiện và đôi khi nó sẽ không có khả năng hỗ trợ tất cả các tính năng mới nhất.
- Swift – Đây là một framework lập trình tương đối mới được Apple giới thiệu đã trở thành lựa chọn thay thế để xây dựng các iOS Native app. Các nhà phát triển đã chỉ ra performance nhanh hơn của nó và nó dễ dàng hơn để tìm hiểu và làm việc với. Nó liên tục phát triển đó là lý do tại sao có thể thiếu một số thành phần. Tuy nhiên, người ta nói rằng có thể thay thế Objective-C trong tương lai.
Công nghệ được sử dụng để phát triển Android Native app
- Java – Ngôn ngữ lập trình không chỉ chủ yếu được sử dụng cho các ứng dụng mobile Android mà còn cho các mục đích khác. Phần lớn phát triển desktop và web dựa trên Java. Nó đã trở thành một hệ thống công cụ đặc biệt, các nhà phát triển có quyền truy cập vào một thư viện mạnh mẽ. Nó giúp đơn giản hóa quá trình lập trình tổng thể. Tuy nhiên, các ứng dụng trên Java đòi hỏi nhiều bộ nhớ hơn và hoạt động chậm hơn so với các framework khác.
- Kotlin – Nó là một ngôn ngữ lập trình được phát triển đặc biệt để làm việc với Java và Java Virtual Machine. Do đó, việc sử dụng nó được Google hỗ trợ và phê duyệt để phát triển các ứng dụng Android. Một trong những ưu điểm chính của Kotlin so với Java thông thường là giao diện của nó cho phép làm việc theo cú pháp ngắn hơn. Thực tế này giúp giảm thời gian lập trình cần thiết để tạo một ứng dụng cho Android. Bây giờ nó được bao gồm như là một thay thế cho trình biên dịch Java tiêu chuẩn cho Android Studio. Expedia, Square, Pinterest và Flipboard có thể được nêu tên trong số những ví dụ điển hình nhất về các công ty sử dụng Kotlin cho các ứng dụng Android của họ.
Đối với những lợi thế về performance và phát triển Hybrid app so với Native app, chúng có thể được tóm tắt trong một vài điểm đơn giản:
Ưu điểm khi phát triển Native app
- Better performance – Khi chúng ta phân tích performance của Hybrid so với Native, rõ ràng các Native app sẽ nhanh hơn. Chúng được xây dựng với framework có nguồn gốc từ platform.
- Data protection / Bảo mật dữ liệu – Nó dễ dàng hơn nhiều để làm cho Native app an toàn. Đó là lợi thế mà rất nhiều công ty quan tâm trong việc cung cấp cho khách hàng của họ đặc biệt là trong lĩnh vực doanh nghiệp, fintech và các ứng dụng có dữ liệu nhạy cảm.
- Overall functionality / Chức năng tổng thể – Ứng dụng sẽ có khả năng quan trọng để kết nối các tính năng phần cứng của thiết bị và các cơ sở dữ liệu khác nhau. Không cần plugin hay công cụ bổ sung.
- Customer experience / Trải nghiệm khách hàng – Chúng chắc chắn sẽ có performance cao. Ngoài ra, chúng có thể hoạt động ở chế độ ngoại tuyến, đây vẫn là một vấn đề đối với các ví dụ Hybrid app.
- Comprehension / Tổng quát – Các nhà phát triển đã nhận thức được tất cả các điểm mạnh và điểm yếu của việc sử dụng các công nghệ được thiết lập tốt. Chúng sẽ giúp tìm ra phương pháp phù hợp để nhận được kết quả mong muốn cuối cùng.
- Bản build nhẹ hơn – Dung lượng của bản build gọn nhẹ, ít tốn bộ nhớ của device.
Nhược điểm khi phát triển Native app
Hãy chú ý trong khi kiểm tra danh sách các nhược điểm, nó cũng có thể phụ thuộc vào platform được chọn.
- Time and money-consuming / Tốn thời gian và tiền bạc – Chắc chắn đòi hỏi thời gian để xây dựng phần mềm phức tạp. Phân phối người dùng trên hai platforms chính nên tăng gấp đôi số lượng công việc và testing cần thiết để duy trì hai ứng dụng riêng biệt cho cả iOS và Android hoạt động.
- Distributed codebase / Codebase phân tán – Có một số tính năng không có sẵn cho iOS hoặc Android là một thực tế lớn có ngay cả trong năm 2019. Điều này xảy ra do những hạn chế về ngân sách hoặc hạn chế của platform. Đôi khi, ứng dụng trong App Store có thể bị hủy bỏ trong nhiều năm trong khi phiên bản Android nhận được cập nhật thường xuyên và ngược lại. Ngược lại, Hybrid khuyến khích các nhà phát triển tiếp cận UI và các tính năng một cách chu đáo hơn và chỉ giới thiệu các tính năng có thể hoạt động trên cả hai hệ điều hành.
WHICH IS BETTER NATIVE OR HYBRID APP
Khi chúng ta đã kiểm tra tất cả các ưu và nhược điểm của Native app so với Hybrid app, bạn có thể nhận thấy sự khác biệt cốt lõi giữa phát triển Native app và Hybrid app nằm ở cách tiếp cận triển khai. Native app là hai phần mềm hoàn toàn khác nhau được thiết kế cho nền tảng Android hoặc iOS, trong khi các Hybrid app là cùng một phần mềm hoạt động trên cả hai platform với các tinh chỉnh nhỏ. Sự khác biệt đáng kể này đi trước danh sách các tiêu chí sau.
Các công ty cần đặt ra các mục tiêu chính xác mà họ quan tâm. Sự lựa chọn Native và Hybrid app sẽ ảnh hưởng đến kết quả cuối cùng. Tuy nhiên không có một cạnh tranh hoàn hảo, mọi thứ đều phụ thuộc vào dự án. Do đó, mỗi loại ứng dụng mobile sẽ hoàn hảo cho các trường hợp khác nhau.
Trước hết, hãy xác định đối tượng của bạn và những dịch vụ bạn sẽ cung cấp. Nếu ứng dụng hướng đến nội dung, Hybrid app (cross-platform framework) sẽ là lựa chọn hợp lý. Khi công ty của bạn là một tổ chức tài chính, tốt hơn là chọn Native app do tính bảo mật tốt hơn.
Thứ hai, quan sát performance của Hybrid app so với Native app, nhiều nhà phát triển đã thừa nhận rằng các Native mobile app được chọn vì performance tốt hơn. Tuy nhiên, các Hybrid app (cross-platform framework) không ngừng cải tiến để theo kịp.
Hãy chắc chắn rằng, lập ngân sách của bạn, các ví dụ Hybrid app sẽ ít chi phí hơn hơn và ít tốn thời gian hơn. Bạn không cần phải có hai nhóm Android và iOS riêng biệt làm việc trên hai ứng dụng khác nhau. Nếu là một ứng dụng hướng đến người dùng đơn giản, sự lựa chọn giữa Native app và Hybrid app khá phong phú, sẽ tốt hơn nhiều nếu bạn phát triển Hybrid mobile app vì một nhóm có kinh nghiệm có thể tạo một ứng dụng cross-platform sẽ hoạt động chính xác thông qua cả hai platform.
Đối với bảo trì, có thể dễ dàng quản lý một ứng dụng mobile hơn là hai ứng dụng cùng một lúc. Theo các phân tích, so sánh của Native app so với Hybrid app, Hybrid app chắc chắn dễ dàng hơn nhiều để hỗ trợ và duy trì.
Cuối cùng, tất cả các công ty đều được định hướng cho trải nghiệm người dùng tốt nhất. Hầu hết thời gian, khách hàng sẽ không nhận thấy sự khác biệt giữa hiệu suất Hybrid app và Native app. Cả hai biến thể đều không ngừng cải tiến với các tính năng và công nghệ mới. Các ví dụ Native app có thể thực hiện nhanh hơn một chút vì ban đầu chúng được tạo cho một platform nhất định. Tuy nhiên, một cross-platform framework thường được chọn vì tính linh hoạt của nó.
Do đó, sẽ không có một câu trả lời đúng cho câu hỏi "Native app hay Hybrid app thì cái nào tốt hơn?", Công ty của bạn sẽ cần được định hướng theo tiêu chí chính.
Các ưu và nhược điểm của Native và Hybrid app nói trên có thể xác định lựa chọn của bạn phù hợp với nhu cầu và các resource sẵn có của bạn. Trong trường hợp, khi bạn bị giới hạn về thời gian và resource, Hybrid app sẽ là giải pháp phù hợp để tham gia thị trường trong một khung thời gian khá ngắn. Mặc dù, rất nhiều công ty dựa vào chức năng phức tạp, hiệu suất ngoại tuyến và bảo vệ dữ liệu tuyệt vời sẽ thay vì phát triển Native app.
Testing tools
Có rất nhiều công cụ có sẵn để thử nghiệm di động. Họ sử dụng các công nghệ khác nhau để tạo và chạy thử nghiệm. Sự đa dạng của các tính năng được hỗ trợ là tuyệt vời. Các công cụ khác nhau hỗ trợ các hệ điều hành khác nhau, các loại ứng dụng khác nhau, thiết bị thực, trình giả lập và trình giả lập. Một số trong số chúng là open source và một số trong số chúng là thương mại. Một số công cụ chạy trên cloud, một số khác chạy cục bộ. Danh sách này chỉ là tổng quan về một số khung thử nghiệm hiện có và khả năng sử dụng web và Native app của chúng.
SUMMARY
Hy vọng rằng bài viết này đã giúp bạn tìm thấy sự khác biệt giữa Native app và Hybrid app và việc lựa chọn đúng sẽ dễ dàng hơn cho bạn. Mỗi loại có lợi ích rất cần thiết cho các dự án nhất định. Hơn nữa, bạn có thể chọn công nghệ bạn muốn xem xét khả năng phát triển của mình. Có tính đến tất cả các tiêu chí này, chúng ta có thể đưa ra kết luận rằng mỗi phương pháp phù hợp với một số trường hợp cụ thể. Nhiệm vụ của bạn sẽ là phác thảo những tiêu chí quan trọng nhất của riêng mình và đừng quên hỏi ý kiến các chuyên gia. Đây là cách tốt nhất để chọn vì mọi nhóm nhà phát triển đủ điều kiện lắng nghe bạn trước và chỉ sau này mới có thể tư vấn giải pháp.
Tham khảo :
All rights reserved