Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công nghệ thông tin TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA CÔNG NGHỆ THÔNG TIN ---------- NGUYỄN QUANG SÁCH TÌM HIỂU VỀ WEB SERVICE VÀ XÂY DỰNG ỨNG DỤNG TRÊN ĐIỆN THOẠI DI ĐỘNG KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Quảng Nam, tháng 04 năm 2015 Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách i LỜI CẢM ƠN Tôi cũng xin chân thành cảm ơn quý Thầy, Cô khoa công nghệ thông tin trường Đại học Quảng Nam đã cùng tri thức và tâm huyết của mình để tận tình truyền đạt vốn kiến thức quý báu cho tôi trong suốt thời gian học tập tại trường. Với vốn kiến thức được tiếp thu trong quá trình học không chỉ là nền tảng cho quá trình nghiên cứu khóa luận mà còn là hành trang quý báu để tôi bước vào đời một cách vững chắc và tự tin. Tôi cũng thầm biết ơn sự ủng hộ của gia đình, bạn bè - những người thân yêu luôn ủng hộ và là chỗ dựa tinh thần vững chắc cho tôi. Cuối cùng, tôi xin kính chúc quý Thầy, Cô và gia đình dồi dào sức khỏe và thành công trong sự nghiệp cao quý. Trong quá trình làm bài khóa luận, khó tránh khỏi sai sót, rất mong các thầy, cô bỏ qua. Đồng thời do trình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thể tránh khỏi những thiếu sót, em rất mong nhận được ý kiến đóng góp thầy, cô để em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt hơn bài báo cáo khóa luận sắp tới. Em xin chân thành cảm ơn Quảng Nam, ngày 27 tháng 04 năm 2016 Sinh viên thực hiện Nguyễn Quang Sách Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách ii MỤC LỤC PHẦN 1. MỞ ĐẦU ......................................................................................................... 1 1.1. Lý do chọn đề tài ..................................................................................................1 1.2. Mục đích nguyên cứu ...........................................................................................2 1.3. Đối tượng và phạm vi nghiên cứu ........................................................................2 1.4. Phương pháp nghiên cứu ......................................................................................2 1.5. Đóng góp của đề tài ..............................................................................................2 1.6. Cấu trúc đề tài .......................................................................................................3 PHẦN 2. NỘI DUNG NGHIÊN CỨU............................................................................ 4 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT................................................................................ 4 1.1. Giới thiệu về Web service.....................................................................................4 1.1.1. Khái niệm Web service ..................................................................................4 1.1.2. Đặc điểm của Web service .............................................................................4 1.1.3. Ưu và nhược điểm của Web service ..............................................................5 1.1.4. Nền tảng của Web service ..............................................................................6 1.2. Các công nghệ và kiến trúc của Web service .......................................................7 1.2.1. Các công nghệ của Web service ....................................................................7 1.2.1.1. Ngôn ngữ XML – RPC ...............................................................................7 1.2.1.2. Giao thức truyền thông điệp SOAP.............................................................8 1.2.1.3. Ngôn ngữ mô tả Web service - WSDL .....................................................10 1.2.1.4. Đăng ký dịch vụ UDDI .............................................................................12 1.2.2. Kiến trúc Web service ..................................................................................14 1.2.2.1. Cơ chế hoạt động của Web service ...........................................................14 1.2.2.2. Kiến trúc phân tầng của Web service........................................................16 1.2.3. Kiến trúc hướng dịch vụ SOA......................................................................17 1.2.3.1. Khái niệm kiến trúc hướng dịch vụ SOA..................................................17 1.2.3.2. Nguyên tắc thiết kế của SOA ....................................................................18 1.3. Xây dựng một Web service ................................................................................19 1.3.1. Qui trình xây dựng một Web service ...........................................................19 1.3.2. Xây dựng Web service dùng API RESTful Service ....................................19 Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách iii 1.3.2.1. Giới thiệu về ASP.NET Web API.............................................................19 1.3.2.2. Giới thiệu cơ bản về RESTful Service ......................................................20 1.3.2.3. Nguyên tắc cơ bản để tạo ra RESTful Service..........................................21 1.3.2.4. Xây dựng Web service ..............................................................................22 1.4. Bảo mật trong Web service.................................................................................26 1.4.1. Tổng quan về an toàn Web service ..............................................................26 1.4.2. Bảo mật Web service ...................................................................................27 1.4.2.1. Khái niệm ..................................................................................................27 1.4.2.2. Chứng thực trong một ứng dụng ...............................................................27 1.4.2.3. Những thành phần mở rộng của bảo mật Web service .............................27 1.4.3. Giới thiệu các kỹ thuật bảo mật Web service ..............................................28 1.4.3.1. eXtensible Access Control Markup Language (XACML) .......................28 1.4.3.2. Security Assertion Markup Language (SAML) ........................................30 1.4.3.3. XML Key Management Specification (XKMS) .......................................31 1.4.3.4. Web Services Policy Framework (WS-Policy).........................................32 1.4.3.5. eXentisble Rights Markup Language (XrML) ..........................................33 1.4.3.6. Giao thức bảo mật SSL .............................................................................33 CHƯƠNG 2: TỔNG QUAN VỀ LẬP TRÌNH TRÊN DI ĐỘNG ............................... 35 2.1. Giới thiệu lập trình trên di động .........................................................................35 2.2. Lập trình di động đa nền tảng Xamarin ..............................................................37 2.2.1. Giới thiệu về Xamarin ..................................................................................37 2.2.2. Một số tính năng của Xamarin .....................................................................38 2.3.3. Cài đặt Xamarin ...........................................................................................38 2.3. Giới thiệu về Entity Framework Code First .......................................................42 2.3.1. Entity Framework Code First là gì? .............................................................42 2.3.2. Tạo cơ sở dữ liệu với Entity Framework Code First ...................................43 2.4. Giới thiệu về Visual Studio 2015 .......................................................................46 2.5. Giới thiệu về Microsoft SQL Server 2014..........................................................48 CHƯƠNG 3: PHÂN TÍCH VÀ XÂY DỰNG ỨNG DỤNG GHI CHÚ TRÊN DI ĐỘNG .... 50 3.1. Phân tích chức năng ............................................................................................50 Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách iv 3.1.1. Giao diện ......................................................................................................50 3.1.2. Các chức năng cụ thể ...................................................................................50 3.1.3. Biểu đồ Use Case .........................................................................................50 3.1.4. Biểu đồ tương tác .........................................................................................51 3.1.4.1. UC tìm kiếm ..............................................................................................51 3.1.4.2. UC thêm ghi chú .......................................................................................52 3.1.4.3. UC sửa ghi chú ..........................................................................................53 3.1.4.4. UC xóa ghi chú..........................................................................................54 3.1.5. Cơ sở dữ liệu ................................................................................................55 3.1.6. Kiến trúc vật lý hệ thống ..............................................................................56 3.2. Xây dựng ứng dụng ghi chú trên di động ..........................................................57 3.2.1. Xây dựng Web service cho ứng dụng ghi chú .............................................57 3.2.2. Xây dựng chức năng hiển thị danh sách các ghi chú ...................................61 3.2.3. Xây dựng chức năng tìm kiếm các ghi chú ..................................................64 3.2.4. Xây dựng chức năng thêm mới ghi chú .......................................................67 3.2.5. Xây dựng chức năng sửa và xóa ghi chú .....................................................70 PHẦN 3. KẾT LUẬN VÀ KIẾN NGHỊ ....................................................................... 74 1. Kết luận ..................................................................................................................74 2. Kiến nghị................................................................................................................74 PHẦN 4. TÀI LIỆU THAM KHẢO ............................................................................. 74 Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách v DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT Tên viết tắt Mô tả API Application Programming Interface B2B Business To Business CSDL Cơ sở dữ liệu CORBA Common Object Request Broker Architecture DCOM Distributed Component Object Model EDI Electronic Document Interchange FTP File Transfer Protocol IETF Internet Engineering Task Force JSON Javascript Object Notation GUI Graphical User Interface HTTP Hypertext Transfer Protocol HTML Hypertext Markup Language MVC Model View Controller POP3 Post Office Protocol phiên bản 3 RPC Remote Procedure Call SOAP Simple Object Access Protocol SOA Service Oriented Architecture SSL Security Sockets Layers SAML Security Assertion Markup Language Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách vi SMTP Simple Mail Transfer Protocol TCPIP Transmission Control Protocol Internet Protocol UDDI Universal Description Discovery and Integration URL Uniform Resource Locator XML eXtensible Markup Language XACML eXtensible Access Control Markup Language XKMS XML Key Management Specification XrML eXentisble Rights Markup Language WSE Web Service Enhancement WSDL Web Service Description Language WS Web Service W3C World Wide Web Consortium Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách vii DANH MỤC HÌNH ẢNH Hình 1.1: Mô tả cấu trúc của một thông điệp XML ........................................................ 8 Hình 1.2: Mô tả cấu trúc của một thông điệp SOAP ....................................................... 9 Hình 1.3: Mô tả việc trao đổi thông điệp SOAP thông qua giao thức HTTP ............... 10 Hình 1.4: Lược đồ XML UDDI định nghĩa bốn loại thông tin ..................................... 13 Hình 1.5: Mô hình Web service .................................................................................... 14 Hình 1.6: Web service technology stack ....................................................................... 16 Hình 1.7: TCPIP network model .................................................................................. 16 Hình 1.8: Mô hình phi trạng thái ................................................................................... 21 Hình 1.9: Mô hình trạng thái ......................................................................................... 21 Hình 1.10: Tạo project trong Visual Studio 2015 ......................................................... 22 Hình 1.11: Giao diện đặt tên cho project và cấu hình ................................................... 23 Hình 1.12: Giao diện cấu hình cho project .................................................................... 23 Hình 1.13: Giao diện tạo thành công project để xử lý tiếp theo.................................... 24 Hình 1.14: Giao diện tạo một Controller mới ............................................................... 24 Hình 1.15: Giao diện chọn cấu hình cho Controller...................................................... 25 Hình 1.16: Giao diện viết các chức năng Web service trong Controller....................... 25 Hình 1.17: Giao diện Web service vừa tạo thành công ................................................. 26 Hình 1.18: Mô hình an toàn cho Web service ............................................................... 28 Hình 1.19: XACML Architecture.................................................................................. 29 Hình 1.20: XKMS Services ........................................................................................... 31 Hình 1.21: Cấu trúc của SSL và giao thức SSL ............................................................ 34 Hình 2.1: Giới thiệu về Xamarin ................................................................................... 37 Hình 2.2: Trang chủ của Xamarin để tải file cài đặt ..................................................... 39 Hình 2.3: Giao diện bắt đầu quá trình cài đặt Xamarin ................................................. 39 Hình 2.4: Giao diện cài đặt Xamarin ............................................................................. 40 Hình 2.5: Giao diện cài đặt các cộng cụ trong Xamarin ............................................... 40 Hình 2.6: Giao diện cài Xamarin ................................................................................... 41 Hình 2.7: Giao diện quá tải và cài đặt bộ các công cụ .................................................. 41 Hình 2.8: Giao diện cài thành công Xamarin ................................................................ 42 Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách viii Hình 2.9: Thiết kế các lớp domain trước và sau đó tạo ra cơ sở dữ liệu. ...................... 42 Hình 2.10: Giao diện tạo project có tên EFCodeFirstExample ..................................... 43 Hình 2.11: Thêm thư viện Entity Framework thông qua nuget package ...................... 43 Hình 2.12: Cài đặt Entity Framework thông qua Nuget Package Manager .................. 44 Hình 2.13: Cài đặt thành công Entity Framework dưới dạng references ...................... 44 Hình 2.14: Giới thiệu Microsoft Visual Studio 2015 .................................................... 46 Hình 3.1: Biểu đồ Use Case .......................................................................................... 51 Hình 3.2: Biểu đồ tuần tự UC tìm kiếm ........................................................................ 51 Hình 3.3: Biểu đồ cộng tác UC tìm kiếm ...................................................................... 52 Hình 3.4: Biểu đồ tuần tự UC thêm ghi chú .................................................................. 52 Hình 3.5: Biểu đồ cộng tác UC thêm ghi chú ............................................................... 53 Hình 3.6: Biểu đồ tuần tự UC sửa ghi chú .................................................................... 53 Hình 3.7: Biểu đồ cộng tác UC sửa ghi chú .................................................................. 54 Hình 3.8: Biểu đồ tuần tự UC xóa ghi chú .................................................................... 54 Hình 3.9: Biểu đồ cộng tác UC xóa ghi chú .................................................................. 55 Hình 3.10: Biểu đồ thành phần ...................................................................................... 56 Hình 3.11: Biểu đồ triển khai ........................................................................................ 57 Hình 3.12: Giao diện Web service ................................................................................ 60 Hình 3.13: Giao diện Web service ................................................................................ 60 Hình 3.14: Giao diện trang chính ứng dụng .................................................................. 61 Hình 3.15: Giao diện trang tìm kiếm ............................................................................. 64 Hình 3.16: Giao diện trang thêm ghi chú mới ............................................................... 67 Hình 3.17: Giao diện trang xem chi tiết ghi chú ........................................................... 70 Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 1 PHẦN 1. MỞ ĐẦU 1.1. Lý do chọn đề tài Ngày nay, Công nghệ thông tin phát triển mạnh mẽ đồng hành với nhu cầu trao đổi thông tin và sử dụng các dịch vụ ngày càng tăng. Khi website ra đời nó lập tức thay đổi cách con người giao tiếp và tiếp nhận kiến thức. Ban đầu, website chỉ là các trang HTML cơ bản. Sau đó, ASP, JSP, PHP và những công nghệ khác đã làm biến đổi hoàn toàn các ứng dụng mạng. Với xu thế thương mại hóa điện tử trong kinh doanh hiện nay, website dường như đã trở thành công cụ quảng bá thương hiệu uy tín nhất. Các tài nguyên Internet được xây dựng bằng nhiều công nghệ và ngôn ngữ khác nhau dẫn đến vấn đề là tài nguyên ngày càng nhiều nhưng không đồng bộ, các hệ thống không thể truy xuất hoặc cập nhật lẫn nhau. Các ứng dụng máy tính không có khả năng khai thác dữ liệu trực tiếp từ các website, website được viết bằng ngôn ngữ này cũng gặp khó khăn khi khai thác dữ liệu từ website được viết bằng ngôn ngữ khác. Từ đây sẽ nảy sinh một yêu cầu là cần có một tài nguyên thống nhất để tất cả mọi hệ thống có thể sử dụng ở mọi lúc mọi nơi. Để giải quyết yêu cầu trên, các nhà khoa học đã xây dựng Web service. Web service ra đời được coi là một công nghệ mang đến cuộc cách mạng trong cách thức hoạt động của B2B (Business to Business) và B2C (Business to Customer). Giá trị cơ bản của Web service dựa trên việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối với hệ thống đóng gói và hệ thống kế thừa. Các phần mềm được viết bởi những ngôn ngữ khác nhau có thể sử dụng Web service để chuyển đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên trong một máy tính. Tuy nhiên, công nghệ xây dựng Web service không nhất thiết phải là các công nghệ mới, nó có thể kết hợp với các công nghệ đã có như XML, SOAP, WSDL, UDDI… Với sự phát triển và lớn mạnh của Internet, Web service thật sự là một công nghệ đáng được quan tâm để giảm chi phí và độ phức tạp trong tích hợp hệ thống. Chính vì lý do này nên tôi chọn đề tài “Tìm hiểu về Web service và xây dựng ứng dụng trên điện thoại di động”. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 2 1.2. Mục đích nguyên cứu - Nắm vững các kiến thức về lý thuyết Web service - Tìm hiểu về lập trình di động đa nền tảng - Triển khai ứng dụng Web service trên ứng dụng di động 1.3. Đối tượng và phạm vi nghiên cứu - Đối tượng nghiên cứu của đề tài là lý thuyết kiến trúc Web service, lập trình di động đa nền tảng với Xamarin. - Phạm vi nghiên cứu của đề tài được giới hạn trong các nội dung sau: về mặt lý thuyết, đó là kiến trúc Web service, nền tảng, mô hình kiến trúc, khả năng ứng dụng của Web service trong việc xây dựng các ứng dụng hướng dịch vụ (SOA), các chuẩn công nghệ hỗ trợ trong Web service: SOAP, XML, WSDL và UDDI,..., lý thuyết về lập trình đa nền tảng trên di động. 1.4. Phương pháp nghiên cứu - Tiếp cập lý thuyết về Web service - Thu thập thông tin, nghiên cứu tài liệu liên quan đến đề tài - Tham khảo sách, báo và từ Internet 1.5. Đóng góp của đề tài - Cung cấp kiến thức về Web service và triển khai xây dựng ứng dụng trên thực tế. - Cung cấp một nền tảng ứng dụng trên di động. Có thể nói đây là một ứng dụng thiết thực và có tính ứng dụng cao. Ứng dụng sẽ làm phong phú thêm cho kho ứng dụng trên di động, giúp người dùng có thêm nhiều lựa chọn và những trải nghiệm tốt nhất. - Với đề tài này tôi mong muốn cung cấp một tài liệu tham khảo cho các bạn sinh viên trong khoa khi tiếp cận và tìm hiểu về lập trình đa nền tảng trên di động và nhất là lĩnh vực mà tôi đang nghiên cứu. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 3 1.6. Cấu trúc đề tài Ngoài phần mở đầu và kết luận, phần nội dung khóa luận gồm ba chương: - Chương 1: Cơ sở lý thuyết về Web service, chương này giới thiệu tổng quan về khái niệm, đặc điểm nền tảng, kiến trúc của Web service và cách xây dựng triển khai một Web service. - Chương 2: Giới thiệu về lập trình di động đa nền tảng, chương này giới thiệu về kĩ thuật lập trình di động đa nền Xamarin tảng trên di động và công cụ sử dụng liên quan. - Chương 3: Phân tích và xây dựng ứng dụng trên di động, nội dung chương này bao gồm phân tích các chức năng của và xây dựng chức năng ứng dụng ghi chú trên di động. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 4 PHẦN 2. NỘI DUNG NGHIÊN CỨU CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1. Giới thiệu về Web service 1.1.1. Khái niệm Web service Theo định nghĩa của W3C (World Wide Web Consortium), Web service là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML.Web service là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu. Một Web service được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ Web service khác. Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân nó được thực thi trên server. Trước hết, có thể nói rằng ứng dụng cơ bản của Web service là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống. Trong hệ thống này, các ứng dụng cần được tích hợp với cơ sở dữ liệu (CSDL) và các ứng dụng khác, người sử dụng sẽ giao tiếp với CSDL để tiến hành phân tích và lấy dữ liệu. Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử và B2B cũng đòi hỏi các hệ thống phải có khả năng tích hợp với CSDL của các đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài - bên cạnh tương tác với các thành phần bên trong của hệ thống trong doanh nghiệp). 1.1.2. Đặc điểm của Web service Web service cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau. Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này. Phần lớn kĩ thuật của Web service được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 5 Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạng Internet. Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server. Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ như PHP, Oracle Application server hay Microsoft.Net… Ngày nay Web service đang rất phát triển, những lĩnh vực trong cuộc sống có thể áp dụng và tích hợp Web service là khá rộng lớn như dịch vụ chọn lọc và phân loại tin tức, ứng dụng cho các dịch vụ du lịch (cung cấp giá vé, thông tin về địa điểm…), các đại lý bán hàng qua mạng, thông tin thương mại như giá cả, tỷ giá hối đoái, đấu giá qua mạng, hay dịch vụ giao dịch trực tuyến như đặt vé máy bay, thông tin thuê xe… 1.1.3. Ưu và nhược điểm của Web service Ưu điểm Web service cung cấp khả năng hoạt động rộng lớn và linh hoạt với các ứng dụng phần mềm khác nhau chạy trên những nền tảng khác nhau. Nền tảng của Web service là công nghệ XML. Hầu hết các hệ thống đều thể đọc và hiểu được tập tin XML. Thúc đẩy phát triển các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình chức năng nghiệp vụ đóng gói trong giao diện Web service và công bố rộng rãi trên mạng Internet. Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán. Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành dịch vụ, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác. Ở góc độ doanh nghiệp, Web service là một công nghệ phục vụ rất tốt trong việc quảng bá dịch vụ của mình cho đa dạng khách hàng. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 6 Nhược điểm Có quá nhiều chuẩn cho Web service khiến người dùng khó nắm bắt cũng như gây khó khăn cho các nhà phát triển. An toàn và bảo mật thông tin là một vấn đề nan giải của Web service. Có nhiều vấn đề về các tác vụ đòi hỏi tiến trình xử lý (ví dụ như chuyển tiền qua lại giữa các ngân hàng) chưa được giải quyết hoàn chỉnh. Tốc độ thực thi của Web service phụ thuộc rất nhiều vào tốc độ đường truyền Internet và nhìn chung các Web service thực thi chậm hơn các ứng dụng bình thường khác. 1.1.4. Nền tảng của Web service Web service cũng có thể được nói một cách khác là các khối cơ bản được xây dựng để di chuyển trong hệ thống máy tính phân tán trên Internet. Các chuẩn mở và việc tập trung vào giao tiếp và làm việc cộng tác giữa con người và các ứng dụng đã tạo nên một môi trường nơi mà Web service đang trở thành nền tảng cho việc tích hợp ứng dụng. Các ứng dụng được xây dựng sử dụng các Web service các loại từ nhiều nguồn khác nhau làm việc cùng với nhau bất kể là chúng ở đâu hoặc chúng đã được triển khai như thế nào. Có thể có các định nghĩa khác nhau về Web service khi các công ty xây dựng chúng, nhưng hầu hết tất cả các định nghĩa đều có chung các điểm sau: Thứ nhất, Web service đưa ra chức năng hữu dụng cho người sử dụng Web thông qua một giao thức chuẩn Web. Trong hầu hết các trường hợp, giao thức được sử dụng đó là SOAP. Thứ hai, Web service đưa ra cách mô tả các giao diện của chúng một cách đủ chi tiết nhằm cho phép người sử dụng xây dựng một ứng dụng máy trạm để giao tiếp được với chúng. Mô tả này thường được cung cấp ở dạng một tài liệu XML gọi là một tài liệu về ngôn ngữ mô tả Web service - WSDL (Web service Description Language). Thứ ba, Web service được đăng ký sao cho các khách hàng tiềm năng là người sử dụng có thể tìm thấy chúng một cách dễ dàng. Điều này được thực hiện với UDDI (Universal Discovery Description and Integration). Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 7 Web service như một dịch vụ phần mềm được trình bày trên Web thông qua giao thức SOAP, được mô tả bằng một tệp WSDL và được đăng ký trong UDDI. Các dịch vụ Web service là nguồn thông tin mà ta có thể dễ dàng kết hợp vào các ứng dụng. Dễ dàng nhận ra toàn bộ lớp ứng dụng có thể được xây dựng để phân tích và tích hợp thông tin ta quan tâm và trình bày nó theo nhiều cách khác nhau. 1.2. Các công nghệ và kiến trúc của Web service 1.2.1. Các công nghệ của Web service 1.2.1.1. Ngôn ngữ XML – RPC XML (Extensible Markup Language) - Ngôn ngữ đánh dấu dữ liệu. RPC (Remote Procedure Call) - Thủ tục gọi từ xa. RPC cung cấp cho người phát triển kĩ thuật để định nghĩa ra một giao diện mà có thể được gọi từ xa thông qua môi trường mạng máy tính. Giao diện này có thể là một hàm đơn giản nhưng cũng có thể là một thư viện API khổng lồ. XML - RPC là một hướng tiếp cận dễ và rõ ràng nhất cho Web service, nó cung cấp phương thức gọi một ứng dụng từ một máy tính local đến một máy tính từ xa thông qua môi trường mạng. XML - RPC cho phép chương trình có khả năng tạo ra các hàm hoặc các thủ tục gọi hàm thông qua mạng máy tính. XML - RPC sử dụng giao thức HTTP để vận chuyển thông tin từ Client đến Server. XML - RPC sử dụng ngôn ngữ XML để mô tả các thông điệp yêu cầu và các thông điệp đáp ứng gần gũi với ngôn ngữ tự nhiên. XML - RPC client chỉ ra cụ thể các thông tin về tên thủ tục, các tham biến trong thông điệp XML request, và server trả về lỗi hoặc trả về thông điệp response trong thông điệp XML response. Các tham số của XML - RPC đơn giản chỉ là kiểu dữ liệu và nội dung - tuy nhiên các cấu trúc dữ liệu phức tạp như struct, array cũng được hỗ trợ bởi XML - RPC. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 8 1.2.1.2. Giao thức truyền thông điệp SOAP SOAP viết tắt cho cụm từ - Simple Object Access Protocol. Trong kiến trúc phân tầng của Web service, SOAP nằm ở tầng Packaging, SOAP là một giao thức đóng gói cho các dữ liệu chia sẽ giữa các ứng dụng. Xét về cơ bản, SOAP là XML, chính vì thế SOAP là một ứng dụng cụ thể của XML. SOAP được xây dựng lên từ các chuẩn XML như XML Schema và XML Namespaces dùng cho việc định nghĩa SOAP và các chức năng của nó. Các thành phần cơ bản của SOAP gồm có: Thông điệp XML Thông điệp XML đó là các tài liệu XML được dùng để trao đổi thông tin giữa các ứng dụng. Nó cung cấp tính mềm dẻo cho các ứng dụng trong quá trình giao tiếp với nhau và là một dạng cơ bản của SOAP. Các thông điệp này có thể là bất cứ thứ gì: Hóa đơn thanh toán, yêu cầu về giá cổ phiếu, một truy vấn tới một công cụ tìm kiếm hoặc có thể là bất kì thông tin nào có quan hệ tới từng thành phần của ứng dụng. Hình 1.1: Mô tả cấu trúc của một thông điệp XML Bởi vì XML không phụ thuộc vào một ứng dụng cụ thể, hệ điều hành hay ngôn ngữ lập trình nào, cho nên các thông điệp XML có thể sử dụng trong tất cả các môi trường. Một chương trình Windows Perl có thể tạo ra một thông điệp XML, trình bày thông điệp đó và gửi đến cho một chương trình cài đặt bằng ngôn ngữ Java được triển khai trên nền Unix. RPC và EDI Sử dụng thông điệp XML, đương nhiên SOAP có 2 ứng dụng liên quan: RPC và EDI. Thủ tục gọi hàm từ xa RPC - Remote Procedure Call là một dạng tính toán phân tán cơ bản, mô tả cách thức để một chương trình tạo ra một thủ tục gọi hàm hoặc phương thức tới một máy tính khác, truyền đối số và lấy giá trị trả về. Trao đổi tài liệu điện tử EDI (Electronic Document Interchange) là một dạng tiến trình cơ bản cho quy Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 9 trình thương mại nó định nghĩa các chuẩn định dạng và thông dịch của các tài liệu, thông điệp tài chính và thương mại. Nếu bạn sử dụng SOAP cho EDI, khi đó thông điệp XML có thể là các hóa đơn thanh toán, trả tiền thuế, hoặc các tài liệu tương tự. Nếu bản sử dụng SOAP cho RPC khi đó thông điệp XML có thể trình bày các đối số hoặc các giá trị trả về. Thông điệp SOAP Thông điệp SOAP bao gồm phần tử gốc envelope bao trùm toàn bộ nôi dung thông điệp SOAP, và các phần tử header và body. Phần tử header chứa các khối thông tin có liên quan đến cách thức các thông điệp được xử lý như thế nào. Nó bao gồm việc định tuyến và các thiết lập cho việc phân phối các thông điệp. Ngoài ra phần tử header còn có thể chứa các thông tin về việc thẩm định quyền, xác minh và các ngữ cảnh cho các transaction. Các dữ liệu thực sự được lưu trữ tại phần tử body. Bất cứ thứ gì có thể trình bày cú pháp XML đều nằm trong phần tử body của một thông điệp SOAP. Hình 1.2: Mô tả cấu trúc của một thông điệp SOAP Tất cả các phần tử envelope đều chứa chính xác một phần tử body. Phần tử body có thể chứa các nốt con theo yêu cầu. Nội dung của phần tử body là các thông điệp. Nếu phần tử envelope mà chứa phần tử header, nó chỉ chứa không nhiều hơn một phần tử header và phần tử header này bắt buộc phải là phần tử con đầu tiên của phần tử envelope. Mỗi một phần tử chứa header đều được gọi là header block. Mục đích của header block cung cấp giao tiếp các thông tin theo ngữ cảnh có liên quan đến quy trình xử lý các thông điệp SOAP. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 10 Vận chuyển SOAP SOAP được đặt ở tầng Packaging trong kiến trúc phân tầng của Web Service, SOAP đứng phía trên tầng Network và tầng Transport. Vì thế SOAP không quan tâm đến việc giao thức vận chuyển nào được sử dụng trong quá trình trao đổi các thông điệp, điều đó làm cho giao thức thực sự mềm dẻo tại bất kì môi trường SOAP được triển khai nào. Tính mềm dẻo của SOAP được thể hiện qua việc SOAP có thể sử dụng các giao thức vận chuyển khác nhau để trao đổi các thông điệp, như HTTP, FTP, SMTP, POP3. Hiện nay, HTTP được sử dụng phổ biến trên Internet, chính vì tính phổ biến của nó, cho nên HTTP hiện tại đang là giao thức vận chuyển phổ biến nhất cho việc vận chuyển các thông điệp SOAP. SOAP thông qua HTTP rất thuận tiện cho SOAP RPC trong việc gọi yêu cầu và nhận các thông điệp đáp ứng bởi vì bản chất HTTP chính là giao thức dựa trên nền tảng gọi các yêu cầu và nhận các đáp ứng (request - response - base protocol). Các SOAP request được gửi tới HTTP server thông qua phương thức POST và HTTP Server trả lại giá trị SOAP response thông qua các HTTP response. Hình 1.3: Mô tả việc trao đổi thông điệp SOAP thông qua giao thức HTTP 1.2.1.3. Ngôn ngữ mô tả Web service - WSDL Tổng quan về WSDL WSDL viết tắt của cụm từ Web Service Description Language - Ngôn ngữ mô tả Web service. WSDL ra đời dưới sự phát triển của IBM và Microsoft. WSDL dựa trên giao thức XML để trao đổi thông tin trong môi trường tập trung hoặc phân tán. WSDL mô tả cách thức truy cập tới Web service và các hành động thực thi trên Web service đó. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 11 WSDL là ngôn ngữ cho việc mô tả các giao diện Web service dựa trên nền tảng XML. WSDL là ngôn ngữ mà UDDI sử dụng. Các thành phần của WSDL Một tài liệu WSDL thường bao gồm các thành phần chính sau đây: Thành phần Mô tả Định nghĩa kiểu dữ liệu được dùng trong Web service Các thông điệp được sử dụng trong Web service Các thao tác được thực thi bởi Web service Các giao thức giao tiếp dùng cho Web service Giải thích ý nghĩa các thành phần: Type: Thành phần type định nghĩa kiểu dữ liệu được sử dụng cho Web service Để đảm bảo tính không phụ thuộc vào nền tảng, WSDL sử dụng cấu trúc của lược đồ XML để định nghĩa kiểu dữ liệu. Message: Thành phần message dung để định nghĩa các thành phần dữ liệu và các thông điệp mà nó được gọi tới. Mỗi thông điệp có thể bao gồm một hoặc nhiều phần, các thành phần này có thể so sánh với các câu lệnh của các lời gọi hàm trong các ngôn ngữ lập trình truyền thống. PortType: Đây là thành phần quan trọng nhất trong một tài liệu WSDL. Nó được sử dụng để mô tả Web service, các thao tác được thực thi và các lời gọi thông điệp. Thành phần port type có thể được so sánh với các thư viện hàm (hoặc các module, các lớp) trong các ngôn ngữ lập trình. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 12 Trong thành phần , ta thường gặp 4 kiểu thao tác được WSDL định nghĩa dưới đây: Kiểu thao tác Mô tả One-way Thao tác này thể hiện rằng nó chỉ nhận các lời gọi thông điệp nhưng không trả lại thông điệp đáp ứng Request-response Thao tác này bao gồm việc nhận các thông điệp yêu cầu và trả về các thông điệp đáp ứng Solicit-response Thao tác này sẽ gửi đi các yêu cầu và đợi các đáp ứng Notification Thao tác này sẽ gửi đi các yêu cầu nhưng không đợi để nhận các đáp ứng Binding: Thành phần này định nghĩa các định dạng thông điệp, các mô tả cụ thể về các giao thức cho mỗi port. 1.2.1.4. Đăng ký dịch vụ UDDI Tổng quan về UDDI UDDI là một chuẩn dựa trên XML dùng cho việc mô tả, công bố và tìm kiếm Web service. UDDI được viết tắt của Universal Description, Discovery and Integration. UDDI là thư mục dùng cho việc lưu trữ các thông tin về Web service. UDDI là thư mục của một giao diện Web service được mô tả bởi WSDL. UDDI giao tiếp thông qua SOAP. UDDI cùng với SOAP và WSDL được xem là 3 chuẩn của Web service. UDDI là một kỹ thuật mở đầu tiên cho phép các quy trình thương mại điện tử có thể khám phá lẫn nhau và định nghĩa cách thức tương tác với nhau qua Internet. Các thành phần của UDDI UDDI gồm 2 thành phần chính: Phần đăng ký của tất cả các Web Service’s metadata, bao gồm cả việc trỏ đến tài liệu WSDL mô tả dịch vụ. Phần thiết lập WSDLPort type định nghĩa cho các thao tác và tìm kiếm thông tin đăng ký. UDDI xây dựng dựa trên các giao thức chuẩn Internet được công bố bởi W3C và IETF như XML, HTTP, và DNS. UDDI sử dụng WSDL để mô tả giao diện của Web Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 13 service. Thêm nữa tính năng độc lập với nền tảng ngôn ngữ lập trình đã được điều hợp cùng với giao thức SOAP. Mô hình dữ liệu của UDDI UDDI bao gồm lược đồ XML, mô tả bốn kiểu cấu trúc dữ liệu dưới đây: Hình 1.4: Lược đồ XML UDDI định nghĩa bốn loại thông tin Cấu trúc dữ liệu businessEntity Cấu trúc dữ liệu businessEntity trình bày nhà cung cấp Web service. Cấu trúc này chứa các thông tin về công ty, bao gồm danh sách liên lạc, thông tin, phân biệt các tổ chức thương mại, và danh sách các nhà cung cấp Web service. Cấu trúc dữ liệu businessService Liên kết với mỗi business entity là một danh sách các business service cung cấp bởi business entity đó. Mỗi thành phần chứa thông tin mô tả về dịch vụ, về thông tin phân loại của dịch vụ và danh sách các binding template liên quan đến thông tin kỹ thuật của dịch vụ. Mỗi business service cần có ít nhất một binding template. Cấu trúc dữ liệu bindingTemplate BindingTemplate là kĩ thuật mô tả của Web service được trình bày bởi cấu trúc dữ liệu Business Service. Binding template trình bày sự hoạt động thực tế của Web service, mô tả công nghệ sử dụng để giao tiếp với Web service. Một Business Service có thể có thể có nhiều binding template, cho nên dịch vụ phải chỉ rõ các hành động cụ thể khác nhau trong cùng một dịch vụ. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 14 Cấu trúc dữ liệu tModel tModel là lõi trong cùng của kiểu dữ liệu, nhưng rất khó có khả năng để có thể nắm bắt được hết. tModel là chuẩn cho mô hình kĩ thuật. tModel là phương pháp để mô tả một vài quy trình thương mại, dịch vụ và các cấu trúc mẫu lưu trữ trong UDDI registry. Bất kì một khái niệm trừu tượng nào đều có thể được đăng ký trong UDDI như là một tModel. Ví dụ: chúng ta có thể định nghĩa ra một kiểu cổng (port type) WSDL mới, và đồng nghĩa với đó ta có thể định nghĩa ra một tModel mới mà trình bày kiểu cổng đó trong UDDI. Sau đó, ta có thể chỉ định ra dịch vụ thương mại mà thực thi kiểu cổng đó bằng việc kết hợp với tModel với một business service’s binding template. Cấu trúc dữ liệu publisherAssertion Đây là một cấu trúc dữ liệu quan hệ mà nó đặt sự kết hợp giữa hai hoặc nhiều cấu trúc dữ liệu businessEntity theo một kiểu quan hệ cụ thể, chẳng hạn như một công ty con hoặc một phòng ban. 1.2.2. Kiến trúc Web service 1.2.2.1. Cơ chế hoạt động của Web service Cơ chế hoạt động của Web service yêu cầu phải có 3 thao tác đó là: Find, Public, Bind. Hình 1.5: Mô hình Web service - Mô hình Web service đơn giản định nghĩa cách thức tương tác giữa Service Requestor (bên sử dụng dịch vụ), Service Provider (bên cung cấp dịch vụ), Service Directory UDDI (bên trung gian). Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 15 - Bên sử dụng dịch vụ tìm kiếm các dịch vụ trong một UDDI Service Directory. Chúng sẽ lấy thông tin mô tả WSDL của các Web service cung cấp bởi Service Providers từ trước thông qua Service Directory. Sau khi lấy được mô tả WSDL, bên yêu cầu dịch vụ kết nối đến nhà cung cấp dịch vụ bằng cách triệu gọi các dịch vụ thông qua giao thức SOAP. - Một số cơ chế tương tác giữa các thành phần này: Service: là cơ chế cho phép client xác đinh và triệu gọi các dịch vụ từ xa thông qua mạng mà không phụ thuộc vào vị trí địa lí, hệ điều hành sử dụng hay ngôn ngữ lập trình sử dụng. Message: là phương tiện giao tiếp giao tiếp giữa bên cung cấp dịch vụ và bên sử dụng dịch vụ. Một message có thể là một yêu cầu từ bên sử dụng dịch vụ gửi đến bên cung cấp dich vụ hay là phản hồi từ bên cung cấp dịch vụ về cho bên sử dụng dịch vụ. Dynamic discovery: là cơ chế được cài đặt dựa trên directory service. Về phía bên cung cấp, sẽ sử dụng direcrtory service để tự đăng kí những dịch vụ mà cung cấp. Còn về phía sử dụng, sẽ truy vấn để tìm ra các dịch vụ theo nhu cầu từ directory service thông qua mạng. Điều này làm giảm sự lệ thuộc của bên sử dụng dịch vụ vào bên cung cấp dịch vụ. Publish: để có thể truy cập được thì một Web service cần phải được công bố để các Service Request có thể tìm thấy nó. Việc công bố có thể khác nhau tùy thuộc vào từng ứng dụng cụ thể. Nhưng thông thường, một mô tả dịch vụ (service description) bao gồm các thông tin sau: các interface, các kiểu dữ liệu, các toán tử, các thông tin kết nối, vị trí của dịch vụ có thể truy cập được trên mạng… Find: trong thao tác tìm kiếm Service request sẽ lấy mô tả về dịch vụ đang được yêu cầu một cách trực tiếp hoặc thông qua Service Provider. Thao tác tìm kiếm này có thể diễn ra trong hai vòng: thiết kế xây dựng (lập trình viên cần biết mô tả, interface của dịch vụ) và thực thi (xác định vị trí và tiến hành triệu gọi dịch vụ). Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 16 Bind: để sử dụng được dịch vụ thì cần phải triệu gọi nó. Trong thao tác bind, Service Request khi thực thi sẽ gọi hoặc khởi tạo một luồng tương tác với dịch vụ dựa trên các thông tin trong mô tả dịch vụ mà nó thu được trước đó như: vị trí dịch vụ, các liên lạc và tương tác với dịch vụ … 1.2.2.2. Kiến trúc phân tầng của Web service Hình 1.6: Web service technology stack Mô hình kiến trúc phân tầng của Web service tương tự với mô hình TCPIP được sử dụng để mô tả kiến trúc Internet. Hình 1.7: TCPIP network model Các tầng truyền thống như Packaging, Description, và Discovery trong mô hình Web Service Stack là những tầng cung cấp khả năng tích hợp và cần thiết cho mô hình ngôn ngữ lập trình trung lập. Tầng Discovery : Tầng Discovery cung cấp cơ chế cho người dùng khả năng lấy các thông tin mô tả về các Service Provider. Công nghệ được sử dụng tại tầng này đó chính là UDDI - Universal Description, Discovery and Integration. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 17 Tầng Description : Khi Web service được thực thi, nó cần phải đưa ra các quyết định về các giao thức trên các tầng Network, Transport, Packaging mà nó sẽ hỗ trợ trong quá trình thực thi. Các mô tả về dịch vụ sẽ đưa ra phương pháp để làm thế nào mà các Service Consumer có thể liên kết và sử dụng các service đó. Tại tầng Description, công nghệ được sử dụng ở đây chính là WSDL. Ngoài ra, ít phổ biến hơn, chúng ta còn có 2 ngôn ngữ khác được định nghĩa bởi tổ chức W3C đó là ngôn ngữ môt tả tài nguyên - W3C’s Resource Desciption Framework (RDF) và ngôn ngữ đánh dấu sự kiện DARPA. Tầng Packaging : Việc thực hiện vận chuyển các dữ liệu Web service được thực hiện bởi tầng Transport, tuy nhiên trước khi được vận chuyển, các dữ liệu cần phải được đóng gói lại theo các định dạng đã định trước để các thành phần tham gia vào mô hình Web service có thể hiểu được, việc đóng gói dữ liệu được thi bởi tầng Packaging. Việc đóng gói dữ liệu bao gồm các công việc định dạng dữ liệu, mã hóa các giá trị đi kèm dữ liệu đó và các công việc khác. SOAP là công nghệ chủ yếu được sử dụng tại tầng này, nó là một giao thức đóng gói dữ liệu phổ biến dựa trên nền tảng XML. Tầng Transport : Tầng Transport có vai trò đảm nhiệm việc vận chuyển các Web Service Message, tại đây bao gồm một vài dạng công nghệ khác nhau cho phép các giao tiếp trực tiếp giữa các Application - to - Application dựa trên tầng Network. Mỗi công nghệ bao gồm các giao thức như TCP, HTTP, SMTP….Việc lựa chọn giao thức vận chuyển được dựa trên mỗi nhu cầu giao tiếp của các Web service. Tầng Network: Tầng Network trong công nghệ Web Service chính xác giống tầng Network trong mô hình giao thức TCPIP. Nó cung cấp khả năng giao tiếp cơ bản, định địa chỉ và định tuyến. 1.2.3. Kiến trúc hướng dịch vụ SOA 1.2.3.1. Khái niệm kiến trúc hướng dịch vụ SOA SOA - viết tắt của thuật ngữ Service Oriented Architecture (kiến trúc hướng dịch vụ) là khái niệm về hệ thống trong đó mỗi ứng dụng được xem như một nguồn cung cấp dịch vụ. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 18 Dịch vụ là yếu tố then chốt trong SOA. Có thể hiểu dịch vụ như là hàm chức năng (module phần mềm) thực hiện quy trình nghiệp vụ nào đó, một cách cơ bản, SOA là tập hợp các dịch vụ kết nối mềm dẻo với nhau (nghĩa là một ứng dụng có thể nói chuyện với một ứng dụng khác mà không cần biết các chi tiết kĩ thuật bên trong), có giao tiếp (dùng để gọi hàm dịch vụ) được định nghĩa rõ ràng và độc lập với nền tảng hệ thống, và có thể tái sử dụng. SOA là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến quy trình nghiệp vụ và dùng giao tiếp chuẩn để giúp che đi sự phức tạp của kĩ thuật bên dưới. Thiết kế SOA tách riêng phần thực hiện dịch vụ (phần mềm) với giao tiếp gọi dịch vụ. Điều này tạo nên một giao tiếp nhất quán cho ứng dụng khách sử dụng dịch vụ bất chấp công nghệ thực hiện dịch vụ. Thay vì xây dựng các ứng dụng đơn lẻ và đồ sộ, nhà phát triển sẽ xây dựng các dịch vụ có tính linh hoạt có thể triển khai và tái sử dụng trong toàn bộ quy trình nghiệp vụ. Điều này cho phép tái sử dụng phần mềm tốt hơn, cũng như tăng sự linh hoạt vì nhà phát triển có thể cải tiến dịch vụ mà không làm ảnh hưởng đến client sử dụng dịch vụ. Thực ra khái niệm SOA không hoàn toàn mới, DCOM và CORBA cũng có kiến trúc tương tự. Tuy nhiên các kiến trúc cũ ràng buộc các thành phần với nhau quá chặt, ví dụ các ứng dụng phân tán muốn làm việc với nhau phải đạt đuợc thoả thuận về chi tiết tập hàm API, một thay đổi mã lệnh trong thành phần COM sẽ yêu cầu những thay đổi tương ứng đối với mã lệnh truy cập thành phần COM này. Ưu điểm quan trọng nhất của SOA là khả năng kết nối mềm dẻo (nhờ sự chuẩn hoá giao tiếp) và tái sử dụng. Các dịch vụ có thể được sử dụng với trình Client chạy trên nền tảng bất kì và được viết bởi ngôn ngữ bất kì. 1.2.3.2. Nguyên tắc thiết kế của SOA SOA dựa trên hai nguyên tắc thiết kế quan trọng: Mô-đun: đó là tách các vấn đề lớn thành nhiều vấn đề nhỏ hơn. Đóng gói: Che đi dữ liệu và lô-gic trong từng mô-đun đối với các truy cập từ bên ngoài. Hai tính chất này sẽ dẫn đến đặc điểm thiết kế của kiến trúc SOA đó là các dịch vụ tương tác với nhau qua các thành phần giao tiếp, tuy nhiên các dịch vụ đó vẫn hoạt Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 19 động độc lập với nhau, chia sẻ các lược đồ dữ liệu cho nhau và tuân thủ các chính sách của kiến trúc chung nhất. 1.3. Xây dựng một Web service 1.3.1. Qui trình xây dựng một Web service Qui trình xây dựng một Web service bao gồm các bước sau: - Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ cung cấp. - Tạo WSDL cho dịch vụ. - Xây dựng SOAP server. - Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy và truy xuất. - Client nhận file WSDL và từ đó xây dựng SOAP client để có thể kết nối với SOAP server. - Xây dựng ứng dụng phía client và sau đó gọi thực hiện dịch vụ thông qua việc kết nối tới SOAP server. - Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt đầu tạo nên một Web service như ý muốn. Sau đó là cung cấp Web service này trên Internet. 1.3.2. Xây dựng Web service dùng API RESTful Service 1.3.2.1. Giới thiệu về ASP.NET Web API Là nền tảng lập trình giúp chúng ta tạo ra các Web API - API trên nền Web. Web API là web service được xây dựng dựa trên HTTP sử dụng mô hình lập trình convention (như ASP.NET MVC). Đặc điểm Web API (.NET 4.0 trở lên) Giúp cho việc xây dựng các HTTP service rất đơn giản, nhanh chóng. Mã nguồn mở và có thể được sử dụng bởi bất kì client hỗ trợ XML, JSON. Hỗ trợ đầy đủ các thành phần HTTP: URI, requestresponse headers, caching, versioning, content formats. Có thể host trong ứng dụng hoặc trên IIS Kiến trúc lý tưởng cho các thiết bị có băng thông giới hạn như các thiết bị di động. Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 20 Định dạng dữ liệu có thể là JSON, XML hoặc một kiểu dữ liệu bất kỳ Làm mới và hiện đại hóa các mẫu dự án mặc định Nhiều tính năng mới để hỗ trợ các ứng dụng di động Tùy chỉnh sinh mã (code) Tăng cường hỗ trợ cho các phương pháp bất đồng bộ Ưu điểm của Web API Hiệu suất (performance) cao Hỗ trợ RESTfull đầy đủ Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result, filter, model binder, IoC container, dependency injection, unit test, … 1.3.2.2. Giới thiệu cơ bản về RESTful Service REST định nghĩa các quy tắc kiến trúc để thiết kế Web service chú trọng vào tài nguyên hệ thống, bao gồm các trạng thái tài nguyên được định dạng như thế nào và được chuyển tải qua HTTP thông qua số lượng lớn người dùng và được viết bởi những ngôn ngữ khác nhau. Nếu tính theo số dịch vụ mạng sử dụng, REST đã nổi lên trong vài năm qua như là một mô hình thiết kế dịch vụ chiếm ưu thế. Trong thực tế, REST đã có những ảnh hưởng lớn và gần như thay thế SOAP và WSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều. REST không thu hút được nhiều sự chú ý khi lần đầu tiên giới thiệu vào năm 2000 bởi Roy Fielding trong luận án của ông "Architectural Styles and the Design of Network-based Software Architectures" (phong cách kiến trúc và thiết kế kiến trúc phần mềm dựa trên mạng) tại Đại học California. Luận án đã phân tích một loạt các nguyên tắc kiến trúc phần mềm sử dụng Web như là một nền tảng tính toán phân tán. - RESTfull tuân thủ theo 4 nguyên tắc thiết kế cơ bản sau: Sử dụng các phương thức HTTP một cách rõ ràng Phi trạng thái Hiển thị cấu trúc thư mục như URls Chuyển đổi linh hoạt JavaScript Object Notation (JSON) và XML hoặc cả hai Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 21 1.3.2.3. Nguyên tắc cơ bản để tạo ra RESTful Service - Có 4 nguyên tắc thiết kế cơ bản sau: Nguyên tắc 1: Sử dụng các phương thức HTTP một cách rõ ràng Thiết lập một ánh xạ 1-1 giữa các hành động: tạo, đọc, cập nhật và xoá các quá trình vận hành và các phương thức HTTP: POST (HttpPost) - Tạo một tài nguyên trên máy chủ GET (HttpGet) - Truy xuất một tài nguyên PUT (HttpPut) - Thay đổi trạng thái một tài nguyên hoặc để cập nhật nó DELETE (HttpDelete) - Huỷ bỏ hoặc xoá một tài nguyên Nguyên tắc 2: Phi trạng thái Ta xem mô hình giữa trạng thái và phi trạng thái để dễ so sánh: Mô hình phi trạng thái: Hình 1.8: Mô hình phi trạng thái Mô hình trạng thái: Hình 1.9: Mô hình trạng thái Nguyên tắc 3: Hiển thị cấu trúc thư mục như URls Cấu trúc địa chỉ của RESTful service: Giấu các đuôi tài liệu mở rộng của bản gốc trong máy chủ (.jsp, .php, .asp). Để mọi thứ là chữ thường (thực ra là không phân biệt). Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 22 Thay thế các khoảng trống bằng gạch chân hoặc gạch nối Tránh các chuỗi yêu cầu Thay vì sử dụng mã (404 Not Found) khi yêu cầu địa chỉ cho một phần đường dẫn thı̀ luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi. Nguyên tắc 4: Chuyển đổi JavaScript Object Notation (JSON) và XML. Là một bản tóm tắt các thuộc tı́nh của những thứ trong mô hı̀nh dữ liệu hệ thống. Định dạng dữ liệu mà ứng dụng và trao đổi dịch vụ trong mức đáp ứng yêu cầu phản hồi hoặc trong phần thân của HTTP. Các chủ thể trong mô hı̀nh dữ liệu có liên quan với nhau. Cấu trúc dịch vụ sao cho nó tận dụng được phần đầu chấp nhận HTTP có sẵn bên trong - một loại MIME. 1.3.2.4. Xây dựng Web service Bước 1: Tạo cơ sở dữ liệu tên “Ghichu”, có một bảng “Ghichus”. Bước 2: Khởi động Visual Studio → tạo một project ASP.NET Web Application và chọn template Web API. Từ Visual Studio 2015 vào menu Filechọn new chọn project: Hình 1.10: Tạo project trong Visual Studio 2015 Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 23 Sau khi chọn project, màn hình sau xuất hiện: Hình 1.11: Giao diện đặt tên cho project và cấu hình Chọn các cấu hình như trên, đặt tên project là Khoaluan rồi nhấn OK. Sau đó chọn tiếp tục chọn như sau: Hình 1.12: Giao diện cấu hình cho project Nhấp OK và chờ Visual Studio tạo các file mẫu cho project Khóa luận tốt nghiệp đại học Sinh viên thực hiện: Nguyễn Quang Sách 24 Visual Studio tạo ra projetc có mẫu như hình sau: Hình 1.13: Giao diện tạo thành công project để xử lý tiếp theo Giờ ta tiến hành tạo CSDL Ghichu bằng Entity framework code first trong project để dễ xử lý. Tiếp ta sẽ tạo 1 GhiChuController để tương tác với bảng Ghichu bằng cách sau: Chuột phải vào thư mục Controller chọn theo hình sau: Hình 1.14: Giao diện tạo một Controller mới Khóa luận tốt nghiệp đại học Sinh viên th
Mục đích nguyên cứu
- Nắm vững các kiến thức về lý thuyết Web service
- Tìm hiểu về lập trình di động đa nền tảng
- Triển khai ứng dụng Web service trên ứng dụng di động
Phương pháp nghiên cứu
- Tiếp cập lý thuyết về Web service
- Thu thập thông tin, nghiên cứu tài liệu liên quan đến đề tài
- Tham khảo sách, báo và từ Internet
Đóng góp của đề tài
- Cung cấp kiến thức về Web service và triển khai xây dựng ứng dụng trên thực tế
- Cung cấp một nền tảng ứng dụng trên di động Có thể nói đây là một ứng dụng thiết thực và có tính ứng dụng cao Ứng dụng sẽ làm phong phú thêm cho kho ứng dụng trên di động, giúp người dùng có thêm nhiều lựa chọn và những trải nghiệm tốt nhất
- Với đề tài này tôi mong muốn cung cấp một tài liệu tham khảo cho các bạn sinh viên trong khoa khi tiếp cận và tìm hiểu về lập trình đa nền tảng trên di động và nhất là lĩnh vực mà tôi đang nghiên cứu
Sinh viên thực hiện: Nguyễn Quang Sách 3
Cấu trúc đề tài
Ngoài phần mở đầu và kết luận, phần nội dung khóa luận gồm ba chương:
- Chương 1: Cơ sở lý thuyết về Web service, chương này giới thiệu tổng quan về khái niệm, đặc điểm nền tảng, kiến trúc của Web service và cách xây dựng triển khai một Web service
- Chương 2: Giới thiệu về lập trình di động đa nền tảng, chương này giới thiệu về kĩ thuật lập trình di động đa nền Xamarin tảng trên di động và công cụ sử dụng liên quan
- Chương 3: Phân tích và xây dựng ứng dụng trên di động, nội dung chương này bao gồm phân tích các chức năng của và xây dựng chức năng ứng dụng ghi chú trên di động
Sinh viên thực hiện: Nguyễn Quang Sách 4
NỘI DUNG NGHIÊN CỨU
1.1 Giới thiệu về Web service
Theo định nghĩa của W3C (World Wide Web Consortium), Web service là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML.Web service là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu Một Web service được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ Web service khác Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân nó được thực thi trên server
Trước hết, có thể nói rằng ứng dụng cơ bản của Web service là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống Trong hệ thống này, các ứng dụng cần được tích hợp với cơ sở dữ liệu (CSDL) và các ứng dụng khác, người sử dụng sẽ giao tiếp với CSDL để tiến hành phân tích và lấy dữ liệu Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử và B2B cũng đòi hỏi các hệ thống phải có khả năng tích hợp với CSDL của các đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài - bên cạnh tương tác với các thành phần bên trong của hệ thống trong doanh nghiệp)
1.1.2 Đặc điểm của Web service
Web service cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này
Phần lớn kĩ thuật của Web service được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML.
CƠ SỞ LÝ THUYẾT
Giới thiệu về Web service
Theo định nghĩa của W3C (World Wide Web Consortium), Web service là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML.Web service là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu Một Web service được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ Web service khác Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân nó được thực thi trên server
Trước hết, có thể nói rằng ứng dụng cơ bản của Web service là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống Trong hệ thống này, các ứng dụng cần được tích hợp với cơ sở dữ liệu (CSDL) và các ứng dụng khác, người sử dụng sẽ giao tiếp với CSDL để tiến hành phân tích và lấy dữ liệu Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử và B2B cũng đòi hỏi các hệ thống phải có khả năng tích hợp với CSDL của các đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài - bên cạnh tương tác với các thành phần bên trong của hệ thống trong doanh nghiệp)
1.1.2 Đặc điểm của Web service
Web service cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này
Phần lớn kĩ thuật của Web service được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML
Sinh viên thực hiện: Nguyễn Quang Sách 5
Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạng Internet
Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ như PHP, Oracle Application server hay Microsoft.Net…
Ngày nay Web service đang rất phát triển, những lĩnh vực trong cuộc sống có thể áp dụng và tích hợp Web service là khá rộng lớn như dịch vụ chọn lọc và phân loại tin tức, ứng dụng cho các dịch vụ du lịch (cung cấp giá vé, thông tin về địa điểm…), các đại lý bán hàng qua mạng, thông tin thương mại như giá cả, tỷ giá hối đoái, đấu giá qua mạng, hay dịch vụ giao dịch trực tuyến như đặt vé máy bay, thông tin thuê xe…
1.1.3 Ưu và nhược điểm của Web service
Web service cung cấp khả năng hoạt động rộng lớn và linh hoạt với các ứng dụng phần mềm khác nhau chạy trên những nền tảng khác nhau
Nền tảng của Web service là công nghệ XML Hầu hết các hệ thống đều thể đọc và hiểu được tập tin XML
Thúc đẩy phát triển các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình chức năng nghiệp vụ đóng gói trong giao diện Web service và công bố rộng rãi trên mạng Internet
Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán
Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành dịch vụ, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác
Ở góc độ doanh nghiệp, Web service là một công nghệ phục vụ rất tốt trong việc quảng bá dịch vụ của mình cho đa dạng khách hàng
Sinh viên thực hiện: Nguyễn Quang Sách 6
Có quá nhiều chuẩn cho Web service khiến người dùng khó nắm bắt cũng như gây khó khăn cho các nhà phát triển
An toàn và bảo mật thông tin là một vấn đề nan giải của Web service
Có nhiều vấn đề về các tác vụ đòi hỏi tiến trình xử lý (ví dụ như chuyển tiền qua lại giữa các ngân hàng) chưa được giải quyết hoàn chỉnh
Tốc độ thực thi của Web service phụ thuộc rất nhiều vào tốc độ đường truyền Internet và nhìn chung các Web service thực thi chậm hơn các ứng dụng bình thường khác
1.1.4 Nền tảng của Web service
Web service cũng có thể được nói một cách khác là các khối cơ bản được xây dựng để di chuyển trong hệ thống máy tính phân tán trên Internet Các chuẩn mở và việc tập trung vào giao tiếp và làm việc cộng tác giữa con người và các ứng dụng đã tạo nên một môi trường nơi mà Web service đang trở thành nền tảng cho việc tích hợp ứng dụng Các ứng dụng được xây dựng sử dụng các Web service các loại từ nhiều nguồn khác nhau làm việc cùng với nhau bất kể là chúng ở đâu hoặc chúng đã được triển khai như thế nào Có thể có các định nghĩa khác nhau về Web service khi các công ty xây dựng chúng, nhưng hầu hết tất cả các định nghĩa đều có chung các điểm sau:
Thứ nhất, Web service đưa ra chức năng hữu dụng cho người sử dụng Web thông qua một giao thức chuẩn Web Trong hầu hết các trường hợp, giao thức được sử dụng đó là SOAP
Thứ hai, Web service đưa ra cách mô tả các giao diện của chúng một cách đủ chi tiết nhằm cho phép người sử dụng xây dựng một ứng dụng máy trạm để giao tiếp được với chúng Mô tả này thường được cung cấp ở dạng một tài liệu XML gọi là một tài liệu về ngôn ngữ mô tả Web service - WSDL (Web service Description Language)
Thứ ba, Web service được đăng ký sao cho các khách hàng tiềm năng là người sử dụng có thể tìm thấy chúng một cách dễ dàng Điều này được thực hiện với UDDI (Universal Discovery Description and Integration)
Sinh viên thực hiện: Nguyễn Quang Sách 7
Các công nghệ và kiến trúc của Web service
1.2.1 Các công nghệ của Web service
XML (Extensible Markup Language) - Ngôn ngữ đánh dấu dữ liệu
RPC (Remote Procedure Call) - Thủ tục gọi từ xa RPC cung cấp cho người phát triển kĩ thuật để định nghĩa ra một giao diện mà có thể được gọi từ xa thông qua môi trường mạng máy tính Giao diện này có thể là một hàm đơn giản nhưng cũng có thể là một thư viện API khổng lồ
XML - RPC là một hướng tiếp cận dễ và rõ ràng nhất cho Web service, nó cung cấp phương thức gọi một ứng dụng từ một máy tính local đến một máy tính từ xa thông qua môi trường mạng
XML - RPC cho phép chương trình có khả năng tạo ra các hàm hoặc các thủ tục gọi hàm thông qua mạng máy tính
XML - RPC sử dụng giao thức HTTP để vận chuyển thông tin từ Client đến Server
XML - RPC sử dụng ngôn ngữ XML để mô tả các thông điệp yêu cầu và các thông điệp đáp ứng gần gũi với ngôn ngữ tự nhiên
XML - RPC client chỉ ra cụ thể các thông tin về tên thủ tục, các tham biến trong thông điệp XML request, và server trả về lỗi hoặc trả về thông điệp response trong thông điệp XML response
Các tham số của XML - RPC đơn giản chỉ là kiểu dữ liệu và nội dung - tuy nhiên các cấu trúc dữ liệu phức tạp như struct, array cũng được hỗ trợ bởi XML - RPC
Sinh viên thực hiện: Nguyễn Quang Sách 8
1.2.1.2 Giao thức truyền thông điệp SOAP
SOAP viết tắt cho cụm từ - Simple Object Access Protocol Trong kiến trúc phân tầng của Web service, SOAP nằm ở tầng Packaging, SOAP là một giao thức đóng gói cho các dữ liệu chia sẽ giữa các ứng dụng Xét về cơ bản, SOAP là XML, chính vì thế SOAP là một ứng dụng cụ thể của XML SOAP được xây dựng lên từ các chuẩn XML như XML Schema và XML Namespaces dùng cho việc định nghĩa SOAP và các chức năng của nó
Các thành phần cơ bản của SOAP gồm có:
Thông điệp XML đó là các tài liệu XML được dùng để trao đổi thông tin giữa các ứng dụng Nó cung cấp tính mềm dẻo cho các ứng dụng trong quá trình giao tiếp với nhau và là một dạng cơ bản của SOAP
Các thông điệp này có thể là bất cứ thứ gì: Hóa đơn thanh toán, yêu cầu về giá cổ phiếu, một truy vấn tới một công cụ tìm kiếm hoặc có thể là bất kì thông tin nào có quan hệ tới từng thành phần của ứng dụng
Hình 1.1: Mô tả cấu trúc của một thông điệp XML Bởi vì XML không phụ thuộc vào một ứng dụng cụ thể, hệ điều hành hay ngôn ngữ lập trình nào, cho nên các thông điệp XML có thể sử dụng trong tất cả các môi trường Một chương trình Windows Perl có thể tạo ra một thông điệp XML, trình bày thông điệp đó và gửi đến cho một chương trình cài đặt bằng ngôn ngữ Java được triển khai trên nền Unix
Sử dụng thông điệp XML, đương nhiên SOAP có 2 ứng dụng liên quan: RPC và EDI Thủ tục gọi hàm từ xa RPC - Remote Procedure Call là một dạng tính toán phân tán cơ bản, mô tả cách thức để một chương trình tạo ra một thủ tục gọi hàm hoặc phương thức tới một máy tính khác, truyền đối số và lấy giá trị trả về Trao đổi tài liệu điện tử EDI (Electronic Document Interchange) là một dạng tiến trình cơ bản cho quy
Sinh viên thực hiện: Nguyễn Quang Sách 9 trình thương mại nó định nghĩa các chuẩn định dạng và thông dịch của các tài liệu, thông điệp tài chính và thương mại
Nếu bạn sử dụng SOAP cho EDI, khi đó thông điệp XML có thể là các hóa đơn thanh toán, trả tiền thuế, hoặc các tài liệu tương tự Nếu bản sử dụng SOAP cho RPC khi đó thông điệp XML có thể trình bày các đối số hoặc các giá trị trả về
Thông điệp SOAP bao gồm phần tử gốc envelope bao trùm toàn bộ nôi dung thông điệp SOAP, và các phần tử header và body Phần tử header chứa các khối thông tin có liên quan đến cách thức các thông điệp được xử lý như thế nào Nó bao gồm việc định tuyến và các thiết lập cho việc phân phối các thông điệp Ngoài ra phần tử header còn có thể chứa các thông tin về việc thẩm định quyền, xác minh và các ngữ cảnh cho các transaction Các dữ liệu thực sự được lưu trữ tại phần tử body Bất cứ thứ gì có thể trình bày cú pháp XML đều nằm trong phần tử body của một thông điệp SOAP
Hình 1.2: Mô tả cấu trúc của một thông điệp SOAP Tất cả các phần tử envelope đều chứa chính xác một phần tử body Phần tử body có thể chứa các nốt con theo yêu cầu Nội dung của phần tử body là các thông điệp Nếu phần tử envelope mà chứa phần tử header, nó chỉ chứa không nhiều hơn một phần tử header và phần tử header này bắt buộc phải là phần tử con đầu tiên của phần tử envelope Mỗi một phần tử chứa header đều được gọi là header block Mục đích của header block cung cấp giao tiếp các thông tin theo ngữ cảnh có liên quan đến quy trình xử lý các thông điệp SOAP
Sinh viên thực hiện: Nguyễn Quang Sách 10
SOAP được đặt ở tầng Packaging trong kiến trúc phân tầng của Web Service, SOAP đứng phía trên tầng Network và tầng Transport Vì thế SOAP không quan tâm đến việc giao thức vận chuyển nào được sử dụng trong quá trình trao đổi các thông điệp, điều đó làm cho giao thức thực sự mềm dẻo tại bất kì môi trường SOAP được triển khai nào
Tính mềm dẻo của SOAP được thể hiện qua việc SOAP có thể sử dụng các giao thức vận chuyển khác nhau để trao đổi các thông điệp, như HTTP, FTP, SMTP, POP3 Hiện nay, HTTP được sử dụng phổ biến trên Internet, chính vì tính phổ biến của nó, cho nên HTTP hiện tại đang là giao thức vận chuyển phổ biến nhất cho việc vận chuyển các thông điệp SOAP
Xây dựng một Web service
1.3.1 Qui trình xây dựng một Web service
Qui trình xây dựng một Web service bao gồm các bước sau:
- Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ cung cấp
- Tạo WSDL cho dịch vụ
- Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy và truy xuất
- Client nhận file WSDL và từ đó xây dựng SOAP client để có thể kết nối với SOAP server
- Xây dựng ứng dụng phía client và sau đó gọi thực hiện dịch vụ thông qua việc kết nối tới SOAP server
- Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt đầu tạo nên một Web service như ý muốn Sau đó là cung cấp Web service này trên Internet
1.3.2 Xây dựng Web service dùng API RESTful Service
1.3.2.1 Giới thiệu về ASP.NET Web API
Là nền tảng lập trình giúp chúng ta tạo ra các Web API - API trên nền Web Web API là web service được xây dựng dựa trên HTTP sử dụng mô hình lập trình convention (như ASP.NET MVC)
Đă ̣c điểm Web API (.NET 4.0 trở lên)
Giúp cho việc xây dựng các HTTP service rất đơn giản, nhanh chóng
Mã nguồn mở và có thể được sử dụng bởi bất kì client hỗ trợ XML, JSON
Hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning, content formats
Có thể host trong ứng dụng hoặc trên IIS
Kiến trúc lý tưởng cho các thiết bị có băng thông giới hạn như các thiết bị di đô ̣ng
Sinh viên thực hiện: Nguyễn Quang Sách 20
Định dạng dữ liệu có thể là JSON, XML hoặc một kiểu dữ liệu bất kỳ
Làm mới và hiện đại hóa các mẫu dự án mặc định
Nhiều tính năng mới để hỗ trợ các ứng dụng di động
Tùy chỉnh sinh mã (code)
Tăng cường hỗ trợ cho các phương pháp bất đồng bộ
Ưu điểm của Web API
Hỗ trơ ̣ RESTfull đầy đủ
Hỗ trơ ̣ đầy đủ các thành phần MVC như: routing, controller, action result, filter, model binder, IoC container, dependency injection, unit test, …
1.3.2.2 Giới thiệu cơ bản về RESTful Service
REST định nghĩa các quy tắc kiến trúc để thiết kế Web service chú trọng vào tài nguyên hệ thống, bao gồm các trạng thái tài nguyên được định dạng như thế nào và được chuyển tải qua HTTP thông qua số lượng lớn người dùng và được viết bởi những ngôn ngữ khác nhau Nếu tính theo số dịch vụ mạng sử dụng, REST đã nổi lên trong vài năm qua như là một mô hình thiết kế dịch vụ chiếm ưu thế Trong thực tế, REST đã có những ảnh hưởng lớn và gần như thay thế SOAP và WSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều
REST không thu hút được nhiều sự chú ý khi lần đầu tiên giới thiệu vào năm 2000 bởi Roy Fielding trong luận án của ông "Architectural Styles and the Design of Network-based Software Architectures" (phong cách kiến trúc và thiết kế kiến trúc phần mềm dựa trên mạng) tại Đại học California Luận án đã phân tích một loạt các nguyên tắc kiến trúc phần mềm sử dụng Web như là một nền tảng tính toán phân tán
- RESTfull tuân thủ theo 4 nguyên tắc thiết kế cơ bản sau:
Sử dụng các phương thức HTTP một cách rõ ràng
Hiển thị cấu trúc thư mục như URls
Chuyển đổi linh hoạt JavaScript Object Notation (JSON) và XML hoặc cả hai
Sinh viên thực hiện: Nguyễn Quang Sách 21
1.3.2.3 Nguyên tắc cơ bản để tạo ra RESTful Service
- Có 4 nguyên tắc thiết kế cơ bản sau:
Nguyên tắc 1: Sử dụng các phương thức HTTP một cách rõ ràng
Thiết lập một ánh xạ 1-1 giữa các hành động: tạo, đọc, cập nhật và xoá các quá trình vận hành và các phương thức HTTP:
POST (HttpPost) - Tạo một tài nguyên trên máy chủ
GET (HttpGet) - Truy xuất một tài nguyên
PUT (HttpPut) - Thay đổi trạng thái một tài nguyên hoặc để cập nhật nó
DELETE (HttpDelete) - Huỷ bỏ hoặc xoá một tài nguyên
Nguyên tắc 2: Phi trạng thái
Ta xem mô hình giữa trạng thái và phi trạng thái để dễ so sánh:
Mô hình phi trạng thái:
Hình 1.8: Mô hình phi trạng thái
Hình 1.9: Mô hình trạng thái
Nguyên tắc 3: Hiển thị cấu trúc thư mục như URls
Cấu trúc địa chỉ của RESTful service:
Giấu các đuôi tài liệu mở rộng của bản gốc trong máy chủ (.jsp, php, asp)
Để mọi thứ là chữ thường (thực ra là không phân biệt)
Sinh viên thực hiện: Nguyễn Quang Sách 22
Thay thế các khoảng trống bằng gạch chân hoặc gạch nối
Tránh các chuỗi yêu cầu
Thay vì sử dụng mã (404 Not Found) khi yêu cầu địa chỉ cho một phần đường dẫn thı̀ luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi
Nguyên tắc 4: Chuyển đổi JavaScript Object Notation (JSON) và XML
Là mô ̣t bản tóm tắt các thuô ̣c tı́nh của những thứ trong mô hı̀nh dữ liê ̣u hê ̣ thống
Định da ̣ng dữ liê ̣u mà ứng du ̣ng và trao đổi di ̣ch vu ̣ trong mức đáp ứng yêu cầu/ phản hồi hoă ̣c trong phần thân của HTTP
Các chủ thể trong mô hı̀nh dữ liê ̣u có liên quan với nhau
Cấu trúc di ̣ch vu ̣ sao cho nó tâ ̣n du ̣ng được phần đầu chấp nhâ ̣n HTTP có sẵn bên trong - mô ̣t loa ̣i MIME
Bước 1: Tạo cơ sở dữ liệu tên “Ghichu”, có một bảng “Ghichus”
Bước 2: Khởi đô ̣ng Visual Studio → tạo một project ASP.NET Web
Application và chọn template Web API
Từ Visual Studio 2015 vào menu File/chọn new/ chọn project:
Hình 1.10: Tạo project trong Visual Studio 2015
Sinh viên thực hiện: Nguyễn Quang Sách 23
Sau khi chọn project, màn hình sau xuất hiện:
Hình 1.11: Giao diện đặt tên cho project và cấu hình
Chọn các cấu hình như trên, đặt tên project là Khoaluan rồi nhấn OK Sau đó chọn tiếp tục chọn như sau:
Hình 1.12: Giao diện cấu hình cho project
Nhấp OK và chờ Visual Studio tạo các file mẫu cho project
Sinh viên thực hiện: Nguyễn Quang Sách 24
Visual Studio tạo ra projetc có mẫu như hình sau:
Hình 1.13: Giao diện tạo thành công project để xử lý tiếp theo
Giờ ta tiến hành tạo CSDL Ghichu bằng Entity framework code first trong project để dễ xử lý
Tiếp ta sẽ tạo 1 GhiChuController để tương tác với bảng Ghichu bằng cách sau:
Chuột phải vào thư mục Controller chọn theo hình sau:
Hình 1.14: Giao diện tạo một Controller mới
Sinh viên thực hiện: Nguyễn Quang Sách 25
Chọn web API 2 Controller with actions, using Entity Framework như sau:
Hình 1.15: Giao diện chọn cấu hình cho Controller
ApiController vừa tạo được như sau:
Hình 1.16: Giao diện viết các chức năng Web service trong Controller
Sinh viên thực hiện: Nguyễn Quang Sách 26
Cuối cùng F5 để chạy project:
Hình 1.17: Giao diện Web service vừa tạo thành công
Bảo mật trong Web service
1.4.1 Tổng quan về an toàn Web service
Từ những giai đoạn đầu tiên của Internet, các doanh nghiệp luôn đòi hỏi rất khắt khe về vấn đề bảo mật trong thương mại điện tử Những hạn chế của tường lửa như việc giám sát các gói tin được truyền tải dựa trên giao thức HTTP là chưa có, điều này có thể khiến cho máy chủ có nguy cơ bị những cuộc tấn công không hề biết được biết trước Đã có rất nhiều các thuật toán đưa ra cơ chế và những chuẩn về bảo mật như sự mã hoá khoá thông tin, chữ ký số… nhưng hầu hết chỉ tập trung vào việc đưa ra các định dạng bảo về dữ liệu trong quá trình trao đổi, không quan tâm đến việc xác định các nghi thức mà các bên cần thực hiện khi tương tác với nhau
Ngoài ra, những chuẩn chung về việc chỉ ra nghi thức giao tiếp giữa Web service là chưa có, đã khiến cho các sản phẩm hỗ trợ bảo mật của Web service không thể tích hợp với nhau, mặc dù các sản phầm này đều được thiết kế dựa trên chuẩn về bảo mật cho Web service
Một chuẩn an toàn chung cho các hệ thống giao dịch trên mạng thường phải tập trung vào những điều sau:
Identification: định danh được những ai truy cập tài nguyên hệ thống
Sinh viên thực hiện: Nguyễn Quang Sách 27
Authentication: chứng thực truy cập tài nguyên của người muốn sử dụng
Authorization: cho phép giao dịch khi đã xác nhận định danh người truy cập
Integrity: toàn vẹn thông tin trên đường truyền
Confidentiality: độ an toàn, không ai có thể đọc thông tin trên đường đi
Auditing: kiểm tra, tất cả các giao dịch đều được lưu lại để kiểm tra
Non-repudiation: độ mềm dẻo, cho phép chứng thực hợp tính hợp pháp hóa của thông tin đến từ một phía thứ ba ngoài hai phía là người gửi và người nhận
Bảo mật Web service là một chuẩn an toàn cho SOAP và cả những phần mở rộng của SOAP, nó được dùng khi muốn xây dựng những Web service toàn vẹn và tin cậy Bảo mật Web service đảm bảo cho tính an toàn, sự toàn vẹn thông điệp và tính tin cậy của thông điệp
1.4.2.2 Chứng thực trong một ứng dụng
Máy khách sẽ cung cấp một dấu hiệu an toàn trong tập tin mô tả cũng như phải chỉ rõ một Callback handler để lấy tài khoản và mật khẩu trong thông điệp SOAP và gửi tới máy chủ
Phía máy chủ Để cấu hình máy chủ an toàn cần có một dấu hiệu an toàn hợp lệ cũng như phải chỉ rõ một Callback handler để đọc dấu hiệu an toàn trong SOAP máy khách và xác nhận nó
1.4.2.3 Những thành phần mở rộng của bảo mật Web service
Do bảo mật Web service chỉ là một lớp trong nhiều lớp của giải pháp an toàn đầy đủ, nên cần một mô hình an toàn chung lớn hơn để có thể bao phủ tất cả các khía cạnh an toàn khác như đăng ký (logging) và không từ chối (non-repudiation)
Sinh viên thực hiện: Nguyễn Quang Sách 28
Hình 1.18: Mô hình an toàn cho Web service Trong mô hình này các thành phần quan trọng bao gồm:
WS-SecureConversation Describes: thông điệp trao đổi giữa các phần, bao gồm sự trao đổi ngữ cảnh, thiết lập, dẫn xuất ra những phiên
WS-Authentication Describes: quản lý những dữ liệu, chính sách cần chứng thực
WS-Policy Describes: quản lý những ràng buộc của những chính sách an toàn ở các điểm trung gian và đầu cuối
WS-Trust Describes: cho phép Web service an toàn trao đổi, tương tác với nhau
1.4.3 Giới thiệu các kỹ thuật bảo mật Web service
1.4.3.1 eXtensible Access Control Markup Language (XACML)
Trong một môi trường phân phối, ví dụ như thiết lập một Web service, thực hiện các chính sách điều khiển truy cập bằng cách cấu hình chúng tại mỗi điểm, khiến cho các chính sách trở nên đắt tiền và không đáng tin cậy Hơn nữa, các chính sách điều khiển truy cập thường được thể hiện thông qua các ngôn ngữ độc quyền và khác nhau XACML được hình thành để giải quyết vấn đè này, bằng cách cung cấp một tiêu chuẩn, ngôn ngữ duy nhất để xác định các chính sách điều khiển truy cập XACML phiên bản 2.0 đã được chấp nhận như một tiêu chuẩn OASIS cùng với sáu cấu hình của XACML: SAML 2.0, XML Digital Signature, Privacy Policy (chính sách bảo mật), Hierarchical Resource (phân cấp tài nguyên) và RBAC (Role-Based Access Control)
Sinh viên thực hiện: Nguyễn Quang Sách 29
PEP (Policy Enforcement Point): Thực hiện kiểm soát truy cập bằng cách yêu cầu quyết định và thực thi các quyết định ủy quyền
PAP (Policy Administration Point): Tạo và lưu trữ chính sách bảo mật
PDP (The Policy Decision Point): Nhận, xem xét yêu cầu Sau đó áp dụng các chính sách cùng với việc đánh giá các chính sách đó rồi trả về PEP
PIP (Policy Information Point): Là nguồn gốc của các giá trị thuộc tính hoặc các dữ liệu cần thiết để đánh giá chính sách
Context Handler: Xác định để chuyển đổi các yêu cầu theo định dạng gốc của nó với hình thức XACML và chuyển đổi các quyết định ủy quyền theo hình thức XACML sang định dạng gốc
Các chính sách XACML sẽ được nạp vào PAP, tại đây các chính sách sẽ được gửi tiếp tới PDP PDP là điểm quyết định sẽ sử dụng chính sách nào cho các yêu cầu truy cập Khi có một yêu cầu truy cập được gửi tới PEP, nó sẽ tiếp nhận các yêu cầu và thực hiện chúng bằng cách yêu cầu tới các văn bản xử lý Các văn bản này lại được gửi yêu cầu tới PDP, tại đây các yêu cầu được xử lý và sau đó được gửi phản hồi lại cho
Sinh viên thực hiện: Nguyễn Quang Sách 30
Context Handler Và tiếp tục gửi lại cho PEP - nơi thực hiện các chính sách sau khi đã qua quá trình xử lý và thực hiện tại PDP Sau khi thực thi các chính sách PEP sẽ gửi các chính sách tới các Máy chủ chứng thực và tạo ra các tài nguyên để chia sẻ Các tài nguyên này kết hợp cùng với PIP được lưu trữ trở lại cho Context Handler phục vụ cho những yêu cầu lần sau
1.4.3.2 Security Assertion Markup Language (SAML)
SAML là sự kết hợp giữa S2ML và AuthML, được phát triển thông qua OASIS SAML là một tiêu chuẩn dựa trên XML, được hình thành như một khuôn khổ cho việc trao đổi thông tin liên quan đến an ninh, thể hiện dưới các xác nhận và sự tin tưởng giữa các bên tham gia trao đổi, nhằm xác thực giao tiếp người dùng, quyền lợi và các thuộc tính thông tin
Hỗ trợ việc khẳng định các chứng thực gốc duy nhất giữa các domain với nhau Việc khẳng định có thể truyền đạt thông tin về các thuộc tính của đối tượng và có thể quyết định ủy quyền cho đối tượng được phép truy cập tài nguyên nhất định
Chứng thực các vấn đề liên Domain
Tập trung các vấn đề xác thực liên
SAML hỗ trợ ba loại hình xác nhận:
Xác thực: Các đối tượng quy định được chứng thực tại thời điểm cụ thể
Thuộc tính: Các đối tượng quy định có liên quan tới thuộc tính được cung cấp
Quyết định ủy quyền: một yêu cầu cho phép đối tượng quy định để truy cập vào tài nguyên quy định đã được cấp hoặc từ chối
Một SAML duy nhất khẳng định có thể chứa một số báo cáo khẳng định về chứng thực, ủy quyền và các thuộc tính Khẳng định là do cơ quan SAML, cụ thể là cơ quan thẩm định, cơ quan thuộc tính, hoặc là một điểm quyết định chính sách Tuy nhiên, nó không cung cấp cơ chế để kiểm tra, thu hồi chứng chỉ SAML cung cấp bối cảnh
TỔNG QUAN VỀ LẬP TRÌNH TRÊN DI ĐỘNG
Giới thiệu lập trình trên di động
Người lập trình ứng dụng cho thiết bị di động truyền thống luôn luôn phải nhớ trong đầu nguyên tắc tiết kiệm tối đa tài nguyên của thiết bị, dùng mọi cách để tối ưu hóa độ phức tạp tính toán cũng như lượng bộ nhớ cần sử dụng Tuy nhiên, cùng với sự phát triển nhanh chóng của phần cứng, các thiết bị di động hiện đại thường có cấu hình rất tốt, với chip xử lý mạnh mẽ, bộ nhớ (RAM) lớn, khiến việc lập trình cho thiết bị di dộng trở nên dễ dàng hơn bao giờ hết Các bộ kit phát triển của các hãng sản xuất hệ điều hành di động hiện nay cũng thường làm trong suốt hầu hết các tác vụ liên quan đến quản lý bộ nhớ, quản lý tiến trình Lập trình viên có thể ít quan tâm hơn đến việc tối ưu hóa sử dụng tài nguyên và tập trung vào việc lập trình, phát triển tính năng cho ứng dụng như khi lập trình cho máy tính cá nhân
Tuy nhiên, đặc trưng di động của các thiết bị này cũng đem đến nhiều vấn đề mà người lập trình cần phải quan tâm như:
Tính di động của các thiệt bị này khiến kết nối mạng trở nên rất bất ổn định và khó kiểm soát Các ứng dụng phụ thuộc nhiều vào kết nối Internet cần chú ý điểm này
Lưu lượng Internet trên thiết bị di động thường có chi phí cao hơn so với Internet cố định Điều này cũng cần lưu ý khi phát triển các ứng dụng sử dụng nhiều tài nguyên Internet như phim trực tuyến, nhạc trực tuyến
So với máy tính cá nhân, các thiết bị di động hiện đại được trang bị thêm rất nhiều tính năng giúp việc tương tác với người dùng trở nên thuận tiện, các loại kết nối đa dạng (NFC, GPS, 3G, 4G, bluetooth, IR ), các cảm biến phong phú giúp trải nghiệm rất đa dạng (cảm biến ánh sáng, cảm biến tiệm cận, la bàn, cám biến chuyển động, gia tốc kế )
Ngoài ra các hãng phát triển hệ điều hành di động đều làm ra bộ công cụ phát triển (SDK) và môi trường phát triển tích hợp rất thuận tiện cho việc viết mã nguồn, biên dịch, gỡ rối, kiểm thử cũng như xuất bản phần mềm
Xét theo thị phần trên thị trường, ba hệ điều hành phổ biến nhất cho thiết bị di động hiện nay là Google's Android, Apple's iOS và Microsoft's Windows Phone Mỗi
Sinh viên thực hiện: Nguyễn Quang Sách 36 ứng dụng thành công thường được phát triển cho cả 3 hệ nền này Mỗi hệ nền đều có một chợ ứng dụng chính hãng (Google có Google Play Store, Apple có Apple AppStore, Microsoft có Windows Phone Store) với rất nhiều khách hàng tiềm năng, giúp người phát triển có thể phân phối ứng dụng miễn phí hoặc có phí với chi phí nhất định
Bảng dưới đây liệt kê các hệ điều hành cùng với ngôn ngữ lập trình và IDE phổ biến nhất của nó
HĐH Ngôn ngữ lập trình IDE
Android Java IBM's Eclipse với Google's ADT plugins iOS Objective-C Apple' Xcode
Windows Phone C# Microsoft's Visual Studio cho Windows phone
Ngoài việc phát triển ứng dụng cho từng hệ điều hành như kể trên, lập trình viên có thể lựa chọn các thư viện lập trình đa nền tảng để phát triển ứng dụng, phổ biến nhất trong các ứng dụng đa nền là các ứng dụng viết bằng ngôn ngữ Web (HTML5, CSS & Javascript) Trình duyệt Web của các thiết bị di động hiện nay có đầy đủ tính năng lẫn hiệu năng để chạy tốt các ứng dụng Web hiện đại Một ứng dụng Web có thể được đặt trên máy chủ hoặc được đóng gói thành native app (ứng dụng cho từng hệ điều hành) qua một số công cụ đóng gói của các hãng thứ ba
Công cụ đóng gói ứng dụng Web cho thiết bị di động phổ biến nhất hiện nay là PhoneGap, được phát triển bởi Nitobi, sau được Adobe mua lại PhoneGap cho phép lập trình viên phát triển ứng dụng di động sử dụng ngôn ngữ Web (HTML5, CSS3 và Javascript), với các tính năng bổ sung, cho phép ứng dụng truy cập vào phần cứng của thiết bị như gia tốc kế, máy ảnh, GPS và đóng gói thành ứng dụng cho nhiều hệ điều hành khác nhau, bao gồm Android, iOS, Blackberry, BlackBerry 10, Windows Phone, Windows 8, Tizen, Bada Tuy nhiên, nhược điểm của các ứng dụng loại này là hiệu suất thấp và không đồng nhất giữa tất cả các trình duyệt Web di động
Sinh viên thực hiện: Nguyễn Quang Sách 37
Lập trình di động đa nền tảng Xamarin
XAMARIN là hãng phần mềm lập trình di động viết trên ngôn ngữ C# với hơn
500 ngàn lập trình viên đang sử dụng để viết các ứng dụng chạy trên Mac, Android và đến 11/2013 Microsoft đã mua lại và tích hợp chạy trên môi trường Widnows 8 Công cụ Xamarin được Microsoft giới thiệu tại thị trường Việt Nam vào 18/4/2014 cho cộng đồng các giảng viên các trường CĐ, ĐH tại TP.HCM và được chuyển giao các tài liệu, bản quyền với giá ưu đãi giảng dạy cho các sinh viên trên nền Microsoft Visual Studio và được chuyên gia Microsoft demo lập trình xamarin để ứng dụng chạy trên môi trường iOS, Android, Windows Phone và Windows 8.1 với các công cụ khác nhau
Hình 2.1: Giới thiệu về Xamarin Với gói công cụ của Xamarin, lập trình viên có thể viết các ứng dụng hoàn toàn bằng C# đồng thời chia sẻ các mã lập trình tương tự lên iOS, Android, Windows và Mac Ngoài ra, lập trình viên cũng có thể tái sử dụng thư viện NET trong khi vẫn có thể dễ dàng tích hợp các thư viện và khung phát triển đặc trưng của từng nền tảng Xamarin cũng cung cấp các đoạn mã soạn sẵn hiệu năng cao với khả năng truy xuất vào tất cả các hàm API nội trú để lập trình viên có thể phát triển các ứng dụng nội trú (native app) tùy theo trải nghiệm của thiết bị
Mọi thứ lập trình viên cần phải làm với Objective-C hay Java đều có thể được thực hiện bằng C# với Xamarin
Sinh viên thực hiện: Nguyễn Quang Sách 38
2.2.2 Một số tính năng của Xamarin
Xamarin Platform: Xamarin 2.0 xuất bản tháng 1/2013 hiện đang sử dụng iOS, Android and Windows viết ngôn ngữ C# với cộng cụ Xamarin Studio or Visual Studio Đây là công cụ hầu hết các ứng dụng đang sử dụng bao gồm các hãng 3M, Target, AT&T, HP Ngoài ra, Xamarin có thêm các component tích hợp trong UI controls, backend systems, cloud services và cho đối tác thứ 3 tích hợp app mobile
Xamarin Test Cloud: ứng dụng điện toán đám mây để test app mobile nhằm giả lập trước khi xuất bản trên store Xamarin Test Cloud sử dụng object-based UI testing để test cho user đầu cuối
Xamarin for Visual Studio: là ngôn ngữ dùng để lập trình cho các ứng dụng chạy trên iOS, Android và Windows
Xamarin Studio: là chuẩn IDE để viết lập trình ứng dụng được xuất bản 1/2013 với tên gọi Xamarin 2.0
Xamarin.Mac: công cụ được dành cho Apple để viết bằng ngôn ngữ C#
Net Mobility Scanner: dành cho các lập trình viên sử dụng bằng ngôn ngữ NET để chạy các ứng dụng viết trên iOS, Android, Windows Phone, and Windows Store
Xamarin cung cấp những hướng dẫn hữu ích để bắt đầu một project trên Visual Studio để bắt đầu viết những ứng dụng trên những nền tảng di động khác nhau
Trình cài đặt sẽ tự động phát hiện Xamarin, tải về và cài đặt bất kỳ thành phần cần thiết để hoàn thành việc cài đặt Hướng dẫn này xem xét các bước cài đặt và cấu hình yêu cầu để cài đặt nền tảng Xamarin và để có được môi trường phát triển cần thiết lập, bao gồm cách:
- Khởi động trình cài đặt
Sinh viên thực hiện: Nguyễn Quang Sách 39
Bước đầu tiên là để tải về bộ cài đặt thống nhất Xamarin, có thể được tìm thấy tại http://www.xamarin.com/Download
Hình 2.2: Trang chủ của Xamarin để tải file cài đặt
Mở trình cài đặt để bắt đầu quá trình cài đặt:
Hình 2.3: Giao diện bắt đầu quá trình cài đặt Xamarin
- Tiếp theo chọn chọn Next để tiếp tục
Sinh viên thực hiện: Nguyễn Quang Sách 40
- Chọn vào I agree to license Items
Hình 2.4: Giao diện cài đặt Xamarin
- Chọn vào Next để tiếp tục cài đặt
Hình 2.5: Giao diện cài đặt các cộng cụ trong Xamarin
Sinh viên thực hiện: Nguyễn Quang Sách 41
- Chọn I agree to license tems
- Vào tiếp tục chọn vào Next để tiếp tục
Hình 2.6: Giao diện cài Xamarin
- Tiếp tục đợi quá trình tải và cài đặt
Hình 2.7: Giao diện quá tải và cài đặt bộ các công cụ
Sinh viên thực hiện: Nguyễn Quang Sách 42
- Cài đặt thành công Xamarin
Hình 2.8: Giao diện cài thành công Xamarin
Giới thiệu về Entity Framework Code First
2.3.1 Entity Framework Code First là gì?
Entity Framework Code First được giới thiệu từ Entity Framework 4.1 Code First chủ yếu là hữu ích trong Domain Driven Design (DDD) Trong cách tiếp cận Code First, bạn có thể tập trung vào việc thiết kế Domain và bắt đầu tạo ra các lớp theo yêu cầu của Domain của bạn chứ không phải thiết kế cơ sở dữ liệu trước rồi sau đó tạo ra các lớp phù hợp với thiết kế cơ sở dữ liệu đó Code First API sẽ tạo ra cơ sở dữ liệu dựa trên các lớp thực thể và lớp cấu hình của bạn
Hình 2.9: Thiết kế các lớp domain trước và sau đó tạo ra cơ sở dữ liệu
Vì vậy, đầu tiên bạn bắt đầu viết các lớp thay vì tập trung vào thiết kế cơ sở dữ liệu, sau đó khi bạn chạy ứng dụng, Code First API sẽ tạo ra cơ sở dữ liệu mới hoặc ánh xạ các lớp của bạn vào cơ sở dữ liệu đã tồn tại trước khi chạy ứng dụng của bạn
Sinh viên thực hiện: Nguyễn Quang Sách 43
2.3.2 Tạo cơ sở dữ liệu với Entity Framework Code First
Tạo project có tên là EFCodeFirstExample
Hình 2.10: Giao diện tạo project có tên EFCodeFirstExample
Ta sẽ thêm thư viện Entity Framework vào reference thông qua nuget package
Hình 2.11: Thêm thư viện Entity Framework thông qua nuget package
Sinh viên thực hiện: Nguyễn Quang Sách 44
Gói Entity Framework sẽ xuất hiện bạn nhấn nút “Install” để tiếp tục
Hình 2.12: Cài đặt Entity Framework thông qua Nuget Package Manager
Kết quả sau khi đã thêm thư viện Entity Framework dưới dạng references
Hình 2.13: Cài đặt thành công Entity Framework dưới dạng references
Tiếp tục ta tạo 2 class với tượng ứng với 2 bảng ví dụ ta tạo 2 bảng cơ sở dữ liệu là nhóm và sản phẩm có trên cơ sở dữ liệu Lưu ý là ta không tạo database mà chỉ cần sử dụng mã code để làm điều đó:
Sinh viên thực hiện: Nguyễn Quang Sách 45
Tạo class SanPham public class Sanpham
{ public int Id { get; set; } public string Ten { get; set; } public string Ghichu { get; set; } public double DonGia { get; set; } public double SoLuong { get; set; }
[NotMapped] public double Tien { get; set; } public int Idnhom { get; set; } public Nhom Nhom { get; set; }
Tạo class Nhom public class Nhom
{ public int Id { get; set; } public string Ten { get; set; } public string Ghichu { get; set; } public virtual ICollection Sanphams { get; set; }
Cuối cùng, ta cần tạo lớp context để Entity Framework hiểu và tạo các thực thể tương ứng trên hệ quản trị cơ sở dữ liệu Trong class này ta cần kế thừa DbContext class như đã nói public class DbContextt: DbContext { public virtual DbSet Sanphams { get; set; } public virtual DbSet Nhoms { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{ modelBuilder.Entity() HasRequired(s => s.Nhom) WithMany(s => s.Sanphams)
Sinh viên thực hiện: Nguyễn Quang Sách 46
Tiếp tục để cập nhật sự thay đổi này trong Database chúng ta cần phải kích hoạt tính năng Code First Migrations cho lớp DbContextt Tiến hành mở Package Manager Console từ solution và Enable-Migrations Tiếp tục chạy lệnh Add- Migrations trong Package Manager Console và cuối cùng chạy lệnh Update- Datebase, lệnh này sẽ cập nhật vào database.
Giới thiệu về Visual Studio 2015
Microsoft Visual Studio 2015 là công cụ lập trình mạnh mẽ được sử dụng để phát triển các chương trình máy tính cho Microsoft Windows, cũng như các trang Web, các ứng dụng Web Về phần Visual Studio 2015, phiên bản mới này sẽ mở rộng khả năng lập trình cho các nền tảng iOS, Android và Windows nhờ việc hỗ trợ các công cụ biên soạn Slang, LLVM và C++ Để hỗ trợ tốt hơn cho việc phát triển ứng dụng di động với NET và cũng là một phần của mối quan hệ hợp tác chiến lược giữa Microsoft va Xamarin, lập trình viên bây giờ có thể cài đặt trực tiếp Xamarin từ Visual Studio Thêm vào đó, đối với lập trình viên Web có nhu cầu phát triển các ứng dụng trên nền tảng đám mây dành riêng cho thiết bị di động Microsoft cũng đã phát hành phiên bản cuối của bộ công cụ Apache Cordova
Hình 2.14: Giới thiệu Microsoft Visual Studio 2015
Microsoft Visual Studio 2015 - công cụ lập trình mạnh mẽ
Microsoft Visual Studio 2015 được xem là một giải pháp toàn diện cho các lập trình viên để phát triển và quản lý ứng dụng trên nhiều thiết bị và nền tảng khác nhau Trong phiên bản mới nhất này sẽ mở rộng khả năng lập trình cho các nền tảng iOS, Android và Windows nhờ việc hỗ trợ các công cụ biên soạn Slang, LLVM và C++
Sinh viên thực hiện: Nguyễn Quang Sách 47
Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép các lập trình viên biên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) với hầu hết các ngôn ngữ lập trình, cung cấp một dịch vụ ngôn ngữ cụ thể tồn tại Ứng dụng này được xây dựng trong ngôn ngữ bao gồm C, C ++, C ++/ CLI (thông qua Visual C ++), VB.NET (thông qua Visual Basic NET), C # (thông qua Visual C #) và F # (như Visual Studio 2010)
Những tính năng chính của Microsoft Visual Studio 2015:
Microsoft Visual Studio giống như bất kỳ IDE khác, nó bao gồm một trình soạn thảo mã hỗ trợ làm nổi bật cú pháp và hoàn thành mã sử dụng Phần gợi ý khi viết code cho các biến, chức năng, phương pháp, các vòng lặp và LINQ Phần gợi ý khi viết code được hỗ trợ cho các ngôn ngữ cũng như đối với XML, Cascading style Sheets và JavaScript khi phát triển các trang Web và các ứng dụng Web
Thiết kế Windows Forms được sử dụng để xây dựng các ứng dụng GUI bằng Windows Forms Các lập trình viên có thể điều khiển hiển thị dữ liệu (như hộp, hộp danh sách, xem lưới ) có thể được liên kết với nguồn dữ liệu như cơ sở dữ liệu hoặc truy vấn Điều khiển Data-bound có thể được tạo ra bằng cách kéo các mục từ cửa sổ nguồn dữ liệu lên bề mặt thiết kế Các UI được liên kết với mã sử dụng một mô hình lập trình điều khiển theo sự kiện Các nhà thiết kế tạo ra hoặc là C # hay VB.NET cho các ứng dụng
WPF Designer đã được giới thiệu trong phiên bản Visual Studio 2008 Giống như các thiết kế Windows Forms nó hỗ trợ kéo và thả ẩn WPF Designer hỗ trợ tất cả các chức năng WPF bao gồm data binding, tự động quản lý cách bố trí và tạo mã XAML cho UI Các tập tin XAML tạo ra là tương thích với Microsoft Expression Design, sản phẩm thiết kế theo định hướng
Thiết kế và phát triển Web
Visual Studio cũng bao gồm một trình biên tập website và thiết kế cho phép các trang Web bằng cách kéo và thả các widget Nó được sử dụng để phát triển các ứng dụng ASP.NET, hỗ trợ HTML, CSS và JavaScript Nó sử dụng một mô hình code-
Sinh viên thực hiện: Nguyễn Quang Sách 48 behind để liên kết với mã ASP.NET Ngoài ra còn có hỗ trợ ASP.NET MVC cho công nghệ MVC là một download riêng và dự án ASP.NET Dynamic Data có sẵn từ Microsoft
Các thiết kế Class được sử dụng để biên soạn và chỉnh sửa các lớp sử dụng mô hình UML Ngoài ra, tính năng này các trình lập viên có thể tạo ra các mã vạch C # và VB.NET cho các lớp và phương pháp khác nhau.
Giới thiệu về Microsoft SQL Server 2014
Hình 2.15: Giới thiệu SQL Server 2014 SQL Server 2014 cho phép bạn tạo ra các ứng dụng quan trọng và các giải pháp để làm việc với công nghệ xử lý dữ liệu lớn bằng cách sử dụng một hiệu suất cao bộ nhớ OLTP, kho dữ liệu, thông tin kinh doanh và phân tích khối lượng công việc mà không cần phải mua thiết bị đắt tiền Trong SQL Server 2014 sử dụng một tập hợp chung của các công cụ cho việc triển khai cơ sở dữ liệu và quản lý tại địa phương và trong các đám mây Điều này đặt các công cụ cung cấp cho khách hàng với khả năng tận dụng lợi thế đầy đủ của các đám mây mà không cần bất kỳ đào tạo những kỹ năng mới
- Hiệu suất xử lý cao trong bộ nhớ: SQL Server 2014 cung cấp chức năng mới để xử lý các giao dịch trong bộ nhớ và cải thiện lưu trữ bổ sung cho công nghệ lưu trữ hiện có của chúng tôi và phân tích dữ liệu
- Tính sẵn sàng cao và khôi phục thảm họa: nhận thời gian hoạt động lên các tài sản quan trọng dự phòng lỗi nhanh, cải thiện khả năng quản lý và sử dụng
Sinh viên thực hiện: Nguyễn Quang Sách 49 tối ưu các nguồn tài nguyên phần cứng thông qua cải thiện AlwaysOn trong SQL Server 2014, các giải pháp tích hợp mới để sẵn sàng cao
- Khả năng mở rộng doanh nghiệp đối với các nút khác nhau tính toán, mạng, lưu trữ và Với SQL Server và Windows Server khả năng xử lý vật lý được mở rộng lên đến 640 bộ xử lý logic và máy ảo - lên đến 64 bộ xử lý SQL Server cũng sử dụng không gian đĩa và ảo hóa mạng để tối ưu hóa các nguồn lực Nó cũng có thể chạy trên Windows Server Core để giảm bề mặt tấn công
- Nền tảng nhất quán dữ liệu về tài nguyên địa phương, và trong đám mây Sử dụng các kiến thức và công cụ đã quen thuộc như Active Directory và SQL Server Management Studio, trong môi trường địa phương của SQL Server và Microsoft Azure Sử dụng linh hoạt để chạy SQL Server của khối lượng công việc trong các máy ảo Azure, cho phép kiểm soát toàn bộ máy ảo
- Truy cập dữ liệu trong các công cụ quen thuộc như Excel: tăng tốc có được thông tin có giá trị bằng cách sử dụng Microsoft Excel Thực hiện tìm kiếm, truy cập và cấu hình dữ liệu nội bộ và bên ngoài, bao gồm cả dữ liệu có cấu trúc và phi cấu trúc để phân tích bằng cách sử dụng Excel
- Khả năng mở rộng lưu trữ dữ liệu: tiến hành mở rộng quy mô để petabyte dữ liệu lưu trữ cho doanh nghiệp dữ liệu quan hệ sử dụng kiến trúc mở rộng tính toán song song lớn (MPP) sử dụng Analytics System Platform (APS) và nhận được khả năng tích hợp với các nguồn không quan hệ như Hadoop
- Dịch vụ chất lượng dữ liệu và hội nhập dịch vụ tích hợp bao gồm các nhiệm vụ hỗ trợ khai thác mở rộng, chuyển đổi và tải, cũng như khả năng làm việc như là một trường hợp duy nhất của SQL Server với việc cung cấp khả năng quản lý thích hợp
- Dễ dàng sử dụng các điều khiển: SQL Server Management Studio cho phép bạn quản lý tập trung cơ sở hạ tầng cơ sở dữ liệu, cả hai địa phương và trong các đám mây Thêm hỗ trợ cho Windows PowerShell 2.0 tự động hóa các nhiệm vụ quản lý và nâng cao Sys Prep làm cho nó dễ dàng để tạo ra các máy ảo
Sinh viên thực hiện: Nguyễn Quang Sách 50
PHÂN TÍCH VÀ XÂY DỰNG ỨNG DỤNG GHI CHÚ TRÊN DI ĐỘNG
Phân tích chức năng
Giao diện chính hiển thị các ImageView để cho người dùng chọn các chức năng như: tìm kiếm, thêm ghi chú
Giao diện trang chính: dùng để hiển thị danh sách các ghi chú đã lưu trữ trước đó
Giao diện trang thêm ghi chú: dùng để thêm mới một ghi chú với tên chú để và nội dung ghi chú
Giao diện trang tìm kiếm: có thể tìm kiếm ghi chú cần xem theo tên chủ đề ghi chú
Giao diện sửa ghi chú: Hiển thị nội dung chi tiết ghi chú cần xem Ở đây người sử dụng có thểm sửa lại tên chủ đề và ghi chú Có thể xóa đi ghi chú không còn sử dụng nữa
3.1.2 Các chức năng cụ thể
- Hiển thị tên chủ tên và ngày các ghi chú đã tạo
- Thêm, sửa, xóa tên chủ đề và nội dung ghi chú
- Tìm kiếm theo tên chủ đề các ghi chú cần xem
- Người sử dụng: là người sử dụng chính của ứng dụng, tạo ghi chú mới, xem, xóa, sửa ghi chú
Xác định các Use case:
Sinh viên thực hiện: Nguyễn Quang Sách 51
Vẽ biểu đồ Use Case
Sua ghi chu Hien thi ghi chu
Hình 3.1: Biểu đồ Use Case
[1] Biểu đồ tuần tự UC tìm kiếm
: Nguoisudung UI Tim kiem UI Tim kiem Control
3: Cung cap thong tin() 4: Kiem tra()
Hình 3.2: Biểu đồ tuần tự UC tìm kiếm
Sinh viên thực hiện: Nguyễn Quang Sách 52
[2] Biểu đồ cộng tác UC tìm kiếm
UI Tim kiem 1: 1: Nhap tu khoa()
Hình 3.3: Biểu đồ cộng tác UC tìm kiếm
[1] Biểu đồ tuần tự UC thêm ghi chú
: Nguoisudung UI Them ghi chu UI Them ghi chu UI Control UI Control Database Database
5: Them ghi chu moi() 6: Thong bao ket qua()
Hình 3.4: Biểu đồ tuần tự UC thêm ghi chú
Sinh viên thực hiện: Nguyễn Quang Sách 53
[2] Biểu đồ cộng tác UC thêm ghi chú
2: 2: Thuc hien() 6: 6: Thong bao ket qua()
3: 3: Cung cap thong tin() 5: 5: Them ghi chu moi()
Hình 3.5: Biểu đồ cộng tác UC thêm ghi chú
[1] Biểu đồ tuần tự UC sửa ghi chú
: Nguoisudung UI Sua ghi chu UI Sua ghi chu UI Control UI Control Database Database
3: Cung cap thong tin() 4: Kiem tra()
5: Luu thong tin() 6: Thong bao ket qua()
Hình 3.6: Biểu đồ tuần tự UC sửa ghi chú
Sinh viên thực hiện: Nguyễn Quang Sách 54
[2] Biểu đồ cộng tác UC sửa ghi chú
3: 3: Cung cap thong tin() 5: 5: Luu thong tin() 6: 6: Thong bao ket qua()
Hình 3.7: Biểu đồ cộng tác UC sửa ghi chú
[1] Biểu đồ tuần tự UC xóa ghi chú
: Nguoisudung UI Xoa ghi chu UI Xoa ghi chu UI Control UI Control Database Database
3: Cung cap thong tin() 4: Kiem tra()
5: Luu thong tin() 6: Thong bao ket qua()
Hình 3.8: Biểu đồ tuần tự UC xóa ghi chú
Sinh viên thực hiện: Nguyễn Quang Sách 55
[2] Biểu đồ cộng tác UC xóa ghi chú
3: 3: Cung cap thong tin() 5: 5: Luu thong tin() 6: 6: Thong bao ket qua()
Hình 3.9: Biểu đồ cộng tác UC xóa ghi chú
Xây dựng cơ sở dữ liệu bằng Entity framework code first using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace App078032016webapi.Models
{ public int Id { get; set; } public string TenChude { get; set; } public string Noidung { get; set; }
Sinh viên thực hiện: Nguyễn Quang Sách 56
Mô tả cơ sở dữ liệu
Bảng: Ghichus(Id,TenChude, Noidung, Ngaygio)
Khóa Tên trường Kiểu dữ liệu Độ rộng Mô tả Ràng buộc
PK Id Int 10 Mã hóa đơn Khoá chính
TenChude Nvarchar(255) 255 Tên chủ đề Not null Noidung Nvarchar(255) 255 Nội dung ghi chú Not null Ngaygio Datetime Ngày giờ tạo ghi chú Not null
3.1.6 Kiến trúc vật lý hệ thống
Hình 3.10: Biểu đồ thành phần Trong đó:
Gói Client: chứa thành phần Giao diện giao tiếp với người dùng
Gói Server: Bao gồm các thành phần:
- Thành phần web service: dùng để chứa các thành phần điều khiển cần thiết cho thành phần giao diện
- Thư viện lõi: đặc tả các thuộc tính, các phương thức để thao tác với các đối tượng trong CSDL
Sinh viên thực hiện: Nguyễn Quang Sách 57
Gói cơ sở dữ liệu: Chứa thành phần cơ sở dữ liệu của hệ thống
Biểu đồ triển khai mô tả cấu trúc hệ thống phần cứng khác nhau như: bộ xử lý, các thiết bị và các thành phần phần mềm thực hiện nên kiến trúc đó Nó mô tả cấu trúc của các đơn vị phần cứng và phần mềm chạy trên nó
Hình 3.11: Biểu đồ triển khai
Xây dựng ứng dụng ghi chú trên di động
3.2.1 Xây dựng Web service cho ứng dụng ghi chú
Xây dựng chức năng cho Web service
Bây giờ ta tiến hành viết các chức năng (viết trong file GhichuController.cs):
- HttpGet: Truy vấn thông tin
- HttpPost: Thêm mới thông tin
- HttpPut: Thay đổi thông tin
Trước tiên ta làm HttpGet:
// GET: api/Ghichus public IQueryable GetGhichus()
Sinh viên thực hiện: Nguyễn Quang Sách 58
[ResponseType(typeof(Ghichu))] public IHttpActionResult GetGhichu(int id)
Ghichu ghichu = db.Ghichus.Find(id); if (ghichu == null)
Tiếp theo ta viết HttpPost (thêm mới):
[ResponseType(typeof(Ghichu))] public IHttpActionResult PostGhichu(Ghichu ghichu)
} db.Ghichus.Add(ghichu); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = ghichu.Id }, ghichu); }
Để chỉnh sửa thông tin ta viết HttpPut:
[ResponseType(typeof(void))] public IHttpActionResult PutGhichu(int id, Ghichu ghichu)
} db.Entry(ghichu).State = EntityState.Modified; try
Sinh viên thực hiện: Nguyễn Quang Sách 59 db.SaveChanges();
Cuối cùng để xóa 1 ghi chú ta viết HttpDelete như sau:
[ResponseType(typeof(Ghichu))] public IHttpActionResult DeleteGhichu(int id)
Ghichu ghichu = db.Ghichus.Find(id); ghichu = db.Ghichus.SingleOrDefault(n => n.Id == id); if (ghichu == null)
} db.Ghichus.Remove(ghichu); db.SaveChanges(); return Ok(ghichu);
Sinh viên thực hiện: Nguyễn Quang Sách 60
Chạy ứng dụng thì HomeController của ứng dụng Web được gọi (khai báo trong file RouteConfig.cs) như hình sau:
Hình 3.12: Giao diện Web service
- Trên thành địa chỉ bạn để truy vấn tới GhichusController gõ đường dẫn sau 169.254.80.80:7110/api/Ghichus được như hình sau:
Hình 3.13: Giao diện Web service
Sinh viên thực hiện: Nguyễn Quang Sách 61
3.2.2 Xây dựng chức năng hiển thị danh sách các ghi chú
Giao diện trang hiển thị các ghi chú:
Hình 3.14: Giao diện trang chính ứng dụng Khi người sử dụng khởi động ứng dụng ghi chú sẽ thấy được giao diện như hình trên Trên cùng là thanh menu gồm các nút tìm kiếm, và thêm ghi chú Ở giữa trang hiển thị thông tin danh sách các ghi chú đã tạo bao gồm tên chủ đề và ngày giờ
Xây dựng giao diện bằng Xaml: