Sản phẩm

Universal gây khó cho nhà phát triển Windows 10

(PCWorldVN) Nền tảng Universal Windows Platform của Microsoft đem lại khả năng viết ứng dụng một lần chạy mọi nơi, nhưng đó là điều không hề đơn giản.

Microsoft đang nỗ lực tạo ra nền tảng hợp nhất “One Windows” cho mọi loại thiết bị, nhằm đưa Windows có mặt khắp nơi, từ PC cho đến các thiết bị di động, máy chơi game Xbox One, thiết bị tăng cường thực tế ảo Hololens, và cả thế giới Internet of Things. Một hệ sinh thái Windows 10 rộng lớn, cho phép viết ứng dụng “universal” một lần chạy trên mọi thiết bị bất kể là màn hình lớn, nhỏ hay không có màn hình thực sự hấp dẫn các nhà phát triển.  

Kỳ vọng của Microsoft là quá lớn, trong khi tầm nhìn của người khổng lồ phần mềm chưa phải là chuẩn mực. Thất bại của Silverlight là một minh chứng rõ nét. Vì vậy, thật khó biết liệu các nhà phát triển có dứt khoát chạy theo hướng đi mới nhất của Microsoft, viết ứng dụng “universal”, hay vẫn tiếp tục ở lại với ứng dụng desktop truyền thống. Khó lựa chọn, trong khi việc lập trình hiệu quả cho nhiều loại thiết bị chạy Windows lại không hề dễ. Xem ra, ý tưởng Universal trên Windows 10 đang làm khó các nhà phát triển.

Microsoft với tham vọng mới Universal

Microsoft phát hành Windows 8 vào cuối năm 2012 với kỳ vọng tạo ra bước ngoặt cho PC. Lấy màn hình cảm ứng làm trung tâm theo trào lưu di động, Microsoft đưa ra nền tảng mới với một giao diện cách tân, gọi là Windows Runtime, hay Metro (giao diện Metro về sau đổi thành Modern UI). Ý tưởng là tạo ra một giao diện thân thiện với máy tính bảng bên cạnh desktop truyền thống của Windows, giúp người dùng dễ dàng cài đặt và gỡ bỏ các ứng dụng thông qua Windows Store, giống như Apple đã làm rất thành công với App Store.

Thế nhưng, Windows 8 lại khiến người dùng bối rối vì đã tách biệt môi trường cho các ứng dụng Modern và desktop. Môi trường desktop truyền thống vẫn tỏ ra hữu ích cho công việc hơn nên hầu hết người dùng PC không muốn chuyển sang dùng các ứng dụng tải về từ Store theo phong cách mới hoàn toàn. Vì thế các nhà phát triển không thể hứng thú với Modern UI của Microsoft, và không lấy gì làm lạ khi Windows Store quá hiu quạnh so với các đối thủ App Store và Google Play.

Để khắc phục sai lầm của Windows 8, Microsoft phục hồi lại desktop trong Windows 10 như là môi trường duy nhất cho các ứng dụng, đưa trở lại menu Start đã được làm mới và không chiếm trọn màn hình. Động thái này cho thấy Microsoft tiếp tục nỗ lực thúc đẩy hình thức phân phối ứng dụng qua Store. Và trên hết, điều thực sự hấp dẫn là hứa hẹn của Microsoft về một triển vọng Windows Runtime tạo cơ hội cho các nhà phát triển viết ứng dụng chung cho các loại thiết bị, Microsoft gọi đó là nền tảng Windows dùng chung – Universal Windows Platform (UWP).

Với Windows 8, Microsoft đã giới thiệu Universal Apps cho phép chia sẻ mã chương trình giữa Windows 8, Windows Phone, và các nền tảng có khả năng khác nữa. UWP được phát triển ở mức cao hơn. Nền tảng mới này cho phép bạn chạy cùng đoạn mã đã biên dịch trên các thiết bị khác nhau, nghĩa là ứng dụng UWP được thiết kế cho nhiều loại thiết bị. Bạn viết ứng dụng một lần, đưa lên Windows Store và sẽ được tải về để chạy trên bất cứ thiết bị nào dùng nền tảng Windows 10.

