Taị hội nghị BUILD diễn ra tại San Francisco tháng 4 vừa rồi, Microsoft đã công bố Windows Phone 8.1 dành cho developer. Đây là phiên bản đã được người dùng mong chờ từ lâu vì nó chứa đựng khá nhiều tính năng mới còn thiếu của Windows Phone so với iOS, Android. Vậy với chúng ta: các developer phiên bản này có gì hot trong việc phát triển ứng dụng? Trong bài viết này chúng ta sẽ cùng tổng hợp lại các cách thức phát triển ứng dụng – lập trình Windows Phone 8.1 mà các bạn có thể sẽ sử dụng trong thời gian tới khi viết các ứng dụng Windows Phone của riêng mình.
Windows Phone Store App – Ứng dụng chạy trên cả Phone và Tablet, PC…
Trước đây không dễ để viết các ứng dụng share code cho cả Windows Phone và Windows 8 vì sự khác biệt giữa core của 2 nền tảng. Tuy nhiên Windows Phone 8.1 ra mắt đã thay đổi mọi thứ vì nó sử dụng chung core với Windows 8 nên hầu hết các tính năng và API của Windows 8 thì Windows Phone 8.1 đều có thể sử dụng được.
Để thực hiện điều này, Microsoft đã ra mắt bộ SDK mới (Update 2 RC) cho Visual Studio 2013 bổ sung thêm một loại ứng dụng mới tên là Windows Phone Store app: về cơ bản chúng giống như Windows Store app nhưng là cho Windows Phone. Cùng với đó Visual Studio 2013 còn bổ sung thêm một project template mới tên là Universal Windows apps giúp cho việc tạo các ứng dụng chạy trên cả 2 nền tảng Windows Phone 8.1 và Win8.1 trở nên dễ dàng hơn. Template này tạo ra một solution gồm 2 project cho 2 nền tảng (Windows Phone 8.1, Win8.1) + 1 shared project: tất cả code trong project này sẽ tự động được share với các project khác bằng cách sử dụng linked files. Nghĩa là các file trong shared project được lưu trữ vật lý ở cùng một chỗ nhưng được thêm vào những project khác như những link (added as link). Cách thức này thực ra không mới, tôi đã tiếp xúc với nó từ khi thực hiện những dự án trên Silverlight RIA (Rich Internet Application) khi cần share code giữa client và server nhưng cách thức này cho đến hiện tại là cách hiệu quả nhất vì nó giúp share nhiều code nhất giữa Windows Store app và Windows Phone app. Sự khác biệt trong template này là ở chỗ nếu trước đây chúng ta phải dùng khá nhiều thủ thuật như sử dụng conditional compilation symbols VD: #IF SILVERLIGHT … thì giờ đây mọi thứ trở nên dễ dàng hơn vì core của 2 nền tảng là như nhau. Kết quả là chúng ta có thể viết logic của ứng dụng chỉ một lần và sau đó chỉ cần đầu tư để tạo ra 2 giao diện khác nhau cho người dùng Windows Phone và người dùng trên Tablet/PC mà thôi. Một ưu điểm khác là trong tương lai Universal Windows app cũng có thể chạy trên XBox One, điều này mang lại cho developer khả năng viết ứng dụng một lần là có thể chạy trên tất cả các nền tảng từ PC -> Tablet -> Phone -> TV
Một sự thay đổi lớn khác đó là Windows Phone Store app giờ đây hoàn toàn dựa trên Windows Runtime: Chúng không dùng managed XAML dựa trên Silverlightnhư trên Windows Phone 8 nữa mà dùng native XAML giúp cho performance của ứng dụng tốt hơn rất nhiều. Tuy nhiên, chính bởi sự khác nhau khá lớn giữa 2 công nghệ này nên Microsoft không cung cấp cho chúng ta công cụ để nâng cấp tự động các ứng dụng Windows Phone 8 đã có lên Windows Phone 8.1. Một số lý do chính Microsoft đưa ra là:
- Windows Phone Store app chỉ hỗ trợ các API Windows Runtime mới, kết quả là tất cả các API Silverlight cũ như background task, tiles, network interaction… sẽ không hoạt động được.
- Native XAML dựa trên một tập các namespace và control khác so với Silverlight: rất nhiều control như LongListSelector, Panorama không tồn tại và phải được thay thế bởi các control khác trên Native XAML
- Vòng đời ứng dụng cũng như navigation framework trên Windows Runtime cũng khác xa trên Silverlight.
- Windows Phone Store app không còn dựa trên .NET framework nên tất cả các third party library dựa trên .NET sẽ không hoạt động được. Chúng ta bắt buộc phải sử dụng phiên bản cho Windows Runtime của các library này (Rất may là chúng ta lại tận dụng được rất nhiều library đang sử dụng cho Windows Store app)
Đến đây chắc bạn tự hỏi nếu tôi đã phát triển các ứng dụng trên Windows Phone 8 thì chỉ còn cách viết lại trên Windows Phone 8.1 sao???
Sự thật thì không phải vậy vì Microsoft vẫn cập nhật Silverlight runtime với các API 8.1 mới và đổi tên nó thành Windows Phone Silverlight 8.1 app. Có nghĩa là bạn vẫn có thể cập nhật tự động ứng dụng Windows Phone 8 lên 8.1 chỉ với một cú click chuột phải vào Windows Phone 8 project và chọn Upgrage to Windows Phone 8.1. Bằng cách này chúng ta vẫn có thể sử dụng hầu hết các API mới (gồm cả các API của Windows Runtime như background task, contract…) nhưng chúng ta phải đánh đổi là ứng dụng sẽ rất khó share code với Windows Store app và không tận dụng được những cải tiến về hiệu năng được cung cấp bởi Windows Runtime.
Một ưu điểm nữa của Windows Phone 8.1 là chính bởi sử dụng core Windows Runtime nên ngoài XAML + C#… để lập trình Windows Phone 8.1 thì chúng ta còn có thể dùng WinJS để lập trình Windows Phone 8.1 tương tự như lập trình Windows Store app: dùng javascript là ngôn ngữ lập trình thay thế C#, VB.NET, C++ và sử dụng HTML là ngôn ngữ thiết kế thay XAML.
Vậy tôi nên chọn cách thức nào để lập trình Windows Phone 8.1 app bây giờ?
Đọc đến đây bạn đã biết có 2 framework cùng tồn tại lúc này và bạn không biết chọn cái nào để phát triển ứng dụng Windows Phone 8.1? Để trả lời câu hỏi này thì còn tùy thuộc vào bạn phát triển ứng dụng mới hay nâng cấp một ứng dụng Windows Phone 8 đã có.
- Nếu bạn phát triển ứng dụng mới thì lời khuyên của tôi là nên sử dụng Windows Phone Store app, mặc dù sẽ mất một khoảng thời gian để làm quen và nắm được sự khác nhau so với Windows Phone Silverlight 8.1 app như: lifecycle, navigation, background… nhưng lợi ích mà Windows Phone Store app mang lại rất lớn: performance, share code với Windows 8.1. Ngoài ra với các bước đi của Microsoft như thế này, chắc chắn sau này Microsoft sẽ chỉ hỗ trợ Windows Runtime trên Windows Phone Store app, Windows Phone Silverlight app sẽ được cho về hưu vào một ngày không xa (Điều này cũng từng xảy ra khi Microsoft thay thế core của WP7 bằng WP8 hay khai tử công nghệ Silverlight sớm)
- Trường hợp còn lại nếu bạn đã có ứng dụng Windows Phone 8 rồi và bạn chỉ muốn dùng một vài tính năng mới của Windows Phone 8.1 mà không muốn tốn nhiều công sức để chuyển cả ứng dụng lên Windows Phone Store App thì lời khuyên ở đây là nên tiếp tục dùng Silverlight framework. Với cách này thì bạn sẽ không phải viết lại ứng dụng từ đầu mà vẫn tận dụng được các tính năng mới của Windows Phone 8.1.
Ngoài ra do giới hạn về thời gian và nhân lực, Microsoft chưa thực sự hoàn thiện 2 framework này (vẫn đang ở giai đoạn RC) thế nên cả 2 framework đều đang thiếu một số tính năng quan trọng của nhau. Bạn cũng cần phải xem xét để quyết định lựa chọn framework nào.
Với Windows Phone Store app, bạn sẽ chưa được phép:
- Sử dụng API để thao tác với Clipboard
- Viết ứng dụng như Lock screen provider
- Viết ứng dụng như Ringtone provider
- Sử dụng Alarm và Reminder
- Phát triển Lens App (ứng dụng chụp ảnh có thể tích hợp với ứng dụng camera của phone)
- Giữ ứng dụng vẫn chạy sau khi lock screen
- Sử dụng Continuous Background Tracking API
- Sử dụng VOIP API
- Sử dụng CameraCaptureTask, chooser chụp ảnh và import vào ứng dụng của bạn
Với Windows Phone Silverlight 8.1 app, bạn sẽ chưa được phép:
- Sử dụng API cũ để quản lý background audio. Bạn sẽ phải chuyển sang sử dụng các API mới của Windows Runtime.
- Sử dụng XAML framework mới có khả năng hỗ trợ đầy đủ thiết bị có kích thước màn hình khác nhau
- Sử dụng các XAML control mới như Hub, GridView
- Sử dụng API mới để chỉnh sửa video
- Sử dụng các công cụ mới của VS để profiling và test ứng dụng
Như vậy việc lựa chọn framework để phát triển ứng dụng Windows Phone 8.1 ngoài dựa trên loại ứng dụng (mới hoặc nâng cấp) còn phụ thuộc vào tính năng của ứng dụng có gì. VD: Nếu bạn phát triển ứng dụng Lens App hay ứng dụng quản lý ảnh hoạt động như lock screen provider, bạn bắt buộc phải sử dụng Windows Phone Silverlight 8.1 app.
Trong bài viết này tôi đã giới thiệu với các bạn 2 cách để phát triển ứng dụng Windows Phone 8.1. Hy vọng với những thông tin mang lại các bạn có thể quyết định được sẽ lựa chọn framework nào để phát triển ứng dụng cho mình. Trong bài viết sau chúng ta sẽ đi sâu hơn vào những tính năng lập trình Windows Phone 8.1 mới dành cho Developer.
Happy sharing. Stay tuned.
tungnt185 says
Thanks home designs ideas,
I’ll try my best to create awesome posts about tech.
Stay tuned with my blog.
Regards