Những tính năng này bao gồm màn hình cảm ứng đa điểm , giao diện người dùng đẹp UI và Microsoft Windows Phone cũng được thiết kế vớigiao diện mới hiện đại có tên là Metro , Microsoft Win
Trang 1LỜI MỞ ĐẦU
Ngày nay, cuộc sống luôn rất năng động và biến động không ngừng đòi hỏichúng ta cần phải biết tận dụng từng phút từng giây trôi qua để hoàn thành các công việc đề ra nhất là đối với những người bận rộn Nhưng đôi khi, do một lý
do nào đó hay ta có quá nhiều việc cần giải quyết làm chúng ta không thể xử lý một cách trọn vẹn, khoa học Các công việc trùng lặp làm ta cảm thấy mệt mỏi
và xử lý không hiệu quả Vì vậy, việc tổ chức thời gian, ghi lại các thông tin mộtcách khoa học là điều cực kỳ cần thiết trong cuộc sống hiện nay
Trong giai đoạn phát triển hiện nay, các điện thoại smartphone trở nên hết sức phổ biến, nền tảng Windows Phone là một trong số đó Mặc dù còn chiếm thị phần nhỏ nhưng theo các đánh giá trên thế giới thì Windows Phone là nền tảng phát triển với tốc độ nhanh nhất với thành công từ hàng loạt các dòng điện thoại Smartphone Theo đó, trong quý cuối cùng năm 2013, Windows Phone đã nắm giữ 3,6% thị phần hệ điều hành smartphone, đạt mức tăng trưởng 150% so với cùng kỳ năm 2012, đánh bại mức tăng trưởng 51,3% của hệ điều hành phổ biến nhất hiện nay là Android Và Windows Phone đã vượt qua BlackBerry để
tự tin vươn lên vị trí thứ 3 trên thị trường hệ điều hành smartphone Với tốc độ phát triển đó hứa hẹn trong tương lai Windows Phone sẽ là một nền tảng di động được rất nhiều người dùng và phổ biến trên thế giới
Xuất phát từ những điều trên em đã chọn đồ án : “Xây dựng ứng dụng nhật
ký, đặt lịch công tác trên Windows Phone” Đồ án đã xây dựng được một ứng dụng cần thiết cho người dùng
Quá trình làm đồ án em đã được thầy tận tình chỉ dạy và giúp đỡ nhiều,
song trong thời gian làm đồ án chắc chắn còn thiếu sót, rất mong thầy cùng các bạn đóng góp ý kiến để đồ án hoàn thành tốt hơn
Trang 2LỜI MỞ ĐẦU 1
MỤC LỤC 2
Chương 1 : Cơ sở lý thuyết 3
1 Tổng quan về Windows Phone 3
2 Thông số kỹ thuật Windows Phone 4
3 Giới thiệu về Windows Phone Application Platform 8
4 Đôi nét về Web Service, WCF 15
Chương 2 : Lập trình trên Windows Phone 22
1 Các thành phần cơ bản trong WP 22
1.1 Ứng dụng đầu tiên với WP7 22
1.2 Sự điều hướng trong WP7 29
1.3 Giới thiệu về Touch Event 30
1.4 Bitmap hay Textures trên WP7 31
1.5 Đôi nét về kiến trúc ứng dụng 33
2 Sự chuyển trang (Basic Navigation) 34
3 Isolated Storage 39
4 Ngôn ngữ XAML 40
5 Kế thừa property: 42
Chương 3 : Chương trình ứng dụng 43
1 Bài toán : Xây dựng ứng dụng nhật ký,đặt lịch công tác trên Windows Phone 43
2 Yêu cầu về chức năng bài toán 44
3 Thiết kế các thành phần ứng dụng 45
4 Đặt lịch công tác 54
5 Cơ sở dữ liệu: 55
6 Phần đồng bộ cở sở liệu với Server 59
7 Thiết kế giao diện chương trình : 64
KẾT LUẬN 69
Trang 3Chương 1
CƠ SỞ LÝ THUYẾT
1 Tổng quan về Windows Phone
Microsoft Windows Phone là một chiếc điện thoại tuyệt vời của người tiêu dùng vì nó có tất cả các tính năng mà người dung quen thuộc với điện thoại thông minh iPhone của Apple và Android như Motorola Droid và HTC
Incredible Những tính năng này bao gồm màn hình cảm ứng đa điểm , giao diện người dùng đẹp (UI) và Microsoft Windows Phone cũng được thiết kế vớigiao diện mới hiện đại có tên là Metro , Microsoft Windows Phone cũng hỗ dịch vụ mạng xã hội thong dung như Facebook , nó cũng hỗ trợ cho các tài
khoản e -mail phổ biến như Yahoo , Hotmail, Google , AOL, và , nếu bạn là mộtdoanh nghiệp thì với Microsoft Exchange một phiên bản của Microsoft Office
mà bạn có thể sử dụng đọc, chỉnh sửa , lưu, và đồng bộ các tập tin Word, bảng tính Excel, và các định dạng văn phòng khác , làm cho nó trở thành một chiếc điện thoại tuyệt vời cho những người sử dụng Office tại nhà hoặc tại văn phòng Windows Phone cũng có thể tích hợp với Xbox LIVE,giúp cho nó là một lựa chọn tuyệt vời cho các game thủ
Microsoft Windows Phone sử dụng phần mềm Zune để đồng bộ hóa các ứng dụng được cài đặt , hình ảnh , âm nhạc,và sao lưu và cập nhật hệ điều hành flash Với một nhà phát triển , bạn cũng sẽ sử dụng Zune kết hợp với Visual Studio để gỡ lỗi các ứng dụng của bạn trên một thiết bị thật
Microsoft cũng giới thiệu các khái niệm về một trung tâm với các điện thoại Windows: một trung tâm nơi người dùng có thể lưu trữ tất cả các địa chỉ liên lạc của họ và kết nối mạng xã hội ; một trung tâm âm nhạc nơi người tiêu dùng có thể nghe , tải về, và mua nhạc ; và một Trung tâm ứng dụng, còn được
Trang 4gọi là Marketplace , đó là nơi mà bạn rất quan tâm vì bạn đưa lên các ứng dụng
mà bạn tạo ra
Một trong những điều tuyệt vời về Windows Phone là Microsoft áp đặt các chi tiết kỹ thuật phần cứng trên các nhà sản xuất điện thoại , làm cho nó dễ dàng cho bạn để phát triển một ứng dụng mà không lo lắng về cách viết mã đặc biệt cho các thiết bị cụ thể Đối với bất kỳ phiên bản tương lai của điện thoại, bạn được đảm bảo rằng các ứng dụng bạn viết hôm nay sẽ làm việc không phụ thuộc vào thương hiệu của điện thoại
Đương nhiên, ta muốn biết những gì ngôn ngữ mà bạn sẽ cần phải nắm vững cho công việc của bạn ,ta cần thành thạo các ngôn ngữ mà cần thiết cho công việc lập trình của bạn.Ngôn ngữ thong dụng là C # và Visual Basic (VB)
Đối với một phát triển ứng dụng , bạn có hai lựa chọn: Silverlight hoặc XNA, hoặc cả 2
Trước tiên, chúng ta cần xem xét kỹ hơn các tính năng phần cứng mà bạn cần biết trên một điện thoại Windows
2 Thông số kỹ thuật Windows Phone
Trước hết chúng ta cần biết có những gì trong thông số kỹ thuật phần cứng của 1 chiếc điện thoại Microsoft Windows điều này sẽ giúp chúng ta chuẩn bị cho các yêu cầu của dự án lập trình ứng dụng điện thoại Microsoft Windows Phone
Bảng ở dưới liệt kê các phần cứng tối thiểu yêu cầu bất kỳ nhà sản xuất Windows Phone phải đáp ứng và cũng bao gồm các đề xuất họ có thể tác động đến các nhà phát triển như bạn như thế nào
Trang 5Tính năng phần cứng Mô tả chi tiết
Must display at
WVGA (800 x 480)
WP7 được thiết kế để hiển thị tốt các hình ảnh có chất lượng cao với mật độ pixel lớn Trên WP7 chúng ta có thể thấy các dòng chữ được hiển thị với độ mịn cao Thế nhưng để hiển thị càng nhiều pixel ảnh ta sẽ phải hao tổn bộ nhớ ram cũng như hao tốn pin hơn WP7 biết sẽ làm cho màn hình hiển thị ảnh thích hợp nhất với màn hình và pin củacellphone Vì vậy bạn có thể mở những file ảnh lớn
mà không lo về chất lượng hiển thị cũng như sử ảnh hưởng tới thời lượng pin
Four-point
multi-touch capable
Các thiết bị di động đời cũ có màn hinh cảm ứng thì thường là cảm ứng điện trở dựa vào lực tác động lên màn hình Còn các thế hệ cellphone chạy WP7 thì thường dùng màn hình cảm ứng điện dung, nó hoạt động dựa trên các electron âm trên đầu ngón tay của người sử dụng Vì vậy màn hình điện dung dễ dàng hỗ trợ đa chạm trên màn hình từ
đó đem lại cho người dùng trải nghiệm hoàn toàn mới trên thiết bị di động
Điều này có nghĩa điện thoại sẽ có một đơn vị xử
lý đồ họa (GPU), cho phép nhiệm vụ đồ họa mạnh
Trang 6acceleration thoại Điều này sẽ giúp bạn tạo ra các ứng dụng rất
trơn tru và đáp ứng và trò chơi Điều này cũng có nghĩa là trò chơi 3D là
có thể
GPS
Hầu hết các thiết bị chạy WP7 đều có hệ thống GPS nhằm giúp cho người dùng có thể xác định vị trí và tìm đường thông qua phần mềm hỗ trợ như GoogleMaps hoặc BingMaps Có thể nói tính năng này dường như không thể thiếu trên các thiết
bị di động thông minh hiện nay
Accelerometer
Bộ gia tốc là một thiết bị phần cứng giúp hệ điều hành nhận biết độ rung,lắc hay hướng di chuyển của thiết bị Từ thiết bị này xuất hiện rất nhiều chức năng được yêu thích như lắc đổi bài nhạc, chơi game đua xe trên iphone
Trang 7 Chúng ta không thể can thiệp vào camera khiđang quay nếu không được hỗ trợ từ phía phần cứng camera Tức ở đây bạn không thể chèn hình lên camera đang hoạt động được.Thứ 2: chúng ta không thể chụp một bức ảnh mà không có sự đồng ý từ phía người dùng
và truy xuất nhanh Trên WP7 thì chúng ta có ít nhất 256MB bộ nhớ RAM và ít nhất 8GB ổ dữ liệu Với bộ nhớ máy như trên nên WP7 sẽ tối ưu lại tất cả phần mềm sao cho phần mềm chạy mượt
mà nhất có thể trên phần cứng bị giới hạn như vậy
Trang 83 Giới thiệu về Windows Phone Application Platform
Microsoft không phát minh ra bất kỳ ngôn ngữ mới hoặc các khuôn khổ cho nền tảng ứng dụng Windows Phone Điều này có nghĩa rằng chúng ta có thể sử dụng chương trình như Visual Studio với các ngôn ngữ thông dụng (C # và VB với NET Framework ) để tạo ra các ứng dụng mong muốn
Một lớp cơ sở thư viện phổ biến mà tất cả những gì NET cung cấp là
Microsoft.NET nó bao gồm các hỗ trợ cho multithreading, XML, Linq,
collections, events, data, exceptions, IO, service model, networking, text,
location, reflection, globalization, resources, runtime, security, and diagnostics Nền tảng ứng dụng Windows Phone bao gồm hai frameworks: Silverlight và XNA Bạn có thể dung Silverlight cho các ứng dụng kinh doanh hay trò chơi đơn giản 2D
Silverlight sử dụng Extensible Application Markup Language ( XAML ) , một đánh dấu khai báo ngôn ngữ để tạo ra giao diện người dùng hấp dẫn Nhà thiết kế sẽ có sự linh hoạt rất lớn trong việc tạo ra UI cho Windows Phone ;
bằng cách sử dụng các công cụ quen thuộc như Adobe Illustrator, Photoshop ,
và Microsoft Expression Design Với các công cụ này chúng ta có thể tạo ra một giao diện người dùng có thể dễ dàng chuyển đổi thành XAML
XNA được sử dụng chủ yếu cho tạo ra các trò chơi Nó có thể cho phép
chúng ta tạo ra được các trò chơi 3D
3.1 Silverlight cho Windows Phone
Microsoft Silverlight là một nền tảng ứng dụng (application framework)
được viết và chạy các ứng dụng Internet phong phú với sự nhấn mạnh về đa phương tiện, hình động, và đồ họa, với các tính năng và mục đích tương tự như của Adobe Flash Môi trường thời gian chạy (hệ thống thực thi) cho Silverlight
Trang 9phiên bản đầu của Silverlight tập trung vào dòng phương tiện truyền
thông (streaming media), các phiên bản hiện tại hỗ trợ đa phương tiện, đồ
họa và hoạt hình (animation), và cung cấp cho các nhà phát triển hỗ trợ
cho ngôn ngữ CLI và công cụ phát triển
Silverlight phiên bản 3 hổ trợ cho Windows Phone 7 các tính năng như :
- Networking (HttpWebRequest, WebClient)
- Windows Communication Foundation (WCF)
3.2 XNA cho Windows Phone
Giống như Silverlight, XNA không phải là một công nghệ mới XNA là 1 nền tảng phát triển được tạo bởi Microsoft, nó chứa đựng các chi tiết công nghệ
ở mức độ thấp liên quan trong việc tạo ra 1 game và cho phép bạn tập trung vào
Trang 10trên cùng của NET Framework, tiêu chuẩn của Micorsoft phát triển nền tảng, vàbao gồm một thư viện công cụ và code cho phép các nhà phát triển tạo ra nhiều trò chơi cho Windows, Xbox 360 và Windows Phone
XNA Framework đã được phát triển trong những năm qua và hiện tại bao gồm các hỗ trợ về audio và phát lại video, Xbox Live tính năng nhiều người
chơi, Xbox 360 avatars, và nhiều hơn nữa Điều quan trọng nhất cho các mục đích của bạn, nó làm cho nó dễ dàng để vẽ trên màn hình của thiết bị mà bạn đang làm việc với nó
3.3 Công cụ phát triển
Chúng ta có thể tải về các công cụ cần thiết cho việc phát triển ứng dụng
Window Phone từ các trang tải công cụ của Microsoft.Trang Getting Started cũng có tài liệu và các hướng dẫn phong phú Chúng ta cũng cần xem xét tải về Giao diện thiết kế và tương tác , các hướng dẫn để hiểu được Metro
Trang 11Màn hình cho công cụ lập trình Visual Stuodio 3.5 Expression Blend
Với Expression Blend chúng ta có thể phát triển các ứng dụng hấp dẫn sử dụng Silverlight cho Windows Phone Thông thường Expression Blend được sửdụng bởi các nhà thiết kế, và hầu hết các chức năng của Expression Blend cũng tương tự như trong Adobe Illustrator, Photoshop
Chúng ta cũng có thể nhập bất kỳ Illustrator và Photoshop tập tin vào
Trang 12nhiên nó sẽ rất khó khăn khi viết mã XAML phức tạp để tạo đồ họa phức tạp hoặc những chuỗi động.
Màn hình chính công cụ Expression Blend
3.6 Windows Phone Emulator
Windows Phone emulator được tích hợp với Visual Studio và mô phỏng mộtthiết bị thực Tuy nhiên, có những điều bạn không thể làm trong các giả lập Ví
dụ, bạn không thể kiểm tra bất kỳ tính năng đòi hỏi phải có một thiết bị vật lý, chẳng hạn như gia tốc, GPS, la bàn, FM radio, tin nhắn SMS, e-mail, điện thoại gọi điện thoại, danh sách liên lạc, và máy ảnh
Tuy nhiên, một kỹ thuật được gọi là phản ứng mở rộng mà bạn có thể sử
Trang 14kết nối trực tiếp đến cơ sở dữ liệu Trong bài, em sử dụng Web Service qua
WCF
Ngoài ra còn có dịch vụ Bing Maps mà bạn có thể sử dụng một cách tự do Bing Maps là tiện ích miễn phí trong việc phát triển một ứng dụng Windows Phone Cùng với dịch vụ Bing Maps , Microsoft cung cấp Bing Maps điều
khiển trong Silverlight mà bạn có thể sử dụng trong Windows Phone
Dịch vụ thông báo đẩy được lưu trữ trong đám mây cũng ; những cho phép bạn để đẩy thông điệp đếnđiện thoại - một cơ chế tin nhắn rất mạnh mẽ Bạn sẽ tìm hiểu thêm về điều này trong
3.8 Metro Design
Để cung cấp một giao diện người dùng hấp dẫn, Microsoft đã đưa ra thiết kếMetro Thiết kế Metro xuất phát từ ngành công nghiệp giao thông vận tải kiểu chữ và thiết kế trực quan nơi chuyên gia bận rộn liên tục quét và đi ; vì điều này,Metro thiết kế đặt nhấn mạnh vào thiết kế đơn giản và sạch sẽ
Thiết kế Metro sau năm nguyên tắc
Nguyên tắc đầu tiên nhấn mạnh ý tưởng như sạch sẽ , ánh sáng , cởi mở,
và trật tự và có các thuộc tính như kiểu chữ đơn giản để đọc vì người tiêudùng sẽ được sử dụng điện thoại để đọc e-mail , tin nhắn SMS ,
Facebook, và Twitter trong khi di chuyển
Nguyên tắc thứ hai của thiết kế Metro đặt tập trung vào nội dung, nơi màcác tiền đề thiết kế hướng đến trình bày nội dung
Nguyên tắc thứ ba tập trung vào tích hợp liền mạch của phần cứng và phần mềm
Nguyên tắc thứ tư đặt trọng tâm cử chỉ , nơi mà các thiết kế cho phép một đẳng cấp thế giới trải nghiệm người dùng cảm ứng đa điểm
Trang 15 Cuối cùng, thiết kế Metro khái niệm tập trung vào một ứng dụng là có hồn và sống động , nơi mà thông tin quan trọng nhất với các người sử dụng được trình bày trong một cách mà có thể dễ dàng truy cập bằng mộtliên lạc
4 Đôi nét về Web Service, WCF
4.1 Windows Communication Foundation (WCF) là gì?
WCF là công nghệ nền tảng nhằm thống nhất nhiều mô hình lập trình giao tiếp được hỗ trợ trong NET 2.0 thành một mô hình duy nhất Vàotháng 11 năm 2005, NET 2.0 được Microsoft phát hành trong đó có cung cấp các hàm API riêng biệt cho các liên lạc dựa trên SOAP để tối
đa hoá sự làm việc giữa các nền tảng sử dụng Web Services, đồng thời.NET 2.0 còn cung cấp các API để tối ưu việc liên lạc dựa trên mã nhị phân giữa các ứng dụng chạy trên hệ thống Windows gọi là NET
Remoting, các API cho các giao dịch phân tán, và API cho liên lạc dị
bộ WCF thống nhất các API này thành một mô hình duy nhất nhằm đáp ứng mô hình lập trình hướng dịch vụ
WCF có thể sử dụng các bản tin SOAP giữa hai tiến trình, do đó làm cho các ứng dụng dựa trên WCF có thể làm việc với các tiến trình khácthông qua việc giao tiếp sử dụng bản tin SOAP Khi một tiến trình
WCF liên lạc với một tiến trình không là WCF, các bản tin SOAP
được mã hoá trên cơ sở XML, nhưng khi nó liên lạc với một tiến trình WCF khác, bản tin SOAP có thể được tối ưu hoá dựa trên mã hoá nhị phân
4.2 Tại sao sử dụng WCF?
Như phần trên đã trình bày, NET 2.0 hỗ trợ rất nhiều phương pháp liên lạc giữa các ứng dụng khác nhau nhằm vào các mục tiêu khác nhau Các phương pháp liên lạc này khá phức tạp và phải mất nhiều thời gian để làm chủ được
Trang 16có khả năng dùng được khi làm việc với phương pháp khác
Với việc ra đời của WCF, mọi phương pháp liên lạc trước kia đều có thể thựchiện trên WCF Do vậy nhà phát triển chỉ cần làm chủ được công nghệ WCF là
có thể xây dựng các ứng dụng một cách nhanh chóng
WCF là một mô hình lập trình cho phép nhà phát triển xây dựng các giải
pháp dịch vụ đảm bảo tính ổn định, và bảo mật và thậm chí là đảm bảo giao
dịch Nó làm đơn giản hoá việc phát triển các ứng dụng nối kết và đưa ra cho nhà phát triển những giá trị mà có thể họ chưa nhận ra ngay, đó là cách tiếp cận phát triển hệ thống phân tán thống nhất, đơn giản, và quản lý được
Do WCF được xây dựng trên cơ sở của NET Framework 2.0 CLR, nó là tậpcác lớp cho phép các nhà phát triển xây dựng các ứng dụng hướng dịch vụ bằng môi trường lập trình quen thuộc của họ như VB.NET hay C#
4.3 Kiến trúc của WCF
Hình sau mô tả các lớp chủ yếu trong kiến trúc của Windows
Communication Foundation (WCF)
Trang 17
Các contracts (Các hiệp nghị)
Các contract trong WCF cũng giống như các hợp đồng/hiệp định mà bạn
ký trong đời sống thật Một hợp đồng bạn ký có thể chứa các thông tin như kiểu công việc bạn sẽ làm, và những thông tin mà bạn muốn đưa ra cho các bên khác.WCF contract cũng chứa các thông tin tương tự như vậy Contract định nghĩa các đặc tả trong hệ thống bản tin.Thông thường có các loại contract sau:
Contract dữ liệu mô tả các tham số cho các bản tin mà một dịch vụ có thể tạo ra hay sử dụng Các tham số bản tin được định nghĩa bằng các tài liệu sử dụng ngôn ngữ đặc tả XML Schema (XSD), điều này cho
Trang 18khi liên lạc với nhau có thể không cần đồng ý với nhau về các kiểu, nhưng cần đồng ý về contract dữ liệu, nghĩa là đồng ý về các tham số
và các kiểu trả về
Contract bản tin định nghĩa các phần có trong bản tin sử dụng các giao thức SOAP, và nó cho phép điều khiển sâu hơn tới các phần trong bản tin khi có yêu cầu sự chính xác như vậy
Contract dịch vụ đặc tả chi tiết các phương thức của dịch vụ, và được phân phối như là một giao diện trong các ngôn ngữ lập trình như
Visual Basic hay Visual C# Có thể hình dung về contract dịch vụ một cách gián tiếp như sau: „Đây là các kiểu dữ liệu của các bản tin của tôi, đây là nơi tôi cung cấp, và đây là các giao thức mà tôi có thể liên lạc”
Các chính sách và các kết nối (bindings) mô tả các điều kiện cần có để giao tiếp với một dịch vụ Các chính sách sẽ bao gồm cả các yêu cầu
về bảo mật và các điều kiện khác cần phải có khi kết nối với một dịch vụ
4.4 Runtime service (Dịch vụ thực thi):
Lớp dịch vụ thực thi chứa các hành xử sẽ xảy ra trong quá trình thực hiện của dịch vụ, nghĩa là các hành xử thực thi của dịch vụ Ta sẽ thấy một số các hành
Trang 19- Instance behavior: Hành xử thực thể quy định xem có bao nhiêu thực thể của dịch vụ đó được chạy
- Transaction behavior: Hành xử giao dịch cho phép việc rollback các giao dịch nếu xảy ra lỗi
- Message inspection: Kiểm tra bản tin đem lại cho dịch vụ khả năng kiểm tra tất cả hay một số phần của bản tin
- Dispatch behavior: Khi một bản tin được xử lý bởi nền tảng
WCF, dịch vụ Dispatch behavior xác định xem bản tin được xử lý như thế nào
- Concurrency behavior: Hành xử đồng thời xác định xem việc xử
lý thế nào với việc đa luồng của mỗi dịch vụ hay mỗi thực thể của dịch vụ Hành xử này giúp cho việc điều khiển số lượng luồng có thể truy nhập tới một thực thể của dịch vụ
- Parameter filtering: Khi một bản tin được đưa tới một dịch vụ,
sẽ xảy ra một số hành động dựa trên nội dung phần đầu đề của bản tin Phần lọc tham số sẽ thực hiện lọc các đầu đề bản tin và thực hiện các hành động đặt sẵn dựa trên việc lọc đầu đề bản tin
4.5 Message (Bản tin)
Lớp bản tin là tập hợp các kênh Mỗi kênh là một thành phần xử lý bản tin theo một cách nào đó Một tập các kênh thường được gọi là ngăn xếp kênh Các kênh làm việc trên bản tin và trên đầu đề của bản tin Lớp này khác với lớp thực thi dịch vụ chủ yếu bởi sự khác nhau trong việc xử lý nội dung bản tin
Có hai kênh khác nhau là kênh vận chuyển (transport channel) và kênh điều khiển (control channel)
- Kênh vận chuyển phụ trách việc đọc và ghi các bản tin từ mạng (network) hoặc từ một số điểm giao dịch bên ngoài)
Trang 20- Kênh điều khiển thực hiện xử lý bản tin theo giao thức, thông thường làm việc bằng cách đọc và ghi thêm các đầu đề cho bản tin
4.6 Host and activation (Chứa và kích hoạt)
Nhìn một cách tổng thể thì một dịch vụ thực chất là một chương trình Cũng giống như các chương trình khác, một dịch vụ cần phải chạy trong một tệp thực thi Dịch vụ này thường được gọi là dịch vụ tự chứa
Các dịch vụ còn có thể được chứa, hoặc chạy trong một tệp thực thi được quản
lý bởi một agent bên ngoài như IIS hay Windows Activation Services (WAS) WAS cho phép WCF được kích hoạt một cách tự động khi phân phối tới một máy tính có chạy WAS
4.7 Các tính năng của WCF
WCF có nhiều tính năng và sẽ được mô tả chi tiết trong toàn bộ khoá học Mụcnày chỉ nhằm mục đích thảo luận một số tính năng của WCF Danh sách các tínhnăng ở đây không phải là danh sách hoàn chỉnh, mà chỉ hy vọng là danh sách các tính năng “đỉnh” nhất
4.7.1 Transaction (Giao dịch)
Một giao dịch là một đơn vị của công việc Một giao dịch đảm bảo chắc chắn rằng mọi thứ diễn ra trong giao dịch thành công hay thất bại đều là kết quả tổng thể Ví dụ, nếu một giao dịch chứa ba mục công việc cần thực hiện, trong quá trình thực hiện giao dịch, một trong số các mục đó bị thất bại, khi đó cả ba mục
sẽ là thất bại Giao dịch chỉ thành công khi cả ba mục công việc đều thành công Giao dịch thường thấy trong các thao tác với cơ
sở dữ liệu
WCF cho phép đưa vào việc xử lý giao dịch như trên với các liên lạc Nhà phát triển có thể nhóm các liên lạc với nhau thành
Trang 21các giao dịch Ở mức doanh nghiệp, tính năng này cho phép bạn thực hiện các công việc giao dịch qua các nền tảng khác nhau.
Chứa ứng dụng trên IIS còn có thêm các lợi điểm khác là dịch
vụ có thể nhận các ưu điểm của rất nhiều tính năng có sẵn trên IIS, ví dụ IIS có thể điều khiển một cách tự động việc bắt đầu hay kết thúc một dịch vụ
4.7.3 Bảo mật
Bảo mật là tính năng không thể thiếu trong WCF nói riêng và trong liên lạc nói chung Trong WCF, tất cả mọi thứ từ các bản tin tới các client hay server đều phải xác thực và WCF có tính năng để đảm bảo rằng các bản tin không bị lẫn trong quá trình vận chuyển WCF bao gồm việc đảm bảo tính toàn vẹn và bảo mật của bản tin
WCF còn cho phép bạn tích hợp ứng dụng của bạn với cơ sở hạ tầng bảo mật sẵn có, bao gồm cả các chuẩn bên ngoài môi trường Windows bằng cách sử dụng các bản tin SOAP bảo mật cung cấp một nền tảng chung cho tất cả NET
Khái quát lại ta có thể hiểu WCF là một sự kết hợp các tính năng
của Web Service, Remoting, MSMQ và COM+ WCF cung cấp một nền tảng
chung cho tất cả NET Nó là một phần của NET
Trang 22Chương 2 LẬP TRÌNH TRÊN WINDOWS PHONE
Với việc ngày càng thu hút được nhiều người dùng các sản phẩm của
Windows Phone Microsoft đã phát triển rất nhiều các hỗ trợ nhằm phục vụ cho lập trình viên để phát triển các ứng dụng trên Windows Phone Dưới đây là 1 số các nền tảng chung nhất cần thiết giúp em lập trình ứng dụng nhật ký, đặt lịch trên Windows Phone Cụ thể là các lập trình ứng dụng trên Windows Phone
SDK 7.1
1 Các thành phần cơ bản trong WP
1.1 Ứng dụng đầu tiên với WP7
Mã code WP7 được viết trên nền NET nên nó rất quen thuộc với lập trìnhviên NET Chúng ta có thể download Visual Studio Express For WP7 phiên bảnmiễn phí để có thể lập trình cho thiết bị WP7 Ngoài ra Microsoft còn cung cấp
bộ công cụ Blend miễn phí để lập trình viên có thể dễ dàng thiết kế giao diện trên WP7
Tóm lại ban đầu ta cần phải cài các bộ công cụ sau để có thể lập trình trên WP7:
- Visual studio 2010 express for window phone
- Windows Phone Developer Tools
- Silverlight For WP7 Toolkit
Bây giờ chúng ta đã có thể bắt đầu ứng dụng đầu tiên với WP7 Ban đầu trong template của visual studio 2010 bây giờ đã có template “Silverlight For Windows Phone” của ứng dụng WP7
Khi khởi tạo project xong, ta sẽ thấy xuất hiện hình ảnh WP7 như sau:
Trang 23Hình 1: Khởi tạo projectTrên màn hình design trên ta có thể kéo các control từ Toolbox bar để có thiết kế giao diện một cách dễ dàng Điều quan trọng ta cần lưu ý là khi bạn lập trình cho WP7 bạn có thể chạy chương trình của bạn trên WP7 emulator hoặc trên thiết bị thật thông qua dây cắm USB Để cấu hình khi chạy ứng dụng bạn cóthể chọn như hình sau:
Hình 2: Chọn chế độ chạy phần mềm.
Trang 24Để có thể hiểu phần nào cấu trúc phần mềm ta sẽ nhin vào cây thư mục của phần mềm:
Hình 3: Cấu trúc project WP7
Ta sẽ tìm hiểu cấu trúc cũng như nhiệm vụ của các thành phần trong
project như sau:
File App.xaml, App.xaml.cs và MainPage.xaml, MainPage.xaml.cs: Nếu
là lập trình viên NET ta hoàn toàn có thể biết ngay rằng các file có đuôi cs là những file “code-behind” còn những file có đuôi xaml là những file Extensible Application Markup Language (XAML) tương tác với các file cs tương ứng
Mở file App.xaml.cs ta sẽ cấu trúc quen thuộc như sau:
…
Trang 25} }
}
Ở đây ta cần chú ý các class được đặt là “partial” vì Microsoft đã chuẩn
bị cho nó khả năng kêu thêm một file cs mới có các thành viên của class App này
Cấu trúc file App.xaml như sau:
<Application
x:Class="PhoneApp1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentati on"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-
Đúng cú pháp của ngôn ngữ XAML trong Silverlight bạn phải có
element root và sau đó phải khai báo 4 XML Namespace
Property “xmlns” là namespace tiêu chuẩn rất phổ biến trong Silverlight
và property xmlns đầu tiên giúp cho compiler định nghĩa được class khi thực thi
Propery XML thứ 2 thì tham chiếu tới những element và đặc tính khác
đã được trong nhân Silverlight
Trong project WP7 ta có thể gặp thường xuyên 2 property tương tự nhau
Trang 26Khi chương trình bắt đầu chạy, từ App Class sẽ tạo ra object
PhoneApplicationFrame PhoneApplicationFrame sử lý như một web browser
và sẽ gọi class MainPage
MainPage.xaml và MainPage.xaml.cs là thành phần bắt buộc trong
Silverlight Đây là trang chủ của chương trình tức khi chương trình được chạy thành công sẽ đến trang này Xét qua MainPage.xaml.cs class ta sẽ thấy cấu trúc của nó rất đơn giản:
Trang 27Việc kết thừa class PhoneApplicationPage mang lại cho class MainPage
kế thừa đầu đủ các tính năng của một trang ứng dụng WP7 Phần giao diện sẽ dofile MainPage.xaml quyết định Mở file MainPage.xaml ta sẽ thấy cấu trúc như sau:
<phone:PhoneApplicationPage
x:Class="PhoneApp1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/ presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-
namespace:Microsoft.Phone.Controls;assembly=Microsoft.Ph one"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone
"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-
Trang 28<! TitlePanel contains the name of the application and page title >
<StackPanel x:Name="TitlePanel" Grid.Row="0"
Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="MY
APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="page name"
Margin="9,-7,0,0" Style="{StaticResource
PhoneTextTitle1Style}"/>
</StackPanel>
<! ContentPanel - place additional content here >
<Grid x:Name="ContentPanel" Grid.Row="1"
Margin="12,0,12,0"></Grid>
</Grid>
</phone:PhoneApplicationPage>
Thoạt nhìn qua ta sẽ nhìn thấy 4 khai báo xml đầu giống với file
App.xaml Còn lại có một số keyworld ta cần nắm là namespace “d” là viết tắt cho chữ “design” và “mc” là viết tắt của “markup compatibility” và 2 từ khóa trên là thế mạnh của ngôn ngữ XAML Xét về cơ bản XAML cũng là ngôn ngữ giống như HTML thế nhưng XAML lại được Microsoft trang bị cho những khả năng đồ họa tuyệt vời với cú pháp chặt chẽ hơn
Ta có thể nhìn thấy đoạn mã XAML trên đã xét các property FontSize, FontFamily và Fontground thông qua một StaticResource Ta sẽ nghiên cứu kĩ hơn về StaticResource trong chương sau nhưng qua đây bạn có thể nào hình
dung được khả năng quản lý resource rất tốt của Silverlight For WP7
Phần cuối cùng trong phần này, chúng ta sẽ phải nắm rõ rằng khi mình build project WP7 thì file thực thi chứa tất cả mã lệnh và resource của chương trình sẽ được nằm trong file có đuôi là XAP và file XAP đã được tối ưu hóa để làm sao có thể chạy nhanh nhất khi chạy Thực ra file XAP chỉ tương tự như fileZIP mà thôi Ta hoàn toàn có thể giải nén nó như một file ZIP bình thường Ta
có thể tìm thấy file XAP trong thư mục Debug/Bin Khi bạn đẩy ứng dụng lên thiết bị thật, ta chỉ cần deploy file XAP là đủ
Trang 291.2 Sự điều hướng trong WP7
Mặc định khi khởi tạo project WP7 thì mặc định chương trình được thiết
kế theo chiều thẳng đứng (chế độ Portrait ) Thế nhưng ta có thể dễ dàng thay đổi giao diện cho phù khi người dùng để máy nằm ngang (chế độ Landscape)
Hình 4: Chế độ Portrait
Hình 5: Chế độ Landscape.
Trang 30Mặc định thì project sẽ không hỗ trợ tự động chuyển đổi giao diện khi bạnthay đổi hướng sử dụng thiết bị từ Portrait sang Landscape Vì vậy bạn cần phải cấu hình cho thiết bị tự động chuyển đổi giao trong XAML trong giao diện lập trình WP7.
1.3 Giới thiệu về Touch Event
Hiện nay các dòng điện thoại thông minh phần lớn đều hoạt được dựa trênmàn hình cảm ứng đa chạm có kích thước lớn nhỏ khác nhau Vì vậy các nhân
hệ điều hành thiết bị di động thường hỗ trợ tối đa việc xử lý trên các màn hình cảm ứng đa chạm WP7 cũng không nằm ngoài số đó Đối với các ứng dụng
bình thường, có thể ta chưa thể hình dung hay so sánh khả năng cảm ứng mà hệ điều hành hỗ trợ Thế nhưng khi ta chơi game cần tới những động tác phức tạp
và cần độ nhạy cao, ta sẽ có thể cảm nhận được khả năng xử lý của một hệ điều hành có tốt hay không
Trong phần này, ta sẽ làm quen với các sự kiện cảm ứng trên thiết bị
WP7 Ta sẽ có thể hình dung một cách dễ dàng thông qua các hình vẽ sau:
Trang 31Sau đây ta sẽ có thể bắt đầu ứng dụng làm quen với việc xử lý sự kiện cảm ứng trên WP7 Để giúp chúng ta làm việc dễ dàng với màn hình cảm ứng, Microsoft đã cung cấp cho ta class GestureService Thông qua nó ta se dễ dàng bắt được sự kiện và xử lý chúng một cách dễ dàng
Chú ý: class GestureSerive được cung cấp thông qua bộ toolkit WP7 chứ không phải ở trong bộ Windows Phone 7 Developer
Class GestureService được sử dụng bằng cách một GestureListener vào element cần xử lý Ban đầu ta cần add file dll
Microsoft.Phone.Controls.Toolkit.dll vào project (ta có thể tìm theo đường dẫn
sau “C:\Program Files (x86)\Microsoft SDKs\Windows Phone \v7.0 \Toolkit \Nov10\Bin\Microsoft.Phone.Controls.Toolkit.dll”)
Sau đó ta cần thêm namespace trong file xaml cần xử lý như sau:
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Pho ne.Controls.Toolkit"
1.4 Bitmap hay Textures trên WP7
Hệ điều hành WP7 hỗ trợ cho ta 3 loại định dạng chính:
- JPEG (Joint Photography Experts Group)
- PNG (Portable Network Graphics)
- GIF (Graphics Interchange File)
Trang 32Để làm quen với việc sử dụng image trong WP7, ta sẽ phải làm quen với thẻ image trong xaml và một số khái niệm build một image trong WP7 Có hai loại build chinh cho một image trong project WP7
- Build loại Content: tức khi này file ảnh sẽ được include vào file XAP nhưng nằm ở ngoài file dll
- Build loại Resource: tức khi này file ảnh sẽ được nhúng vào trong file DLL
Vì cách build hoàn toàn khác nhau như vậy nên ta cũng sẽ có các thao tác khác nhau đối với từng loại build Với build Content ta sẽ làm như sau:
File XAML :
<Image Stretch="None"
Source="/images/appbar.cancel.rest.png"/>
File CS ://Content
Uri uri = new Uri("/images/appbar.cancel.rest.png",
Trang 33- Một đối tượng của PhoneApplicationFrame
- Một đối tượng của PhoneApplicationPageMột project WP7 chỉ có 1 class App duy nhất để chứa các giá trị toàn cục.Sau đó ta cần một đối tượng PhoneApplicationFrame để cung cấp các
framework cũng như các hàm cơ bản cho ứng dụng Sau đó ta có thể có nhiều đối tượng PhoneApplicationPage như là một trang của trang web và ta có thể di chuyển qua lại giữa chúng
Trong phần này ta sẽ làm quen với kiến trúc của WP7 cũng như các kĩ
Trang 342 Sự chuyển trang (Basic Navigation)
Sự chuyển trang trong WP7 có thể nói là sự sáng tạo táo bạo trong việc thiết kế giao diện cũng như cách quản lý của WP7 Thực chất của sự chuyển trang trong WP7 là một chuỗi trang được ghi lại và được quản lý bởi một class NavigationService một cách linh hoạt Sau đây là một đoạn mã đơn giản
dành cho việc chuyển sang trang ứng dụng khác
this.NavigationService.Navigate(new
Uri("/SecondPage.xaml", UriKind.Relative));
Tham số đầu vào là một Uri class với địa chỉ trang muốn đến, ở đây ví dụ
là “SecondPage.xaml” Còn property Relative ta đã đề cập ở chương trên
Tương tự ta có thể quay lại trang trước cũng bằng cách trên, ta chỉ cần đưa địa chỉ trang trước vào Thế nhưng ta có cách làm đơn giản hơn nhiều như sau nếu ta muốn quay lại trang trước:
this.NavigationService.GoBack();
Điều này sẽ làm cho chương trình không phải khai báo thêm class
PhoneApplicationPage vào trong stack chứa trang, hơn nữa trang được
GoBack() sẽ được lưu trạng thái khi nó bị chuyển trang
2.1 Chuyển đổi dữ liệu qua các trang
Về vấn đề này thường có 2 câu hỏi đặt ra:
o Làm sao ta có thể chuyển dữ liệu sang trang tiếp theo ?
o Làm sao ta có thể trả dữ liệu về trang trước?
Trang 35thuộc với người lập trình web, giống như phương thức GET ta từ trang ban đầu
sẽ kêu trang tiếp sau bằng dòng lệnh như ví dụ sau:
this.NavigationService.Navigate(new
Uri("/SecondPage.xaml? "?Red=32&Green=255&Blue=255",
UriKind.Relative));
Phía bên trang nhận dữ liệu sẽ thực hiện đoạn code sau để lấy dữ liệu:
IDictionary<string, string> parameters =
Nhìn vào đoạn code trên ta thấy để có thể lấy được dữ liệu ta sẽ phải
thông qua class NavigationContext với hàm Query Hàm Query sẽ đưa các giá trị vào các biến tương ứng
2.2 Sự chia sẽ dữ liệu giữa các trang
Để có thể chia sẽ dữ liệu giữa nhiều trang khác nhau, ta không thể dùng cách trên được Vì vậy Microsoft đã cung cấp cho chúng ta một cách là dùng đốitượng App để dùng làm nơi lưu trữ dữ liệu chung
Trang 36Đơn giản như sau, ta viết trong file App.xaml.cs một ví dụ sau:
public partial class App : Application
Ta thấy rằng khi đứng ở bất cứ mọi trang, ta đều có đối tượng App class
được tạo sẵn và tồn tại song song với chương trình App class lưu giữ tất cả các giá trị được sử dụng cho cả chương trình
2.3 Sự lưu giữ dữ liệu thông qua đối tượng:
Ở đây ta xét trường hợp ta muốn lưu giữ dữ liệu, trạng thái của một trang giao diện WP7 Khi ở phiên làm việc đầu tiên ta đã có được một số thông tin dữ liệu, ta muốn khi ta quay lại trang này, tất cả thông tin trạng thái sẽ được lưu trữ
để ta có thể tiết kiệm thời gian thao tác lại các thao tác ta đã làm việc trước đó