Nghe ra có vẻ hấp dẫn, nhưng liệu tham vọng mới của Microsoft có lôi kéo được các nhà phát triển?

Ứng dụng Universal viết mội lần chạy mọi nơi.

Tầm nhìn của Microsoft: một Store cho tất cả

Động lực khiến Microsoft cố gắng kéo các nhà phát triển rời bỏ môi trường desktop để đến với UWP chính là Windows Store. Mô hình phân phối ứng dụng qua cửa hàng trực tuyến những năm qua đã chinh phục người dùng di động, và Microsoft không muốn chỉ phục vụ cho người dùng doanh nghiệp với nền tảng cũ. Xét trên quan điểm của nhà phát triển, các ứng dụng Store đem đến những lợi ích đáng kể:

Khả năng quản lý. Các ứng dụng desktop của Windows thường được triển khai bằng cách chạy setup và Windows Installer. Quá trình cài đặt phân bổ các tập tin vào các thư mục khác nhau và làm thay đổi hệ thống, chẳng hạn việc cài đặt và đăng ký các thư viện có thể ảnh hưởng tới các ứng dụng khác. Trong khi đó, các ứng dụng Store được triển khai bằng cách sử dụng các gói (package) với phần mở rộng APPX, nén trong đó các tập tin ứng dụng và một bản liệt kê XML. Các ứng dụng này được tách riêng với nhau và với hệ điều hành, và việc cài đặt và gỡ bỏ đều do Windows xử lý. Người dùng có lợi là dễ tìm, cài đặt và gỡ bỏ ứng dụng. Doanh nghiệp cũng sẽ có thể tạo ra một khu vực riêng trên Windows Store, cũng như sử dụng một cổng Store dựa trên Web, để triển khai các ứng dụng cho những người dùng cụ thể, đăng nhập với Azure Active Directory. Các ứng dụng cũng có thể được triển khai qua System Center, InTune dựa trên đám mây, hoặc các hệ thống quản lý thiết bị di động (MDM) khác.

Bảo mật.Từng ứng dụng Store được tách riêng rẽ và đều được ký, hơn nữa còn phải qua khâu duyệt kỹ lưỡng trước khi được chấp nhận vào Store nên an toàn hơn ứng dụng desktop. Cũng cần lưu ý là việc tách riêng ứng dụng Store không phải là tuyệt đối. Nguyên tắc là mỗi ứng dụng chạy trong một hộp cát (sanbox) để tách riêng tiến trình của các ứng dụng, nhưng trong những trường hợp hiếm hoi cần thiết, một ứng dụng vẫn có thể cho phép ứng dụng khác truy cập vào tài nguyên của mình và chạy cùng tiến trình với nhau. Về cơ bản, một khi ứng dụng UWP trở nên phổ biến tới mức hầu hết người dùng Windows “quên” ứng dụng desktop thì hệ điều hành sẽ trở nên an toàn hơn.

Hỗ trợ di động với màn hình cảm ứng. Framework giao diện người dùng (UI) cho UWP theo mặc định thân thiện với màn hình cảm ứng. Điều khiển hỗ trợ các cử chỉ tương tác như nhấn và giữ, vuốt, co và duỗi để phóng to/thu nhỏ là thuận tiện. Về nguyên tắc, một ứng dụng UWP cần được thiết kế để chạy trên máy tính bảng và trong một số trường hợp chạy trên điện thoại, cũng như trên PC với bàn phím và chuột.

Khả năng tìm thấy. Ứng dụng trong Store có thể được tìm kiếm bởi người dùng. Trong Windows 10, Microsoft bao gồm Store trong các kết quả tìm kiếm của trợ lý ảo Cortana hoặc Windows Search với ô tìm kiếm nằm ngay trên thanh tác vụ taskbar. Một lợi ích khác là người dùng có thể mua ứng dụng một lần rồi cài đặt và chạy trên nhiều thiết bị. Tối đa 10 thiết bị cho mỗi tài khoản (cũng có thể nhà phát triển cho phép số thiết bị ít hơn), không phân biệt kiểu thiết bị nào, miễn là dùng nền tảng UWP.

