Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
8,46 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ HỒ DANH CHUẨN TÌMHIỂUĐÁNHGIÁCÁCFRAMEWORKPHÁTTRIỂNỨNGDỤNGDIĐỘNGĐANỀNTẢNGLUẬNVĂNTHẠCSĨKỸTHUẬTPHẦNMỀM Hà Nội - 2017 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ HỒ DANH CHUẨN TÌMHIỂUĐÁNHGIÁCÁCFRAMEWORKPHÁTTRIỂNỨNGDỤNGDIĐỘNGĐANỀNTẢNG Ngành: Công nghệ thông tin Chuyên ngành: Kỹthuậtphầnmềm Mã số: 60480103 LUẬNVĂNTHẠCSĨKỸTHUẬTPHẦNMỀM NGƯỜI HƯỚNG DẪN KHOA HỌC: TS TRẦN THỊ MINH CHÂU XÁC NHẬN CỦA CÁN BỘ HƯỚNG DẪN XÁC NHẬN CỦA CHỦ TỊCH HỘI ĐỒNG Hà Nội - 2017 LỜI CAM ĐOAN Tôi xin cam đoan nội dung kết luậnvăn tốt nghiệp tự nghiên cứu hướng dẫn TS Trần Thị Minh Châu Trong toàn nội dungluận văn, nội dung trình bày cá nhân tổng hợp từ nhiều nguồn tài liệu khác Tất tài liệu tham khảo trích dẫn rõ ràng phần cuối luậnvăn Tôi xin cam đoan lời thật Nếu sai tơi xin hồn toàn chịu trách nhiệm Hà Nội, ngày tháng năm 2017 Học viên Hồ Danh Chuẩn LỜI CẢM ƠN Đầu tiên xin chân thành cảm ơn TS Trần Thị Minh Châu tận tình hướng dẫn đóng góp ý kiến q báu chun mơn phương pháp nghiên cứu khoa học để thực luậnvăn tốt nghiệp thạcsĩ Cô gương mặt sống để học tập noi theo Trong suốt trình học tập trường Đại học Công nghệ - Đại học Quốc gia Hà Nội, xin chân thành cảm ơn thầy, cô giáo cung cấp cho tơi kiến thức hữu ích, bổ trợ cho q trình pháttriển sau tơi Cuối xin gửi lời cảm ơn tới gia đình tơi ln ủng hộ tơi đường học tập nghiên cứu với nhiều khó khăn, vất vả Mặc dù cố gắng q trình làm luậnvăn khơng thể tránh khỏi thiếu sót, mong nhận góp ý thầy cô Hà Nội, ngày tháng Học viên năm 2017 Hồ Danh Chuẩn MỤC LỤC DANH MỤC CHỮ VIẾT TẮT DANH MỤC HÌNH VẼ DANH MỤC BẢNG BIỂU CHƯƠNG 1: GIỚI THIỆU 1.1 Đặt vấn đề 1.2 Mục tiêu phạm vi nghiên cứu CHƯƠNG 2: NGHIÊN CỨU TỔNG QUAN VỀ PHÁTTRIỂNỨNGDỤNGDIĐỘNGĐANỀNTẢNG 2.1 Các cách tiếp cận việc pháttriểnứngdụngdiđộng 2.1.1 Pháttriểnứngdụng native 2.1.2 Pháttriểnứngdụng web 2.1.3 Pháttriểnứngdụng hybrid 10 2.2 Ionic framework 10 2.2.1 Giới thiệu 10 2.2.2 Kiến trúc 12 2.2.3 Điểm bật 16 2.2.4 Ưu điểm nhược điểm 18 2.3 Xamarin framework 20 2.3.1 Điểm bật 21 2.3.2 Kiến trúc [3] 22 2.3.3 Ưu điểm nhược điểm 24 CHƯƠNG 3: SO SÁNH VÀ ĐÁNHGIÁ 28 3.1 So sánh 28 3.2 Đánhgiá 30 CHƯƠNG 4: ỨNGDỤNG THỬ NGHIỆM 39 4.1 Ứngdụng so sánh khả pháttriển hai tảng 39 4.1.1 Nội dungứngdụng 39 4.1.2 Kết thực nghiệm 42 4.2 Ứngdụng so sánh hiệu 44 4.2.1 Nội dung thực nghiệm 44 4.2.2 Kết thực nghiệm 44 4.3 Khuyến nghị 45 CHƯƠNG 5: KẾT LUẬN 47 TÀI LIỆU THAM KHẢO 48 DANH MỤC CHỮ VIẾT TẮT Chữ viết tắt Diễn giải IDE Intergrated Development Environtment MVC Model View Controller API Application Programming Interface SDK Software Development Kit HTML Hyper Text Mark-up Language DOM Document Object Model JNI Java Native Interface CLR Common Language Runtime CLI Common Language Infrastructure AOT Ahead Of Time JIT Just In Time IL Intermediate Language REST Representation State Transfer JSON Javascript Object Notation WCF Windows Communication Foundation MSIL Microsoft Intermediate Language GPU Graphics Processing Unit CPU Central Processing Unit DANH MỤC HÌNH VẼ Hình 2.1: Thanh Tab bar Ionic, biểu diễn Android iOS 11 Hình 2.2: Cấu trúc ứngdụng Ionic/Cordova 13 Hình 2.3: Kiến trúc Cordova plugin 14 Hình 2.4: Phương thức hoạt độngứngdụng Xamarin iOS 24 Hình 4.1: Ứngdụng thực nghiệm minh họa việc pháttriển chức Ionic Xamarin 40 Hình 4.2: Giao diện hình hiển thị đồ Google Maps 41 Hình 4.3: Giao diện hình hiển thị danh sách ảnh 42 Hình 4.4: So sánh hiệuứngdụng iOS pháttriển ObjC, Xamarin iOS 45 DANH MỤC BẢNG BIỂU Bảng 3.1: Bảng so sánh tính hỗ trợ Ionic Xamarin tảng iOS 28 Bảng 4.1: Bảng so sánh chức hai tảng Ionic Xamarin 42 CHƯƠNG 1: GIỚI THIỆU 1.1 Đặt vấn đề Ngày nay, hệ sinh thái diđộngđóng vai trò quan trọng chiến lược kinh doanh hầu hết doanh nghiệp Các doanh nghiệp nghiêm túc việc pháttriểnphát hành ứngdụng phục vụ mục đích kinh doanh họ Tuy nhiên dù mục đích doanh nghiệp pháttriểnứngdụngdiđộngvấn đề ln hữu việc lựa chọn cách tiếp cận tốt cho họ - công cụ hay phương pháp nêntriển khai để họ đưa ứngdụng đến khách hàng, thời điểm mà không cần quan tâm đến thiết bị, tảng người dùng cuối sử dụng Tuỳ thuộc vào ứngdụng có u cầu tính năng, trải nghiệm người dùng, vòng đời sản phẩm, Có ứngdụng có vòng đời ngắn phục vụ thời điểm định ứngdụng phục vụ kiện; có ứngdụng lại có vòng đời dài, gắn liền với tồn doanh nghiệp; có ứngdụng yêu cầu tương tác nhiều với thành phần thiết bị; có ứngdụng cần người dùng tương tác nhiều lên thiết bị, Tuy nhiên, tựu chung lại tất có điểm chung: ứngdụng cần xây dựng nhanh tốt, rẻ tốt chạy nhiều thiết bị tốt Để lựa chọn chiến lược pháttriểnứngdụng tốt, bên liên quan phải đánhgiá tiềm ứng dụng, cân yêu cầu khoảng thời gian cần thiết để đưa ứngdụng thị trường Sự pháttriểntảngdiđộng phụ thuộc nhiều vào trải nghiệm người dùngtảng Apple chiếm vị trí cao thị phầndiđộng nhờ việc cung cấp cho người dùng trải nghiệm đồng với chất lượng cao Tương ứng, nhà pháttriểnứngdụngđatảng phải hướng đến việc tạo ứngdụng đáp ứng yêu cầu người dùng Trong trải nghiệm người dùng trở thành mục tiêu ứng dụng, có đến bốn đến năm tảngdiđộng cần cân nhắc phát triển: iOS, Android, BlackberryOS, Windows Phone Mobile Web để đưa sản phẩm đến với khách hàng Trong hai tảng trọng nhiều iOS Android Blackberry Microsoft dừng sản xuất thiết bị chạy BlackberryOS Windows Phone Tất hệ điều hành diđộng khác công nghệ, ngơn ngữ lập trình, cách thức lập trình tiếp cận lập trình viên cần sỡ hữu lượng kỹ đủ lớn để có thể đưa sản phẩm đáp ứng yêu cầu độ phủ tính đa dạng theo cách truyền thống Nếu ứngdụng cần pháttriển nhiều hai tảng, việc đưa sản phẩm có trải nghiệm trung thành tất tảng tiêu tốn nhiều thời gian cơng sức a Ionic b Xamarin Hình 4.2: Giao diện hình hiển thị đồ Google Maps - Đa luồng: Để minh họa chức này, ứngdụng xây dựngdanh sách cuộn cho phép tải ảnh luồng chạy thực tương tác với giao diện luồng 41 a Ionic b Xamarin Hình 4.3: Giao diện hình hiển thị danh sách ảnh 4.1.2 Kết thực nghiệm Bảng 4.1: Bảng so sánh chức hai tảng Ionic Xamarin Chức UI UX Ionic Xamarin Tôi phải tương tác với thành phần WebKit để thực tính tuỳ chỉnh trình chuyển đổi trang Quá trình phức tạp cần có kiến thức tảng web native viết đoạn mã để chụp lại ảnh hình, sau sử dụng thư viện Sử dụng chế hỗ trợ có sẵn Xamarin Custom Renderer [16] kết hợp với tìmhiểu tài liệu tuỳ chỉnh chuyển đổi iOS để thực tính hồn tồn tương tư cách nhà pháttriển thực tảng iOS Cụ thể tơi sử dụng thư viện CoreAnimation có sẵn 42 CoreAnimation có sẵn iOS để thực iOS để thực trình chuyển đổi “lật” hai trình chuyển đổi Bên cạnh trang Tồn mã nguồn thực đó, tơi cần phải viết tính 26 dòng đoạn mã wrapper javascript để gọi tính từ ứngdụng Ionic Tồn mã nguồn thực tính 299 dòng Layout Cả hai khung pháttriển có chế riêng để thành phần giao diện tự động tính tốn thay đổi kích thước đáp ứng lại với kích cỡ thiết bị khác Animation Để thực animation cần kết hợp animation riêng lẻ thành chuỗi thực Cả hai khung pháttriển hỗ trợ tốt tính Dịch vụ thư viện từ Cả hai khung pháttriển hỗ trợ cho phép tích hợp bên thứ ba Google Maps SDK vào ứngdụngĐa luồng Để thực chức cho phép tải ảnh luồng chạy ngầm cần có kết hợp API native (NSMutableURLRequest) cho phép thực yêu cầu tầng thông báo (sử dụng Rxjs) cho thành phần web cập nhật giao diện nội dung sẵn sàng Sử dụng NET Api [13] tích hợp sẵn Xamarin để tạo tác vụ chạy ngầm sử dụng API (Device.InvokeOnMainThread) cho phép tương tác với thành phần giao diện luồng để cập nhật giao diện nộik dung sẵn sàng Bằng ứngdụng thực nghiệm, thấy phần trình pháttriển chức cần có ứngdụng Cả Ionic Xamarin cung cấp cho nhà pháttriển khả để tích hợp chức phổ biến vào ứngdụng Tuy nhiên, qua ứngdụng thực nghiệm, thấy việc triển 43 khai chức mà chưa Ionic hỗ trợ nhà pháttriển thơng thường phức tạp khó khăn nhiều so với Xamarin Điều đến từ khác biệt cách tiếp cận hai khung pháttriểnỨngdụng Xamarin chất ứngdụng native, kết hợp với khả tương tác tốt với tảng native Các API Xamarin xây dựng tương ứng với API native tảng cụ thể Điều giúp cho lập trình viên sử dụng tài liệu có sẵn để triển khai tính chưa hỗ trợ mặc định Trong đó, ứngdụng Ionic chạy tảng web, lập trình viên phải tương tác với thành phầntảng qua tầng trung gian WebKit Điều dẫn đến việc nhà pháttriển cần phải có kĩ rộng bao gồm tảng web native để xử lý vấn đề mức độ sâu Chính lý dẫn đến nhược điểm lớn Ionic việc phụ thuộc vào plugin, nói xác phụ thuộc vào số nhỏ lập trình viên có kinh nghiệm, có khả triển khai tính 4.2 Ứngdụng so sánh hiệu 4.2.1 Nội dung thực nghiệm Khi nhắc đến khung pháttriểnứngdụngđatảng sử dụng công nghệ web, nhiều nhà pháttriểnphânvânhiệuứngdụng xây dựng dựa khung pháttriển Tuy nhiên, khung pháttriểnứngdụngdiđộng dựa cơng nghệ web có bước pháttriển nhanh chóng hiệu nhờ trình tối ưu khung phát triển, sức mạnh phần cứng mạnh thiết bị, trình tối ưu engine web hệ điều hành Để so sánh hiệu khung pháttriểnứngdụngđa tảng, viết ứngdụng nhỏ đo thời gian ứngdụng xây dựng dựa vào khung xử lý tác vụ ứngdụngỨngdụng mô trình xử lý liệu ứngdụng thể thao, cho phép xử lý liệu vị trí người dùng Dữ liệu ứngdụng biểu diễn dạng JSON CSV bao gồm 531 dòng liệu thể trình di chuyển người dùngỨngdụng xây dựng dựa ba tảng công nghệ native iOS, Xamarin Ionic với logic Ứngdụng thực nghiệm hai thiết bị iPhone SE iPhone 8+ chạy tảng iOS 11 Ứngdụng thực nghiệm 10 lần với 1000 vòng lặp lần lấy kết trung bình 4.2.2 Kết thực nghiệm Biểu đồ thể thời gian xử lý ứngdụng giống tảng iOS sử dụng Objective-C, Xamarin Ionic 44 Hình 4.4: So sánh hiệuứngdụng iOS pháttriển ObjC, Xamarin Ionic Trong phạm vi thử nghiệm, ứngdụng tập trung vào việc xử lý chuỗi ký tự tính tốn toạ độ Qua biểu đồ thấy hiệuứngdụngpháttriển Xamarin tương đương với ứngdụngpháttriển cách truyền thơng sử dụng native SDK Trong hiệuứngdụng thử nghiệm pháttriển Ionic tốt khoảng lần so với ứngdụngpháttriển Xamarin native Objective-C Điều không chứng tỏ hiệuứngdụngpháttriển Ionic tốt so với ứngdụngpháttriển Xamarin hay Objective-C thể khả Ionic việc tối ưu hiệuứngdụng số trường hợp 4.3 Khuyến nghị Ionic Xamarin khung pháttriểnứngdụngdiđộngđatảng tốt có lợi định Nếu Xamarin mạnh khả tương tác với thư viện native, hiệu khả tuỳ biến Ionic mạnh tính quán cần có khung pháttriểnđatảng Việc lựa chọn khung pháttriển phù hợp phù thuộc vào yêu cầu ứngdụngtảng cơng nghệ lập trình viên Nếu ứngdụng yêu cầu không phức tạp, không cần xử lý nhiều liệu, sử dụng dịch vụ phổ biến, cần có thời gian pháttriển nhanh, chi phí hạn chế Ionic lựa chọn tốt Trong ứngdụng yêu cầu hiệu tốt, cần xử lý 45 nhiều tác vụ nặng, cần tuỳ biến nhiều tảng sử dụng tính đặc biệt tảng sử dụng nhiều thư viện native Xamarin lựa chọn tốt 46 CHƯƠNG 5: KẾT LUẬNLuậnvăn tốt nghiệp giới thiệu cách tổng quát cách tiếp cận để pháttriểnứngdụngdiđộng Dựa vào xu pháttriển khung pháttriểndiđộngđa tảng, luậnvăn lựa chọn giới thiệu, phân tích ưu nhược điểm so sánh hai khung pháttriển Ionic Xamarin, đại diện cho hai trường phái pháttriểnứngdụngđatảng sử dụng công nghệ web công nghệ native Cụ thể, luậnvăn thực việc phân tích so sánh dựa tiêu chí cần thiết mà nhà pháttriển quan tâm để pháttriểnứngdụngdiđộng giao diện, trải nghiệm người dùng, hiệu năng, đa luồng, hỗ trợ dịch vụ bên thứ ba kiểm thử tự động Qua phân tích cho thấy khả tương thích tốt với thư viện native, khả tuỳ biến tảng Xamarin, nhiên kèm với việc tính đatảng không đảm bảo cao, dẫn đến việc kéo Xamarin gần trở thành khung pháttriểnứngdụng native khung pháttriểnđatảng Trong Ionic có khả tương thích với tảng hơn, phụ thuộc nhiều vào trình cắm cần lập trình viên có kinh nghiệm lại có tính đatảng cao hơn, tảng công nghệ phổ biến Để minh hoạ phân tích so sánh đưa trên, phạm vi luậnvăn xây dựngứngdụng nhỏ dựa theo tiêu chí so sánh Luậnvănđánhgiá khả pháttriển hai tảng Ionic Xamarin dựa vào cách tiếp cận số dòng mã nguồn cần sử dụng để triển khai tính tương tự dựa hai khung pháttriểntảng Bên cạnh đó, luậnvăn xây dựngứngdụng dựa vào việc xử lý chuỗi tính tốn liệu để so sánh hiệu ba cách tiếp cận việc pháttriểnứngdụngdiđộng Kết cho thấy số trường hợp hiệu Ionic Xamarin tốt, so sánh với ứngdụng xây dựng dựa tảng native Tổng kết lại, việc lựa chọn khung pháttriển phù hợp phụ thuộc vào yêu cầu ứngdụng khả lập trình viên Ionic phù hợp với ứngdụng khơng q phức tạp, tuỳ biến, không yêu cầu xử lý nhiều liệu, hiệu mức tương đối, sử dụng dịch vụ phổ biến lập trình viên có sẵn kinh nghiệm tảng công nghệ web, muốn tiết kiệm thời gian chi phí pháttriển Xamarin phù hợp với ứngdụng lớn hơn, cần tuỳ biến nhiều, hiệu tốt, muốn tiết kiệm phần chi phí thời gian pháttriểnứngdụng 47 TÀI LIỆU THAM KHẢO [1] Ionic team, Ionic docs, http://ionicframework.com/docs/ [2] Xamarin team, Xamarin docs, http://developer.xamarin.com/guides/cross-platfrom [3] Xamarin team, Architecture, https://developer.xamarin.com/guides/crossplatform/application_fundamentals/building_cross_platform_applications/part_2 architecture/ [4] Gartner, Market Share, “Mobile communination devices(2012)” [5] Charland A., Leroux B., “Mobile application development: web vs native,” in ACM 54, pp 49-53, 2011 [6] Goadrich M H., Rogers M.P, “Smart smartphone development: iOS versus Android”, in Proc SIGCSE 2011, pp 607-612, New York, 2011 [7] Anderson R.S., Gestwicki P., “Hello, worlds: an introduction to mobile application development for iOS and Android” J Comput Sci Coll 27, pp 32–33, 2011 [8] Newman B, “Are cross-platform mobile app frameworks right for your business?”, 2011, http://mashable.com/2011/03/21/cross-platform-mobile-frameworks/ [9] Behrens H., “Cross-Platform App Development for iPhone, Android & Co”, 2010, http://heikobehrens.net/2010/10/11/cross-platform-app-development-for-iphoneandroid-co-—-a-comparison-i-presented-at-mobiletechcon-2010/ [10] Cordova team, Cordova https://cordova.apache.org/docs/en/latest/guide/overview/ guide, [11] John Resig, “How javascript timer work”, https://johnresig.com/blog/howjavascript-timers-work/ [12] Tom Buyse, “End to end testing an Ionic application with appium and protractor”, http://tombuyse.com/end-to-end-testing-an-ionic-application-with-appium-andprotractor/ [13] Appium Team, Appium docs, http://appium.io/slate/en/master/?ruby - aboutappium [14] Microsoft Team, Thread Pools, https://msdn.microsoft.com/enus/library/windows/desktop/ms686760(v=vs.85).aspx [15] Xamarin Team, Linking native libraries, https://developer.xamarin.com/guides/ios/advanced_topics/native_interop/ 48 [16] Xamarin Team, Custom Renderer, https://developer.xamarin.com/guides/xamarinforms/application-fundamentals/custom-renderer/introduction/ [17] Estaun.net blog, Some thoughts after (almost) a year of real Xamarin use, http://www.estaun.net/blog/some-thoughts-after-almost-a-year-of-real-xamarin-use/ [18] Xamarin Team, Limitations, https://developer.xamarin.com/guides/ios/advanced_topics/limitations/ [19] Xamarin Team, Limitations, https://developer.xamarin.com/guides/android/advanced_topics/limitations/ [20] Herman Schoenfeld, Xamarin iOS memory leaks everywhere, https://stackoverflow.com/questions/25532870/xamarin-ios-memory-leakseverywhere [21] Nexgendesign.com, Xamarin troubles, http://www.nexgendesign.com/xamarintroubles [22] Siddharth, 15 important consideration for choosing a web dev framework, 2009, https://code.tutsplus.com/tutorials/15-important-considerations-for-choosing-a-webdev-framework net-8035 [23] Daniel Pfeiffer, Which cross-platform framework is right for me?, 2011, https://gowithfloat.com/2011/07/which-cross-platform-framework-is-right-for-me/ [24] Heitkăotter, H., Hanschke, S., Majchrzak, T.A.: Evaluating cross-platform development approaches for mobile applications In: Cordeiro, J., Krempels, K.-H (eds.) Web Information Systems and Technologies LNBIP, vol 140, pp 120–138 Springer, Heidelberg (2013) doi:10.1007/978-3-642-36608-6_8 49 CQNG HOA XA HQI CHU NGHiA DQc - Tlf - NAM phuc ==================== BAN NHAN XET PHAN BIEN LUANVANTHACSi HQ va ten can b :]i ··· ro i •tc c ['._, / ::: ·· • c.".ct'-1 •••• ff'Vt7t •••• /.en c/..,7' /7' ·j· 0.1A4 '1''; - ,/ xAc - / ciJA co QUAN coNG TAc (/ - CAN B