Công nghệ RESTful web services và hệ thống cổng kết nối với tổng đài tin nhắn cho các dịch vụ thông tin di động

95 2 0
  • Loading ...
1/95 trang

Thông tin tài liệu

Ngày đăng: 07/05/2020, 23:15

NGUYỄN THỊ LAN BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN CÔNG NGHỆ RESTFUL WEB SERVICES VÀ HỆ THỐNG CỔNG KẾT NỐI VỚI TỔNG ĐÀI TIN NHẮN CHO CÁC DỊCH VỤ THÔNG TIN DI ĐỘNG NGUYỄN THỊ LAN 2015 - 2017 HÀ NỘI - 2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI LUẬN VĂN THẠC SỸ CÔNG NGHỆ RESTFUL WEB SERVICES VÀ HỆ THỐNG CỔNG KẾT NỐI VỚI TỔNG ĐÀI TIN NHẮN CHO CÁC DỊCH VỤ THÔNG TIN DI ĐỘNG NGUYỄN THỊ LAN CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN MÃ SỐ: 60.48.02.018 NGƯỜI HƯỚNG DẪN KHOA HỌC: TS ĐINH TUẤN LONG HÀ NỘI - 2017 LỜI CAM ĐOAN Tôi xin cam đoan luận văn công trình nghiên cứu riêng cá nhân tơi, khơng chép tự nghiên cứu, đọc, dịch tài liệu, tổng hợp thực Nội dung lý thuyết trong luận văn tơi có sử dụng số tài liệu tham khảo trình bày phần tài liệu tham khảo Các số liệu, chương trình phần mềm kết luận văn trung thực chưa công bố cơng trình khác Hà Nội, ngày tháng năm 2017 Học viên thực Nguyễn Thị Lan i LỜI CẢM ƠN Lời đầu tiên, em xin gửi lời biết ơn sâu sắc đến TS Đinh Tuấn Long người tận tình hướng dẫn, bảo, giúp đỡ em suốt trình làm luận văn Em xin gửi lời cảm ơn đến thầy cô giảng dạy thầy cô Khoa Đào Tạo Sau Đại Học truyền đạt kiến thức giúp đỡ em suốt trình học Và cuối em xin gửi lời cảm ơn tới đồng nghiệp, gia đình bạn bè người ủng hộ, động viên tạo điều kiện giúp đỡ để em có kết ngày hơm Hà Nội, ngày tháng năm 2017 Học viên thực Nguyễn Thị Lan ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC .iii DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT vi DANH SÁCH HÌNH VẼ vii MỞ ĐẦU viii CHƯƠNG 1: DỊCH VỤ WEB SERVICE VÀ REST 1.1 Tổng quan dịch vụ web 1.2 Kiến trúc thành phần dịch vụ Web service 1.2.1 Khái niệm định dạng XML - eXtensible Markup Language 1.2.2 Mô tả giao thức sử dụng dịch vụ web SOAP - Simple Object Access Protocol 1.2.3 WSDL - Web Service Description Language 1.2.4 Khái niệm UDDI 1.3 XML-RPC 1.4 Khái niệm REST 10 1.5 Nguyên tắc REST 11 1.5.1 Tài nguyên 12 1.5.2 Khả đánh địa 13 1.5.3 Phi trạng thái 14 1.5.4 Kết nối 14 1.5.5 Giao diện đồng 15 1.5.6 Khả lưu cache 16 1.6 Dịch vụ web RESTful 17 iii 1.7 So sánh SOAP RESTful 18 KẾT LUẬN CHƯƠNG 21 CHƯƠNG 2: VẤN ĐỀ BẢO MẬT VỚI WEB SERVICE DỊCH VỤ RESTFUL 22 2.1 Vấn đề an toàn bảo mật Web Service 22 2.1.1 Bảo mật Web Service 22 2.1.2 Một số kỹ thuật Web Service Security 23 2.2 Vấn đề bảo mật với dịch vụ RESTful 29 2.3 Kiểu kiến trúc REST phù hợp với đệm web 30 2.4 Khóa mã hóa nội dung đối xứng 31 2.5 An toàn cho dịch vụ web 32 2.6 Xây dựng dịch vụ web 34 2.7 Tích hợp dịch vụ web theo chuẩn 35 2.8 Thảo luận giải pháp 37 2.9 Áp dụng bảo mật dịch vụ web RESTful 38 2.9.1 Bảo mật dịch vụ web RESTful cách cấu hình web.xml 38 2.9.2 Bảo mật dịch vụ web RESTful cách sử dụng SecurityContext 38 2.9.3 Bảo mật dịch vụ web RESTful cách sử dụng ký hiệu 39 KẾT LUẬN CHƯƠNG 40 CHƯƠNG 3: TÌM HIỂU HỆ THỐNG SMS GATEWAY 41 3.1 Tìm hiểu hệ thống SMSGatewate 41 3.1.1 Giới thiệu chung hệ thống 41 3.1.2 Nguyên tắc hoạt động hệ thống SMS 42 3.1.3 Hệ thống SMSGateway 42 3.1.4 Mục tiêu áp dụng REST 44 iv 3.1.5 Tài nguyên 45 3.1.6 Đánh địa 46 3.1.7 Phi trạng thái 46 3.1.8 Liên kết với 47 3.1.9 Giao diện đồng 47 3.1.10 Khả cache 49 3.2 Cấu trúc REST API 49 3.3 Các lược đồ 52 3.4 Thử nghiệm API với Google Chrome 64 3.5 Thử nghiệm API với giao diện ứng dụng 65 KẾT LUẬN CHƯƠNG 68 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 70 PHỤ LỤC 71 v DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT TỪ VIẾT TẮT TIẾNG ANH TIẾNG VIỆT REST Representational State Transfer Chuyển đổi trạng thái đại diện MO Mobile Originated Tin nhắn đến MT Mobile Terminated Tin nhắn SMS Short Message Service Tin nhắn XML Extensible Markup Langguage Ngôn ngữ đánh dấu mở rộng SOAP Simple Object Access Protocol Giao thức truy cập đối tượng đơn giản WSDL Web Service Description Langguage Ngôn ngữ mô tả dịch vụ UDDI Universal Description, Discovery Integration HTTP Hypertext Transfer Protocol Giao thức truyền tải nội dung siêu văn W3C World Wide Web Consortium Tổ chức World Wide Web RPC Remote Procedure Call Triệu gọi thủ tục từ xa JAX-RS Java API for RESTful Web Services Thư viện API cho dịch vụ web RESTful URI Uniform resource identifier Xác định tài nguyên đồng API Application programming interface Giao diện lập trình ứng dụng vi DANH SÁCH HÌNH VẼ Hình 1.1: Kiến trúc dịch vụ web Hình 1.2: Mơ tả hoạt động SOAP Hình 1.3: Cấu trúc thông điệp SOAP Hình 1.4: Cấu trúc WSDL Hình 1.5:Các thành phần WSDL Hình 1.6: Hai uri trỏ đến tài nguyên 12 Hình 1.7: Minh họa việc gửi địa 13 Hình 1.8: Sự liên kết máy khách 14 Hình 1.9: So sánh SOAP RESTful 19 Hình 3.1: Mơ hình hệ thống SMS Gateway 42 Hình 3.2: Nguyên tắc hoạt động hệ thống 42 Hình 3.3: Mơ hình hệ thống SMSGateway 43 Hình 3.4: Mơ hình REST API hệ thống admin 44 Hình 3.5: Mơ hình REST API hệ thống 50 Hình 3.6: Thiết kế cấu trúc REST API hệ thống 51 Hình 3.7: Lược đồ lấy danh sách MO 56 Hình 3.8: Lược đồ lấy MO 58 Hình 3.9: Lược đồ tạo MO 60 Hình 3.10: Lược đồ cập nhật MO 61 Hình 3.11: Lược đồ tìm kiếm MO 63 Hình 3.12: Kiểm tra chức POST liệu với Postman 64 Hình 3.13: Kiểm tra chức GET liệu với Postman 65 Hình 3.14: Giao diện demo chức POST 66 Hình 3.15: Kiểm tra chức GET liệu với ứng dụng demo 67 vii MỞ ĐẦU Lý chọn đề tài Ngày hệ thống Internet ngày phát triển, phần mềm sử dụng hệ thống Internet ngày nhiều Các phần mềm đa dạng dẫn đến có nhiều yêu cầu cần đáp ứng Một số phần mềm đòi hỏi lượng thơng tin lớn, liệu lớn… lưu liệu thiết bị sử dụng, số loại yêu cầu cập nhật realtime (theo thời gian thực) để đảm bảo đắn thông tin (chứng khốn, tiền tệ ), số phần mềm đòi hỏi xử lý nhanh mạnh, mà thiết bị lại khơng thể thực cấu hình khơng đủ Thơng thường, để sử dụng dịch vụ người dùng cần dùng trình duyệt, truy cập website thực Nhưng người dùng sử dụng giao diện mà nhà cung cấp thiết kết sẵn nhiên chúng không đáp ứng mong muốn người dùng Để giải vấn đề cần xây dựng ứng dụng có tính dịch vụ giao diện thân thiện Vì cần phải sử dụng dịch vụ riêng biệt để tương tác với hệ thống cung cấp dịch vụ nói Cơng nghệ hỗ trợ để giải toán RESTful, xin lựa chọn đề tài nghiên cứu là: “Công nghệ RESTful web services hệ thống cổng kết nối với tổng đài tin nhắn cho dịch vụ thông tin di động” Mục tiêu đối tượng nghiên cứu đề tài - Mục tiêu nghiên cứu + Hiểu nguyên tắc REST + Hiểu loại liệu điều khiển hệ thống dựa web + Đưa phương pháp xây dựng cách thức truy cập liệu sử dụng API REST + Tiến hành cài đặt API RESTful theo phương pháp + Cho thấy API vừa cài đặt dùng chung cho người máy - Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu: viii CustomerResource lớp java tường minh, ký hiệu @javax.ws.rs.Path đặt đầu lớp CustomerResource cho ta biết sử dụng dịch vụ JAX-RS, lớp java muốn nhận dịch vụ bắt buộc phải sử dụng ký hiệu Ký hiệu @Path có giá trị /customers, giá trị cho biết đường dẫn gốc dịch vụ customers, đường dẫn tuyệt đối dịch vụ http://shop.restfully.com đường dẫn dịch vụ http://shop.restfully.com/customers Trong lớp java định nghĩa phương thức khác nhau, thực chức công việc khác kết nới với lớp java khác hay kết nối sở liệu sử dụng tiện ích gói java Tạo customer Trong lớp CustomerResource định nghĩa phương thức để tạo customer sau: 72 Một yêu cầu dạng HTTP POST gửi đến địa http://shop.restfully.com/customers, phương thức createCustomer() tiếp nhận u cầu này, phân tích u cầu tham số, tạo đối tượng customer ghi vào sở liệu, phương thức trả mã 201(tạo thành công) ghi liệu thành công Để ràng buộc yêu cầu HTTP POST phương thức createCustomer(), ta sử dụng ký hiệu @javax.ws.rs.POST Ký hiệu @Path ta đặt lớp CustomerResource kết hợp với ký hiệu @POST tất yêu cầu dạng POST mà gửi đến URI/customers phương thức createCustomer() tiếp nhận xử lý Ký hiệu @javax.ws.rs.Consumes trường hợp áp dụng cho phương thức createCustomer() kiểu liệu cần phải tạo để trả lại cho người dùng theo yêu cầu, kiểu liệu khác, XML mã lỗi trả lại cho người dùng Nhận thông tin customer Ta xem xét việc nhận thơng tin có u cầu GET /customers/{id}, với {id} mã customer, hàm nhận thông tin customer thực thi sau: 73 Chúng ta ký hiệu phương thức getCustomer() với ký hiệu @javax.ws.rs.GET để ràng buộc toán tử GET HTTP với phương thức java Chúng ta sử dụng thêm ký hiệu @Path để xác định URI ràng buộc với phương thức Giá trị ký hiệu nối với giá trị ký hiệu @Path mà áp dụng lớp CustomerResource, sử dụng ký hiệu @javax.ws.rs.Produces phương thức getCustomer() JAXRS biết kiểu liệu trả cho máy khách application/xml GetCustomer() nhận đối số id, đối số xác định customer mà máy khách yêu cầu, sử dụng id để truy vấn sở liệu Ký hiệu @javax.ws.rs.PathParam thông báo cho JAX-RS biết tham số id truyền từ URI vào giá trị phải phù hợp với giá trị khai báo sau @PathParam, trường hợp tham số {id} lấy từ /customers/{id} Ví dụ URI yêu cầu GET đến http://shop.restfully.com/customers/333, giá trị xâu 333sẽ cắt từ URI, chuyển thành kiểu số gán vào giá trị id phương thức getCustomer() Cập nhật customer Khi máy khách gửi u cầu PUT /customers/{id} có nghĩa máy khách muốn cập nhật khách hàng có mã {id}, cài đặt phương thức cập nhật khách hàng sau: Trong phương thức updateCustomer() sử dụng ký hiệu @javax.ws.rs.PUT để ràng buộc yêu cầu HTTP PUT với phương thức Cũng giống phương thức getCustomer() updateCustomer() sử dụng ký hiệu 74 @Path nối với tham số {id} mà phù hợp với URI /customers/{id} Cũng giống getCustomer() sử dụng ký hiệu @PathParam để cắt id từ URI yêu cầu đến tham số thứ hai cho phép đọc XML 1.3 Các toán tử HTTP ánh xạ URI Trong phần vừa sử dụng ký hiệu @GET, @PUT, @POST, @DELETE để ràng buộc với phương thức java với toán tử HTTP Chúng ta sử dụng ký hiệu @Path để ràng buộc với phân đoạn URI tới phương thức java, ký hiệu áp dụng cách rõ ràng, tường minh, nhiên nhiều ký hiệu khác phức tạp tìm hiểu chi tiết ký hiệu phần Các tốn tử ràng buộc HTTP JAX-RS định nghĩa ký hiệu dùng để ánh xạ đặc biệt với toán tử HTTP: - @javax.ws.rs.GET - @javax.ws.rs.POST - @javax.ws.rs.PUT - @javax.ws.rs.DELETE - @javax.ws.rs.HEAD Chúng ta sử dụng sử dụng ký hiệu để tham chiếu với yêu cầu HTTP GET với phương thức java, chẳng hạn như: Ở có phương thức đơn giản getAllCustomers() Ký hiệu @GET thị cho JAX-RS biết phương thức java xử lý yêu cầu HTTP GET tới URI /customers Một năm ký hiệu khác sử dụng 75 để ràng buộc với toán tử HTTP khác Chú ý điều ta áp dụng ký hiệu HTTP cho phương thức java Một mã lỗi trả lại ứng dụng nhiều ký hiệu Ký hiệu @Path tùy chọn mở rộng Với ký hiệu @Path có nhiều hơn, tùy chọn phức tạp hơn, @Path có mơ tả phức tạp mức mà cho phép bạn xác định yêu cầu ràng buộc khác URI, @Path dùng đầu phương thức java để phân chia luồng yêu cầu tài nguyên ứng dụng Ký hiệu @Path định nghĩa JAX-RS để xác định tham số phù hợp URI đến yêu cầu HTTP Ký hiệu đặt đầu lớp java nơi lớp Ví dụ với lớp java đủ điều kiện để nhận yêu cầu HTTP lớp phải có mơ tả @Path(“/”), lớp kiểu gọi tài nguyên gốc Giá trị ký hiệu biểu thức mà mô tả URI liên quan đến nội dung gốc ứng dụng Để nhận yêu cầu, lớp java phải có ký hiệu mà HTTP cần nhận áp dụng @GET mà khơng u cầu ký hiệu @Path, ví dụ: Một yêu cầu HTTP GET tới /orders phân bổ tới phương thức getAllOrders(), @Path áp dụng lớp java, giá trị kết hợp với giá trị @Path lớp để xác định tài nguyên, ví dụ: 76 Bởi trường hợp tài ngun xác định thơng qua hàm getUnpaidOrders() với địa /orders/unpaid 1.4 Ánh xạ JAX-RS JAX-RS định nghĩa nhiều ký hiệu để lấy thơng tin từ yêu cầu HTTP ánh xạ vào phương thức java Điều mà quan tâm tham số URI đến, giá trị xâu truy vấn URI Máy khách gửi mã HTTP giá trị header giá trị cookie mà dịch vụ cần xử lý yêu cầu JAX-RS cho phép bạn nắm bắt thơng tin bạn cần thông qua ký hiệu ánh xạ APIs Các ký hiệu ánh xạ lấy thông tin - @javax.ws.rs.PathParam: ký hiệu cho phép bạn trích lọc giá trị từ tham số tạm đưa vào từ URI - @javax.ws.rs.QueryParam: ký hiệu cho phép bạn trích lọc giá trị từ tham số truy vấn vào từ URI - @javax.ws.rs.FormParam: ký hiệu cho phép bạn trích lọc giá trị từ liệu form gửi vào - @javax.ws.rs.MatrixParam: ký hiệu cho phép bạn trích lọc giá trị từ tham số dạng ma trận vào từ URI - @javax.ws.rs.HeaderParam: ký hiệu cho phép bạn trích lọc giá trị từ phần header yêu cầu HTTP - @javax.ws.rs.CookieParam: ký hiệu cho phép bạn trích lọc giá trị từ cookie HTTP gửi máy khách 77 Các ký hiệu thường sử dụng tham số phương thức truy cập tài nguyên Khi JAX-RS nhận u cầu HTTP tìm phương thức java mà phục vụ yêu cầu Nếu phương thức java có tham số chúng khai báo phía sau ký hiệu tương ứng, từ ký hiệu có nhiệm vụ trích lọc thông tin từ HTTP ánh xạ vào tham số thực phương thức java sử dụng Đối với yêu cầu tài nguyên, ta sử dụng ký hiệu ánh xạ vào trường liệu phương thức setter, chí tham số hàm constructor @PathParam Trong ví dụ hướng yêu cầu tài nguyên HTTP theo URI /customers/{id}, phương thức getCustomer() trích lọc mã ID từ URI cách sử dụng @PathParam, giá trị ký hiệu @PathParam “id” trùng với tham số đường dẫn {id}, tham số mà ta định nghĩa @Path phương thức getCustomer() {id} xâu mô tả yêu cầu URI, JAX-RS tự động chuyển sang giá trị nguyên trước phương thức getCustomer() sử dụng Nếu tham số string đường dẫn URI chuyển đổi thành kiểu nguyên lúc mã lỗi trả cho máy khách từ máy chủ Bạn truyền nhiều tham số vào đường dẫn URI vào lớp java bạn, ví dụ sử dụng firstname lastname để xác định customer lớp CustomerResource: 78 Ở có tham số URI {first} {last}, máy khách yêu cầu HTTP GET /customers/bill-burke, bill ánh xạ vào tham số firstname burke ánh xạ vào tham số lastname Đôi tên tham số URI lặp lặp lại biểu thức @Path, tham số truyền đầy đủ vào từ URI, tham số trước bị thay tham số sau, xác định mục tài nguyên Trong trường hợp ký hiệu @PathParam ln ln tham chiếu đến tham số cuối cùng, ví dụ: Từ ví dụ ta thấy yêu cầu GET /customers/123/address/456 tham số addressId phương thức getAddress() có giá trị 456 @QueryParam 79 @javax.ws.rs.QueryParam cho phép bạn ánh xạ biến dạng truy vấn riêng tới tham số java bạn Chẳng hạn muốn truy vấn customer từ sở liệu nhận tập customer từ sở liệu, lúc URI truy vấn có dạng: GET /customers?start=0&size=10 Tham số start số bắt đầu mà ta muốn truy vấn từ sở liệu size số lượng customer mà ta muốn nhận Khi dịch vụ JAX-RS thực thi sau: Ở sử dụng ký hiệu @QueryParam để ánh xạ vào tham số URI “start” “size” vào tham số java start size, tham số JAX-RS tự động chuyển đổi từ dạng xâu thành kiểu nguyên Đôi ta cần lấy tham số theo kiểu mảng, tức duyệt qua danh sách tham số lựa chọn tham số cần, interface javax.ws.rs.core.UriInfo cho phép bạn làm điều đó, interface có phương thức getQueryParameters() cho phép bạn lấy tồn tham số URI dạng truy vấn đến Bạn ánh xạ thể UriInfo sử dụng ký hiệu @javax.ws.rs.core.Context Sau ví vụ việc sử dụng lớp để ánh xạ ký hiệu @Context để nhận số tham số cần thiết URI đến: 80 Một số code áp dụng bảo mật dịch vụ Web RESTful 2.1 Bảo mật dịch vụ web RESTful cách cấu hình web.xml với giá trị CONFIDENTIAL RestServlet com.sun.jersey.spi.container.servlet.ServletContainer RestServlet /* Orders /orders GET POST 81 admin BASIC default admin 2.2 Bảo mật dịch vụ web RESTful cách sử dụng SecurityContext package samples.helloworld; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.SecurityContext; import javax.ws.rs.core.Context; @Path("/stateless") @Stateless(name = "JaxRSStatelessEJB") public class StlsEJBApp { @GET @Produces("text/plain;charset=UTF-8") @Path("/hello") public String sayHello(@Context SecurityContext sc) { 82 if (sc.isUserInRole("admin")) return "Hello World!"; throw new SecurityException("User is unauthorized."); } 2.3 Bảo mật dịch vụ web RESTful cách sử dụng ký hiệu package samples.helloworld; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.annotation.Security.RolesAllowed; @Path("/helloworld") @RolesAllowed({"ADMIN", "ORG1"}) public class helloWorld { @GET @Path("sayHello") @Produces("text/plain") @RolesAllows("ADMIN") public String sayHello() { return "Hello World!"; } } Một số đoạn code mô tả thực thi API GET Hình 3.1 đoạn code chương trình xử lý vấn để GET người dùng yêu cầu từ URI: http://localhost:8080/RFMOReceiver/restful/todos/MT?user_id=84932347686, sau dispatcher xử xý triệu gọi phương thức phù hợp với yêu cầu GetMTByID() trả kết danh sách MT thành công, danh sách rỗng thất bại 83 Nếu thành công kết trả danh sách MT dạng liệu XML hình 3.2: 84 Hình đoạn code chương trình xử lý vấn đề GET mà ứng dụng yêu cầu trả lại kết kiểu liệu JSON Và kết trả dạng liệu JSON hình 3.4: 85 POST Hình sau đoạn code chương trình xử lý vấn đề POST người dùng yêu cầu từ form liệu, sau dispatcher xử lý triệu gọi phương thức phù hợp với yêu cầu messageReceiver() trả kết thành công, -1 thất bại 86 ...BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI LUẬN VĂN THẠC SỸ CÔNG NGHỆ RESTFUL WEB SERVICES VÀ HỆ THỐNG CỔNG KẾT NỐI VỚI TỔNG ĐÀI TIN NHẮN CHO CÁC DỊCH VỤ THÔNG TIN DI ĐỘNG NGUYỄN THỊ LAN... tác với hệ thống cung cấp dịch vụ nói Cơng nghệ hỗ trợ để giải tốn RESTful, tơi xin lựa chọn đề tài nghiên cứu là: Công nghệ RESTful web services hệ thống cổng kết nối với tổng đài tin nhắn cho. .. thành phần dịch vụ Web service Trong lĩnh vực công nghệ thơng tin cơng nghệ dịch vụ web khơng phải công nghệ mới, mà công nghệ đời dựa tảng công nghệ sẵn có trước Nó kết hợp ứng dụng dựa web sử dụng
- Xem thêm -

Xem thêm: Công nghệ RESTful web services và hệ thống cổng kết nối với tổng đài tin nhắn cho các dịch vụ thông tin di động , Công nghệ RESTful web services và hệ thống cổng kết nối với tổng đài tin nhắn cho các dịch vụ thông tin di động

Gợi ý tài liệu liên quan cho bạn