So sánh ứng dụng Calculator mới và cũ cho Windows cho thấy ứng dụng UWP (bên trái) lớn hơn cần thiết đối với người dùng PC thông thường.

Bất lợi của Universal Windows Platform

Bên cạnh những ưu điểm, UWP còn có những nhược điểm. Ứng dụng desktop có thể chạy trên nhiều phiên bản Windows, trong khi đó các ứng dụng UWP chỉ chạy trên Windows 10. Vì vậy, dù Microsoft đang cho phép người dùng Windows 7/8.1 có bản quyền nâng cấp miễn phí lên Windows 10, nhưng không phải ai cũng hào hứng nâng cấp như mong muốn của Microsoft; chưa kể là một số PC cũ có phần cứng không thích hợp với Windows 10. Với các doanh nghiệp đã chuẩn hóa mọi thứ trên Windows 7 thì họ sẽ chưa vội chuyển lên Windows 10, và chính sách nâng cấp miễn phí của Microsoft không áp dụng cho bản Enterprise.

Tính năng chính của ứng dụng UWP là hỗ trợ Windows Mobile, nhưng dường như Microsoft đang lưỡng lự với nền tảng dành cho điện thoại của mình. Điều đó có thể thấy dựa trên động thái mới nhất của Microsoft: CEO Satya Nadella tuyên bố sẽ sa thải thêm 7.800 nhân sự mà phần lớn là thuộc bộ phận thiết bị di động; công ty ghi giảm 7,6 tỷ USD giá trị tài sản có được từ thương vụ Nokia; và sự ra đi của cựu CEO Nokia Stephen Elop.

Trên Windows 10, khả năng của ứng dụng UWP khác với ứng dụng desktop mặc dù cũng chạy trong cửa sổ có thể thay đổi kích thước. Việc chạy tách riêng từng ứng dụng giúp bảo mật và quản lý tốt hơn, nhưng gây bất tiện cho các nhà phát triển, bởi nhiều hàm Windows API thông thường không đáp ứng yêu cầu ứng dụng chạy tách riêng.

Một khác biệt nữa, ứng dụng desktop có hai trạng thái cơ bản, chạy hay không chạy. Các ứng dụng Store và UWP còn có thêm trạng thái tạm dừng (suspend) mà có hiệu lực ngay khi người dùng rời khỏi ứng dụng, hoặc nếu PC chuyển sang chế độ năng lượng thấp. Ngay trước khi tạm dừng, Windows báo cho ứng dụng lưu dữ liệu và trạng thái của nó và giải phóng tài nguyên ứng dụng đang chiếm dụng. Quá trình này mất khoảng 5 giây (10 giây trên điện thoại), hoặc Windows sẽ cho rằng ứng dụng bị lỗi.

Trạng thái tiết kiệm là rất quan trọng bởi Windows có thể chấm dứt hoạt động của một ứng dụng tạm dừng bất cứ lúc nào – chẳng hạn gặp khi tài nguyên bộ nhớ còn ít. Khi người dùng quay lại với ứng dụng tạm dừng, Windows sẽ khôi phục lại trạng thái của ứng dụng, vì vậy người dùng có cảm tưởng như ứng dụng vẫn đang chạy. Các nhà phát triển đánh giá cao nguyên lý này của ứng dụng UWP. Với ứng dụng desktop, tiến trình tiết kiệm và khôi phục trạng thái có thể dẫn đến việc chuyển đổi ứng dụng ít trơn tru hơn.

Giao diện người dùng cảm ứng của ứng dụng UWP cũng có điểm bất lợi là không “thuận” với phần lớn người dùng PC đang sử dụng chuột và bàn phím. Chẳng hạn, so sánh ứng dụng Calculator trên Windows 10 với ứng dụng Calc desktop cũ, phiên bản mới choán chỗ hơn với những chữ số lớn và đậm hơn trước; cách hiển thị này hợp với điều khiển chạm nhưng chẳng ích lợi gì với việc nhập liệu bằng chuột và bàn phím. Nhìn chung, so với việc tạo ra ứng dụng desktop, các nhà phát triển sẽ tốn công hơn cho ứng dụng Windows Runtime để có được tính năng phong phú và giao diện thân thiện với màn hình cảm ứng.

Thực tế là Windows 10 lấy desktop làm trung tâm, nghĩa là nhà phát triển có thể tiếp tục viết các ứng dụng Win32 (hay Win64) như trước đây, và có thể gọi tới nhiều Windows Runtime API từ các ứng dụng desktop, cho phép hỗ trợ các tính năng như báo tin nhắn trên Windows 10.

Microsoft cũng đang phát triển một dự án cho phép các ứng dụng desktop Win32 được triển khai cho thiết bị từ Windows Store. Mang tên Project Centennial, dự án này dựa trên công nghệ App-V hiện có của Microsoft để tạo ra một môi trường ảo, qua đó cung cấp cho nhiều ứng dụng desktop khả năng chạy tách riêng như ứng dụng UWP, bao gồm cả việc cài đặt và gỡ bỏ. Công ty đã giới thiệu bản xem trước của Project Centennial tại Hội nghị Build trong tháng 4 vừa qua, nhưng vẫn chưa cho biết ngày chính thức ra mắt.

Khi Windows 8 được phát hành, dường như Microsoft bỏ rơi các framework ứng dụng desktop để tập trung toàn bộ vào Windows Runtime. Với Windows 10 thì không phải vậy. Đặc biệt, Windows Presentation Foundation (WPF) – lựa chọn ưu tiên cho các nhà phát triển .Net tạo ra các ứng dụng desktop, đã được nâng cấp với cải tiến hỗ trợ màn hình cảm ứng và các cửa sổ con trong suốt. Các công cụ thiết kế cũng được xây dựng lại. Công cụ thiết kế trực quan Blend được nâng cấp, hoàn tất tính năng IntelliSense trong trình soạn thảo XAML (ngôn ngữ trình diễn sử dụng bởi cả WPF và UWP), và gỡ lỗi chương trình cơ bản. Ngoài ra còn có các công cụ chẩn đoán mới với WPF trong Visual Studio. Thậm chí framework Windows Forms cũng được cập nhật một chút, hỗ trợ High DPI tốt hơn.

Có cả tin tốt lẫn tin xấu về việc viết ứng dụng desktop bằng C++ với MFC (Microsoft Foundation Classes) hoặc các framework Win32 /Win64 khác. Tin tốt: khả năng tương thích ứng dụng về phía desktop là tốt; còn tin xấu là MFC không hề được cải tiến.

Nhìn chung, triển vọng xây dựng các ứng dụng desktop trong kỷ nguyên Windows 10 sáng sủa hơn so với Windows 8. Tuy nhiên, ứng dụng UWP lại có nhiều ưu điểm khiến các nhà phát triển ứng dụng mới khó có thể bỏ qua. Dường như ý tưởng “One Windows” của Microsoft đang làm khó các nhà phát triển trong việc lựa chọn giữa hai con đường: tiếp tục theo đuổi desktop truyền thống hay xây dựng các ứng dụng UWP mới?

Word Mobile là một ứng dụng UWP có chất lượng cao của Microsoft, cho thấy tiềm năng của nền tảng mới.

Phát triển ứng dụng Universal cho Windows

Nền tảng UWP đã được cải thiện đáng kể so với trước. Thêm nữa, Microsoft đã tích hợp nhiều ứng dụng thiết thực cho Windows 10 như: Mail, Calendar, Photos và Groove. Công ty cũng đã phát hành phiên bản Office Mobile dành riêng cho máy tính bảng, gồm Word, Excel, PowerPoint, và OneNote. Phải ghi nhận là Microsoft đã nỗ lực tập trung vào việc cải thiện hiệu suất cho nền tảng mới.

Cũng như với Windows 8, các tùy chọn ngôn ngữ cho ứng dụng UWP bao gồm C++ với XAML hoặc DirectX; C# hoặc Visual Basic với XAML; JavaScript và HTML sử dụng framework WinJS của Microsoft.

Các ứng dụng sử dụng ngôn ngữ .Net khởi chạy nhanh hơn trong Windows 10, một phần nhờ phát triển của Microsoft với .Net Native, mà biên dịch các ứng dụng viết bằng C# và Visual Basic thành mã gốc, bao gồm cả biên dịch tĩnh chương trình chạy trên .Net. Microsoft tuyên bố rằng các ứng dụng khởi chạy nhanh hơn tới 60% và bộ nhớ chiếm dụng giảm khoảng 15 – 20%.

Ngoài ra còn có thay đổi đáng chú ý là hỗ trợ giao diện người dùng thích ứng (Adaptive UI), cho phép các ứng dụng điều chỉnh giao diện người dùng theo kích thước màn hình hiện tại. Những thay đổi khác đáng quan tâm gồm: khả năng nạp theo yêu cầu các phần của giao diện người dùng, ảo hóa để cải thiện hiệu suất, quyền chuyển đổi phương tiện mới, Map được cập nhật, hỗ trợ liên lạc giữa các ứng dụng cho phép bạn khởi chạy ứng dụng khác để có được kết quả từ ứng dụng đó, cải thiện nhận dạng giọng nói, và tiêu chuẩn duyệt web mới dựa trên trình duyệt Edge. Hệ thống AllJoyn mã nguồn mở được hỗ trợ cho thiết bị liên lạc trong các ứng dụng IoT.

DirectX 12, phiên bản mới nhất của framework của Microsoft để lập trình tăng tốc đồ họa phần cứng, được tạo sẵn cho XAML qua một SoftwareBitmapSource mới và một API Transform32.

Mặc dù là “One Windows”, các thiết bị có những khả năng khác nhau, và Microsoft có một khái niệm về họ thiết bị để cho phép nhà phát triển viết các ứng dụng hỗ trợ đa thiết bị. Chẳng hạn các họ thiết bị Desktop, Mobile, và Xbox thừa hưởng nhân UWP API và thêm các API cho từng thiết bị cụ thể. Khi chạy, bạn có thể kiểm tra sự tồn tại của API trên thiết bị hiện tại bằng việc gọi tới những phương thức như IsTypePresent, IsEventPresent, IsMethodPresent, và IsPropertyPresent. Cùng với Adaptive UI, điều này tạo cơ sở dẫn tới thành công cho việc tạo ra các ứng dụng chạy trên nhiều loại thiết bị.

Windows 10 tiến thoái lưỡng nan

Nếu Windows 10 thực sự cất cánh như kỳ vọng của Microsoft, với số lượng lớn nâng cấp từ Windows 7 và 8 cùng với sự quan tâm trở lại của thị trường tới PC và máy tính bảng chạy Windows, các nhà phát triển sẽ thấy cơ hội lớn từ lượng người dùng đông đảo với Windows Store. Windows cũng nhờ thế sẽ trở nên an toàn và dễ quản lý hơn.

Nhưng đó là nếu. Thất bại của Microsoft với Silverlight có lẽ sẽ khiến các nhà phát triển cảnh giác với hướng đi mới của Microsoft, nghĩa là việc viết ứng dụng desktop truyền thống vẫn là lựa chọn an toàn.

Universal Windows Platform là sự cải tiến vượt trội Modern trong Windows 8, và Windows Store đã tích hợp cả ứng dụng desktop, nhưng thách thức với Microsoft là làm sao để người dùng Windows sớm chuyển sang nền tảng mới của mình. Điều đó quả là không hề dễ dàng.

PC World VN, 09/2015

PCWorld

công cụ lập trình, nhà phát triển, Universal, Universal Windows Platform, Windows 10


© 2021 FAP
  2,365,766       1/788