1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Tích hợp ứng dụng trên Web qua XML (Nghề Lập trình máy tính): Phần 2 - Tổng cục dạy nghề

30 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Giáo trình Tích hợp ứng dụng trên Web qua XML (Nghề Lập trình máy tính): Phần 2 cung cấp cho người đọc những kiến thức như chủ đề phát triển ứng dụng tích hợp trên nhiều nến tảng, trên các hệ thông tin hiện hành và trên các dòng thiết bị khác nhau và liên hệ giữa XML và .net. Mời các bạn tham khảo!

BÀI TÊN BÀI : CÁC CHỦ ĐỂ PHÁ TRIỂN ỨNG DỤNG TÍCH HỢP: TRÊN NHIỀU NỀN TẢNG, TRÊN CÁC HỆ THỐNG THƠNG TIN HIỆN HÀNH VÀ TRÊN CÁC DỊNG THIẾT BỊ KHÁC Mã : ITPRG3_15.03 Giới thiệu : Trong nội dung tập trung nghiên cứu nội dung phát triển ứng dụng đa tảng đa thiết bị Mục tiêu thực hiện: Học xong học viên có khả năng: - Tập trung theo hướng quan trọng: Phát triển ứng dụng tích hợp nhiều tảng; hệ thông tin hoạt động dịng thiết bị khai thác thơng tin khác Nội dung chính: I Cơ chế xác lập ứng dụng liên quan đến nhiều tảng Như hệ tính tốn sống mạng, nhu cầu (cho) hệ thống để giao tiếp với lẫn mức ứng dụng Những giao thức mạng TCP UDP cung cấp cách cho lập trình viên để xây dựng trình khách/chủ truyền thơng từ tương đương tới tương đương Lập trình giao thức trực tiếp, nhiên, nhiệm vụ đe dọa, lớp xuất nghi thức mà làm dễ nhiệm vụ việc viết ứng dụng phân tán Trong mục tổng quan riêng biệt lớp mà hỗ trợ phát triển ứng dụng đa hệ, bao gồm UNIX Socket, Mơi trường tính tốn phân tán (DCE) CORBA, Java RMI, Và DCOM UNIX Sockets UNIX Socket tiêu chuẩn dựa vào đỉnh giao thức cung cấp giao diện cho lập trình viên để viết thành phần truyền thơng ứng dụng khách/chủ mức trừu tượng Một lập trình viên rõ lỗ hướng kết nối kết nối bền bỉ cần, lỗ khơng có kết nối cho việc gửi thông điệp, lỗ thực chức với nghi thức nằm bên Thậm chí với UNIX Socket, nhiên, nhiều vấn đề lại cho thảo chương viên ứng dụng Dù UNIX Socket giới thiệu lớp trừu tượng hóa nghi thức nằm bên dưới, giao diện lỗ yêu cầu mức thấp lập trình UNIX socket làm việc với hệ thống UNIX UNIX socket (và thi hành liên quan khác) cung cấp khả chuyển đổi liệu thô, thiếu khả triệu gọi thủ tục từ xa hay chức Bất kỳ xử lý dòng liệu đầu vào phải buộc dây vào trình khách Socket không cung cấp khả năng, chẳng hạn, chuyển phương thức hay tham số hàm hệ thống Môi trường tính tốn phân tán Trong UNIX Socket cung cấp khả qua nguyên khối liệu chảy hệ thống, người thiết kế hệ thống phân tán cần chế độc lập tảng mà hỗ trợ gọi thủ tục từ xa thực tế Một nỗ lực để cung cấp khả RPC biết mơi trường tính tốn phân tán, hay DCE Mơi trường cung cấp sở hạ tầng độc lập lý thuyết tảng cho thi hành quản lý ứng dụng phân tán Nó cung cấp thư mục dịch vụ bảo mật, hệ tập tin khả RPC phân tán (Nó chí cung cấp chế đồng hóa thời gian cho thành viên " tế bào ") DCE xác xử lý xếp RPC liệu giữ tới định dạng liệu hệ điều hành gọi nhận DCE phụ thuộc tảng phạm vi mà cách tương đối phần mềm khách hàng phạm vị rộng tồn cho tảng đích Để can dự vào dịch vụ tảng phải định hình ( Lần nữa, Một thao tác tiềm tàng phức tạp) Vào tế bào 239 DCE Sau thi hành DCE cho phép người sử dụng định hình dịch vụ định, chế RPC Tuy nhiên, đau đầu việc mua, định hình, bảo trì tế bào, thiếu tính sẵn sàng chung phần mềm khách hàng, ngăn ngừa DCE từ trở thành Một giải pháp đa dụng cho tính tốn phân tán CORBA CORBA cung cấp sở hạ tầng độc lập tảng ngôn ngữ cho việc xây dựng ứng dụng phân tán kéo theo gọi thủ tục từ xa từ hệ thống khách hàng Những đối tượng phân tán có hạt nhỏ CORBA bên mạng tính tốn hỗn tạp Những ứng dụng đồng nhận sử dụng thành phần phần mềm kinh doanh sẵn có qua mạng tồn cầu Nhữn thành phần tiêu chuẩn sau CORBA, nhóm Quản lý Đối tượng (OMG), trước tin tưởng số lớn ORB tồn Internet Những đối tượng CORBA độc lập ngôn ngữ Những máy chủ CORBA giới thiệu giao diện họ dạng IDL, định nghĩa phương thức hỗ trợ người phục vụ CORBA lý lẽ kỳ vọng tới phương thức Những chương trình Khách hàng tương tác với đối tượng qua mẩu giao diện mà thực đối tượng phương pháp từ xa máy tiêu khiển phần mềm ORB đứng điểm gửi tất truyền thông intermachine Những ORB xung quanh Internet chia sẻ thơng tin đối tượng chúng quản lý IIOP phát triển cho mục đích Java RMI Giống CORBA, hệ thống RMI Java cho phép đối tượng phân tán ngang qua mạng Khơng giống CORBA, Java RMI chun chở toàn lớp, phần mềm thứ, ngang qua ranh giới ứng dụng (qua RMI giao thức IIOP) Truyền thông tất ứng dụng Java phải chạy Máy ảo Java Điều cho phép ứng dụng Java phân tán để an tồn tải xuống dịng byte biên dịch thực chúng cách cục DCOM DCOM cài đặt Windows môi trường phát triển ứng dụng- phân tán dựa vào COM Microsoft DCOM sử dụng RPC DCE đối tượng từ xa nằm bên dưới- chế hỗ trợ Khơng giống CORBA, đối tượng DCOM giới thiệu nhiều giao diện, mà cung cấp nhiều hành vi đối tượng Một trình khách COM triệu gọi đối tượng COM việc thu nhận trỏ trỏ tới giao diện đối tượng Trình khách triệu gọi phương thức thơng qua qua trỏ đó; từ viễn cảnh trình khách, đối tượng xuất cư trú vùng địa khách hàng Vì DCOM chặt chẽ tổng hợp với hệ điều hành windows, DCOM cung cấp giải pháp cho ứng dụng phân tán Bảng so sánh sau cho thấy rõ hơn: Kiểu Soc kets DCE CO RBA Java RMI DC OM Ngôn ngữ Sự phức tạp Chi hỗ trợ cấu hình phí Nền tảng UNIX available) (variants C Cao UNIX C, C++ Cao UNIX, Windows Any Trung bình Chỉ Java Thấp Rất nhiều Thấp Java Machine) (Java Windows Virtual 240 Khôn g Cao Trung bình Khơn g Khơn g II Xây dựng ứng dụng liên quan đến nhiều tảng dựa vào Web service Xây dựng máy chủ Trong nội dung này, bàn luận công cụ sử dụng để tạo máy chủ Visual Studio NET Chúng ta có thể, mặt lý thuyết, tạo phương thức HTTP GET POST hay tập tin SOAP để chuyển yêu cầu qua lại máy chủ máy khách Tuy nhiên, mơi trường phát triển hỗ trợ bạn việc làm nhiều nhiệm vụ tự động không? Nếu bạn phát triển tảng Windows, bạn vẽ khả mạnh Microsoft Visual Studio.NET việc xây dựng ứng dụng dịch vụ web XML Visual Sutdio NET cung cấp ngôn ngữ phát triển web đại, bao gồm VBScript, JScript, Visual Basic, C, C++, Visual C++, C#, Perl, Python, COBOL, PASCAL Scheme Nó cung cấp mơi trường tích hợp cho việc phá triển dịch vụ web XML tương ứng cho người phát triển từ tảng phát triển khác Cuối cùng, Visual Studio NET cung cấp phương thức phát triển nhanh cho giao diện người sử dụng Có khả kiểm xem giám sát thông điệp SOAP trình khách máy chủ UNIX Linux Những hệ điều hành khách nhà cung cấp ngôn ngữ qui định toolkits môi trường phát triển để tạo dịch vụ web tảng khác, bao gồm UNIX hệ điều hành Linux Những tùy chọn bao gồm dịch vụ Web IBM Toolkit Java Enterprise Edition ( J2EE) J2EE cung cấp vài API để hỗ trợ cho người phát triển ứng dụng dịch vụ Web bảng sau: Diễn giải API Cung cấp khả cho hai xử lý dựa (DOM) hay xử lý kiện (SAX) liệu XML API cung cấp hỗ trợ XMLTs giúp chuyển đổi tài liệu XML chúng JAXP: Java API ta vào từ vựng XML Bạn có lẽ muốn làm điều để, for XML processing chẳng hạn, thay đổi liệu XML tới HTML cho hình duyệt web, hay rút thành phần tài liệu XML áp dụng gói WML cho hình ảnh thiết bị vơ tuyến JAXB: Java API for mapping XML documents to Java classes Cung cấp khả để tạo lớp Java từ liệu XML XML DTD hay giản đồ Những lớp tự động cung cấp khả để làm cho có hiệu lực, xếp không xếp liệu XML từ thể tài liệu XML Từ tài liệu XML bạn tạo đối tượng Java để xử lý người dịch vụ web Cung cấp khả để tạo tài liệu SOAP để chuyển JAXM: Java thông điệp hệ thống định dạng SOAP API quản lý API for messaging chi tiết cú pháp SOAP nhận thông báo JAXR: API for registries Java Hỗ trợ truy nhập đăng ký kinh doanh dựa internet JAXR XML API cung cấp khả để đăng ký dịch vụ web với nơi đăng ký UDDI.org Những hỗ trợ phát hành RPCs yêu cầu tài JAX-RPC: Java liệu SOAP kết JAX- RPC xử lý chi tiết xếp API for issuing không xếp vào tài liệu SOAP JAX-RPC JAX- RPC RPCs via XML API thơng dụng JAXM Nó khơng cung cấp tất khả documents JAXM, Việc bao gồm thông điệp không đồng bộ, thông 241 API Diễn giải điệp đa phần, xác minh giao hàng Các tảng khác Về mặt lý thuyết, thiết bị tính tốn mà chấp nhận yêu cầu HTTP đầu vào, thao tác liệu đầu vào phương thức, kết vào tài liệu XML, chuyển tài liệu XML kết tới khách hàng qua HTTP dùng làm dịch vụ Web Những biến chọn thực nhiệm vụ tảng phi Windows hay phi UNIX bao gồm chất dịch vụ Web tính sẵn sàng công cụ để hỗ trợ cung cấp sở hạ tầng cho dịch vụ web Chẳng hạn, tối thiểu tảng cần phải hỗ trợ phân tích XML để tạo hồ sơ kết XML Những tảng Thay có hỗ trợ J2EE có lẽ ứng cử viên hợp lý cho máy chủ dịch vụ web Cách khác, triển khai máy chủ dịch vụ web trên, Chẳng hạn, thiết bị cầm tay, có lẽ tập phát triển ứng dụng khơng truyền thống, thời gian tới Xây dựng trình khác Xây dựng trình khách cho ứng dụng phân tán chưa dễ dàng Bởi dịch vụ web dựa vào tiêu chuẩn mở HTTP Và XML, Mọi thứ cực tiểu yêu cầu khách hàng dịch vụ Web khả để tạo chuyển qua tới người phục vụ HTTP GET hay POST tài liệu yêu cầu hay XML SOAP Khả thực đa dạng cách Đơn giản nhất, khách hàng mà hỗ trợ duyệt Mạng thích hợp HTML 3.2- nghi thức HTTP tham gia dịch vụ mạng khách hàng Thậm chí khách hàng mà khơng phải duyệt thích hợp hỗ trợ HTML 3.2- sử dụng hỗ trợ ứng dụng gắn sẵn riêng để tạo điều kiện cần thiết hay hồ sơ XML cho truyền qua HTTP tới máy chủ dịch vụ Web Nền tảng Window Visual Studio NEt cung cấp mơi trường phát triển hồn chỉnh để xây dựng, triển khai kiểm tra dịch vụ Weg XML Chúng ta phát triển trình chủ trình khách trực tiếp ứng dụng Các trình khách chạy Windows NT, Windows 2000 hay Windows XP HTML hay web form Trên tảng Windows, Visual Studio NET lưu web for DLL UNIX Linux Chúng ta xây dựng trực tiếp trình khách dịch vụ web HTML 3.2 từ Visual studio NET Bởi giao diện khách hàng tới người phục vụ dịch vụ Web phương thức HTTP GET hay POST hay XML hồ sơ, thiết kế trình khách dịch vụ web riêng Ngơn ngữ mà bạn sử dụng mẫu dạng trình khách dịch vụ web khơng thích hợp miễn trình khách xếp khổ liệu ngữ hồ sơ XML, gởi liệu qua HTTP, nhận tài liệu kết thông qua HTTP xếp lại tập kết Các tảng khác Một lần nữa, Visual Studio NET cung cấp khả để phát triển trình khách dịch vụ web tảng khác III Tích hợp hệ thơng tin có Trong nội dung này, bàn luận chướng ngại tích hợp hệ thống thơng tin có Tài liệu Sự thật khơng may hệ thống thường cỏi việc lấy tài liệu, rời bỏ người phát triển người doanh nghiệp giống miễn cưỡng để làm thay đổi Mọi người sợ hãi mà gãy hệ thống cách Để thêm vào vấn đề, người phát triển hay chủ nhân (của) hệ thống có lẽ khơng sẵn sàng để làm việc với đội lý bình thường bảo mật bên 242 Mễn cưỡng hay khơng có khả để thay đổi hệ thống lý sơ cấp hợp xem xét cần thiết chỗ Khơng có trợ giúp chuyên gia tài liệu, dự án hợp phải đối mặt chết khốn khổ Giao diện Giao diện tham chiếu tới trình việc nói tới Và điều khiển hệ thống thừa kế từ hệ thống khác Nếu may mắn, hệ thống thừa kế thiết kế với hợp tâm trí, hệ điều khiển Thông tin Khách hàng IBM (CICS), thì, giao diện cần phải cách tương đối giải phóng đau đớn Tính tương thích khó khăn tiêu biểu với nhiều hệ thống thừa kế, nhiên, việc đưa giao diện tới chức mức nhiệm vụ khó khăn Phụ thuộc vào liệu có phải hệ thống thừa kế câu hỏi thiết kế với tính kéo dài tâm trí, giao diện cần nhiều Tính Sẵn sàng Các ứng dụng web phải hoạt động 24 này, ngày tuần Những hệ thống thừa kế chúng ta, nhiên, có lẽ khơng có phát triển với thiếu ràng buộc tâm trí Những hệ thống máy tính lớn , ví dụ, thiết kế thường xuyên với yêu cầu đóng cửa bảo trì tuần hồn ứng dụng làm Khi hệ thống thừa kế khơng có sẵn? Nó xử lý khơng phải thân có khả để truy nhập liệu cần vận hành nào? Nó cần phải duyên dáng báo động người sử dụng hoàn cảnh nào? Những câu hỏi cần trả lời xây dựng ứng dụng chúng ta, danh sách câu hỏi dài nhiều nói ứng dụng đặc biệt Chúng ta phải biết hiểu tất liên quan tính sẵn sàng hệ thống thừa kế, hay nhiều khả dĩ, định để sử dụng Bất kỳ hệ thống phát triển ý định thừa kế hạn chế Tính Chuyển đổi Với nhiều dự án tích hợp thừa có lẽ thách thức lớn đơn Đa số hệ thống thừa kế thiết kế để xử lý âm lượng lớn giao dịch thời gian thực mà hệ thống hôm phải đối mặt Những hệ thống thừa kế thường thiết kế hỗ trợ vài kiểu in mà có truy nhập tới một nhúm máy Nhiều hệ thống thừa kế hướng lơ khơng có khả để xử lý câu hỏi giao dịch trực tuyến Nhiều ứng dụng, thứ cách đặc biệt Web, thân xử lý thể tích lớn khơng thể đốn trước trực tuyến giao dịch yêu cầu IV Tạo giao diện hệ thống hành Chúng ta tạo giao diện với hệ thống thừa kế sử dụng năm cách tiếp cận Chúng khái quát hóa để đại diện cho vùng mà người phát triển người quản lý tập trung vào thử dùng hệ thống cũ cho cơng việc Đó là: Mức liệu (Data-level) Mức xử lý (Process-level) Mức API (API-level) Mức UI (UI-level) Trung gian (Middleware) Giao diện múc liệu Những sở liệu kiểu tiêu điểm giao diện việc truy nhập kế thừa hay tập tin trực tiếp cấp liệu Đa số chức ấn định ứng dụng phạm vi Nếu liệu lưu giữ sở liệu SQL trực tiếp truy nhập chúng sử dụng truy vấn SQL thích hợp Một số hệ thống RDBM, phiên cũ hơn Novell Btrieve, không cung cấp SQL, nhiên đầy đủ, API truy cập tới sở liệu họ Những hệ thống khác cung cấp chế nhớ liệu sở hữu thường có nhập liệu chức xuất thiết kế đặc biệt cho giao diện Truyền thông với hệ thống thực 243 xuyên qua trao đổi tập tin khuôn dạng đặc biệt Thường chúng sử dụng để triệu gọi vài biểu mẫu tập tin văn không giới hạn Một vài công ty khác, chẳng hạn Oracle Microsoft cung cấp lưu trữ XML sở liệu họ The vấn đề với giao diện mức liệu tăng ghép nối liệu ứng dụng, tăng sức nặng bảo trì Chúng ta có lẽ khơng có khả truy nhập hợp thức hóa liệu quy tắc doanh nghiệp khác quan trọng mà cố hữu ứng dụng mà phương thức việc truy nhập thơng tin Cuối chi phí nhân tố giới hạn, cách đặc biệt bạn cần thuê sản phẩm trung gian Giao diện mức xử lý Các giải pháp được viết cho số mơi trường máy tính lớn, cách đặc biệt chúng viết COBOL, phát triển loạt chương trình thực thi riêng rẽ Giao diện với hệ thống thông thường yêu cầu chuẩn bị môi trường triệu gọi, gọi chương trình yêu cầu, mang xử lý liệu trở lại Trong cơng thức giao diện mức q trình cung cấp phương pháp chung việc liệu chôn vùi thử giải nén thông tin đơn giản Đây ví dụ giao diện mức xử lý làm việc với CICS, cung cấp Giao diện Gọi Ngoài (External Call Interface-ECI) phép không CICS khách hàng để kéo theo kiểm sốt lập trình CICS ECI bao gồm an toàn hỗ trợ CICS giao dịch và, không giống môi trường RPC, ECI không yêu cầu mẩu (stubs) sử dụng ngôn ngữ định nghĩa giao diện (Interface Definition Language - IDL) dễ dàng để sử dụng Giao diện mức API Một kiểu giao diện khác với hệ thống thừa kế cung cấp API truy nhập chức ứng dụng Nhiều gói, SAP PeopleSoft, Bao gồm C/ C++ hay chí API tảng COM để truy nhập hệ thống họ Tuy nhiên, API hạn chế phạm vi, ngăn ngừa truy nhập tới chức bạn cần Chúng truy cập theo kiểu cách mà khơng mong muốn, chẳng hạn tuyết trình khơng an tồn Nếu đội có tập kỹ yêu cầu, API cung cấp phương tiện mạnh giao diện tới hệ thống thừa kế Tuy nhiên, API có lẽ hạn chế phạm vi, cản trở bạn truy nhập chức bạn cần Họ có lẽ khơng xử kiểu cách địi hỏi Giao diện mức giao diện người sử dụng (Mức UI) Truy cập ứng dụng thừa kế xuyên qua UIs, trình gọi nạo ảnh, tham chiếu tới tương tác với phần mềm thừa kế thực việc sử dụng mô phím nhấn nhập liệu việc xử lý việc chụp hình đầu Kỹ thuật sử dụng với "màu xanh lục" cũ thiết bị đầu cuối hệ thống thường xuyên số phương pháp cuối người sử dụng để hợp với hệ thống Mới kỹ thuật sử dụng chỗ tập hợp Web để giới thiệu liệu tài hay kiểu khác thông tin Những chỗ xây dựng nội dung họ việc kết hợp liệu rút từ việc phân tích trang HTML khơi phục từ trang web khác Trung gian (Middleware) Vài nhà cung cấp máy tính lớn vật thứ ba công ty cung cấp giải pháp mà cho phép ứng dụng truy nhập liệu xuyên qua sản phẩm trung gian Những sản phẩm ngồi hệ thống hệ thống kế thừa chúng ta, che giấu chi tiết phức tạp giao diện thừa kế từ Những sản phẩm trung gian khác thay đổi nhiều chức Một số sản phẩm đơn giản cung cấp chế cho liệu để có từ nơi sang nơi khác, chẳng hạn RPC, Những hệ thống thông điệp, hệ thống đối tượng phân tán Những đề nghị phần trung phức tạp hơn, nhiên, giúp đỡ quản lý lơgic ứng dụng tài nguyên Những đa số công cụ linh hoạt trực tiếp hỗ trợ chức ứng dụng quan 244 trọng giao dịch thẻ tín dụng cho thương mại điện tử Bởi việc thuê caching công nghệ chuyển đổi liệu không đồng phức tạp, sản phẩm cấp cao cung cấp truy nhập tới liệu thừa kế Nếu hỗ trợ hệ thống thừa kế đặc biệt cho phép, sử dụng sản phẩm trung gian đơn giản hóa nhiệm vụ hợp gia tài Downside sản phẩm này, đặc biệt thứ cấp cao, không rẻ Họ yêu cầu tài nguyên phần cứng quan tâm hành thêm mà thêm vào chi phí Bạn phải định liệu có phải việc sử dụng sản phẩm trung gian chi phí có hiệu cho nhu cầu hợp đặc biệt s V Kiến trúc hệ ứng dụng tích hợp Điều kiện hạt nhân Ba điều kiện cần phải sử dụng chuẩn bị cho hệ thống thừa kế hợp Bằng việc làm cho hệ thống tiếp cận xuyên qua nhiều truyền thông chế trước, lỗi thời cơng nghệ thu nhỏ Danh sách sau phác thảo ba vùng này: Ứng dụng cần phải có khả hỗ trợ nhiều thủ tục truyền tin HTTP, IIOP, SOAP, khác Trong thi hành tức thời hỗ trợ có một, hook cần phải xây dựng bên để mở rộng tương lai Ngoại lệ xây dựng cho hợp trước để di trú liệu vào hệ thống Giao diện thông điệp phải không phụ thuộc giao thức qn Mơ hình liệu sử dụng thông điệp định dạng phải định nghĩa điều khoản vận chuyển kinh doanh tổ chức Cách tiếp cận Phân tầng Một ứng dụng thừa kế chuẩn bị cho hợp xuyên qua thi hành mẫu kiến trúc phân tầng mà kể tính linh hoạt cực đại Mẫu bao gồm: Lớp vận chuyển lớp ngồi chiụ trách nhiệm tiếp nhận trở lại XML- thông báo định hình xuyên qua đưa cho chế truyền thông Lớp dịch vụ lớp cung cấp chức cho yêu cầu định dạng phiên dịch XML, triệu gọi thao tác thích hợp hệ thống thừa kế, định dạng đáp lại vào XML Một lớp tiếp hợp thừa kế lớp chiụ trách nhiệm giao diện cho hệ thống thừa kế đại diện cho mơ hình liệu Lớp vận chuyển: Lớp vận chuyển, đề cập, cho phép trình khách ứng dụng thừa kế để sử dụng giao thức chế khác nhau, HTTP, CORBA (IIOP), Hay DCOM, triệu gọi dịch vụ để xác định giao diện tới ứng dụng Những lớp lớp thẳng thắn vai trị sơ cấp chúng cung cấp cầu truyền thơng tới dịch vụ thực tế Trách nhiệm lớp làm cho phần lại hệ thống độc lập giao thức transport_layer.aspx: Sample Transport Layer for HTTP protocol /* string used to hold string representation of our service request XML message */ String xmlStr = ""; /* get names of all form variables into local array */ String names[] = Request.Form.AllKeys; /* loop through form variable to build request XML message */ foreach ( name in names ) { /* if form variable is called "service", use its value to build the ServiceName element */ if ( name == "service" ) { 245 xmlStr += "" + name + ""; } /* othewise use this form variable's name and value to build a element */ else { xmlStr += "" + Request.Form[ name ] + ""; } } xmlStr += "" /* create XmlDocument using the reqXML string */ XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml( xmlStr ); /* instantiate our ServiceLayer object */ ServiceLayer service = new ServiceLayer(); /* invoke the perform() method with our request XML message */ XmlDocument retXmlDoc = service.perform( xmlDoc ); /* output the response XML message to the client tell browser/client that we are outputting XML */ Response.ContextType = "text/xml" /* output the response XML message */ Response.Write( retXmlDoc.outerXml ); Trong cài đặt lớp vận chuyển, xây dựng thông điệp XML yêu cầu từ biến HTTP POST Chúng ta khởi tạo thể của) đối tượng ServiceLayer phát triển service_layer.cs triệu gọi phương thức perform với thơng điệp XML u cầu tham số Cuối thứ bỏ tới thị thơng điệp XML đáp trả đến trình khách Lớp dịch vụ Lớp thứ hai định nghĩa dịch vụ hệ thống triệu gọi liệu trả lại dịch vụ định dạng Những yêu cầu có định dạng XML đẩy tới tới lớp qua lớp vận chuyển, lớp lớp phân tích yêu cầu giao dịch triệu gọi phép toán hệ thống kế thừa Những phương thức trưng bày lớp tích hợp kế thừa tham số dùng việc triệu gọi phương thức cần phải dùng để thiết kế định dạng thông điệp XML dùng lớp Khi thiết kế định dạng thông báo này, giữ cho chắn ngang qua dịch vụ khác triệu gọi Chẳng hạn, ví dụ sau trưng bày ý tưởng (ServiceName sử dụng để định dịch vụ kế thừa triệu gọi, Param giữ tên giá trị tham số) sample_request.xml: Sample service request XML message Order foobar 7843221 5 Tập tin sau ví dụ cài đặt lớp dịch vụ sử dụng thông điệp XML định nghĩa sample_request.xml để triệu gọi dịch vụ kế thừa: service_layer.cs: Sample Service Layer using System.Xml; public class ServiceLayer { public XmlDocument perform( XmlDocument params ) 246 { /* our Legacy Layer object */ Legacy legacy = new Legacy(); /* retrieve name of the legacy service to invoke */ DocumentNavigator nav = new DocumentNavigator( params ); nav.Select( "//ServiceRequest/ServiceName" ); nav.MoveToNextSelected(); serviceName = nav.innerText; /* string used to hold result of the method invocation */ string res = ""; switch ( serviceName ) { case "Order" : /* retrieve the customerID, itemID, and qty parameters from the Params XML document */ nav.Select( "//ServiceRequest/Param[@name='customerID']" ); nav.MoveToNextSelected(); string customerID = nav.innerText; nav.Select( "//ServiceRequest/Param[@name='itemID']" ); nav.MoveToNextSelected(); string itemID = nav.innerText; nav.Select( "//ServiceRequest/Param[@name='qty']" ); nav.MoveToNextSelected(); string qty = nav.innerText; /* invoke the orderItem() method in our Legacy object to place an order and build result XML document based on the outcome */ try { string tranID = legacy.orderItem( customerID, itemID, qty ); res = "" + tranID + "; } catch ( Exception e ) { res = "" + e.Message + "; } break; case "History" : /* retrieve the customerID parameter from the Params in the XML document */ nav.Select( "//ServiceRequest/Param[@name='customerID']" ); nav.MoveToNextSelected(); string customerID = nav.innerText; /* invoke the getOrderHistory() method in our Legacy object and output result in our resultDoc XML document */ try { string[] tranIDs = legacy.getHistory( customerID ); /* get list of transaction IDs of past transaction and build result XML document */ foreach ( string tranID in tranIDs ) { res = res + "" + tranID + ""; } 247 } catch ( Exception e ) { res = "" + e.Message + "; } break; } /* build and return result XML document */ XmlDocument resultDoc = new XmlDocument(); resultDoc.loadXml( "" + res + "" ); return ( resultDoc ); } } Lớp tích hợp thừa kế legacy_layer.cs: The psuedocode of a sample Legacy Layer public class LegacyLayer { /* place an order return the new transaction ID or throw an exception if an error occurred */ public string orderItem( string customerID, string itemID, string qty ) { /* insert your actual implementation here */ } /* get order transaction of a specific customer return a string array containing the list of the transaction IDs of previous order transaction or throw an exception if an error occurred */ public string[] getOrderHistory( string customerID ) { /* insert your actual implementation here */ } } } BÀI TẬP VỀ NHÀ Hãy xây dựng ứng dụng thực tế liên quan đến nhiều tảng dựa vào Web service 248 Sub Greeting( Src as Object, E as EventArgs ) Dim h as New Hello lblGreeting = h.SayHello( edtName.Value ) End Sub Your name: Trang ASP.NET nhập lớp DLL uỷ nhiệm sử dụng không gian tên định nghĩa Sự gọi thực tế tới dịch vụ Hello xảy thủ tục Greeting tập tin HelloClient.aspx Từ khóa New dùng để khởi tạo đối tượng Một lần khởi tạo, đơn giản triệu gọi phương thức SayHello để làm cơng việc Chúng ta hiểu phương thức lập trình kỹ thuật lập trình Microsoft, cách tiếp cận tương tự tới bạn sử dụng đối tượng COM Đằng sau gói DLL lớp ủy thác dịch vụ Web phương thức gọi thông điệp SOAP chuyển chúng thông qua dịch vụ web để xử lý Dịch vụ Web Hello phân tích thơng điệp SOAP triệu gọi phương thức SayHello Kết đóng gói thông điệp đáp trả SOAP lần qua uỷ nhiệm phân loại DLL Và tất thời gian bạn nghĩ bạn làm phương pháp gọi đơn giản! Sử dụng thành phần Microsoft NET Remoting cho phép cho người phát triển sản xuất quản lý từ xa, COM/COM+ tự nhiên, thành phần dịch vụ (Quản lý thành phần dịch vụ dịch vụ COM+ Cái làm cài đặt NET quan trọng thành phần xây dựng điểm cuối SOAP từ trình xử lý nào, kể ứng dụng console, ứng dụng GUI, dịch vụ Windows NT, IIS Bởi họ xây dựng tiêu chuẩn cho truyền thông, số lượng ứng dụng mà cuối giao diện với thành phần gia tăng, hội cho thành công môi trường hỗn tạp tiến Máy chủ hello.cs, hiển thị NET đơn giản quản lý thành phần trưng bày phương thức SayHello Trong hello.cs đối tượng Hello điều khiển từ xa việc mở rộng lớp MarshalByRefObject Cái cho phép phương thức SayHello truy nhập thông qua SOAP đối tượng phơi bày chủ nhà thích hợp mà đóng vai điểm cuối SOAP hello_host.cs thể xây dựng dịch vụ chờ đợi kết nối Người sử dụng dừng dịch vụ, cách ấn phím Enter hello.cs: A managed component using System; namespace nsHello { /* Define the Service */ public class Hello : MarshalByRefObject { /* This method will be called remotely by our client */ public String SayHello( String Name ) { return ( "Hello " + Name ); } } 254 } hello_host.cs: Creates a service listening for connections using System; using System.IO; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels.HTTP; public class HelloHost { public static void Main( String[] args ) { /* Manually load the http channel 1099 is the port # */ ChannelServices.RegisterChannel( new HTTPChannel( 1099 ) ); /* Register the wellknown server type */ RemotingServices.RegisterWellKnownType( "nsHello", // Assembly "nsHello.Hello", // Full type name "host/Hello.soap", // URI WellKnownObjectMode.Singleton ); // Object Mode /* Wait until the user wants to exit */ Console.WriteLine( "Listening for requests - Press ENTER to exit" ); String keyState = Console.ReadLine(); } } Trong thông báo NET Framework chuyển qua lại từ đối tượng điều khiển thông qua Channels Objects gói gọn giao thức mạng nằm bên tạo kết nối trình khách/máy chủ Trong hello_host.cs, muốn sử dụng Kênh HTTP gắn sẵn, mà vận chuyển truyền tin sử dụng giao thức SOAP makefile: Một tập tin biên dịch cho hello_host.cs hello.cs all: hello_host.exe hello.dll hello_host.exe: hello_host.cs csc /r:System.Runtime.Remoting.dll hello_host.cs hello.dll: hello.cs csc /t:library hello.cs Trình khách Bây giờ, máy chủ tạo tập trung vào trình khách Tập tin hello_client.cs ứng dụng mà tiêu thụ dịch vụ phơi bày hello_host.cs để triệu gọi phương thức từ xa SayHello hello_client.cs: Một người tiêu dùng hello_host.cs using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels.HTTP; using nsHello; public class HelloClient { public static Main( String[] args ) { /* Obtain a Proxy to the SOAP URL */ Hello h = (Hello)Activator.GetObject( typeof(Hello), "http://localhost:1099/host/Hello.soap" ); /* The following occurs over SOAP to HelloHost */ Console.WriteLine( h.SayHello( "Dick" ) ); } } 255 Trong hello_client.cs sử dụng phương thức GetObject thay từ khóa để kích hoạt đối tượng từ xa chúng tơi tay kích hoạt đối tượng Chúng chưa sử dụng hồ sơ cấu hình từ xa, chúng tơi sử dụng từ khóa New tới hiệu ứng Với ví dụ trước đây, cần biên dịch ứng dụng Lệnh sau biên dịch tập tin hello_client.cs: csc /r:System.Runtime.Remoting.dll /r: hello.dll hello_client.cs Một máy chủ lẫn ứng dụng trình khách xây dựng, chúng tơi kiểm tra chúng lần chạy hello_host.exe cửa sổ sau chạy hello_client.exe cửa sổ khác Bạn nhìn thấy hello_client.exe đáp ứng với thơng điệp “Hello Dick” hình II Cài đặt ứng dụng hướng e-Business Biztalk Server Trừ làm việc cho doanh nghiệp dot-com túy, có lẽ cho phép liệu cư trú số sở liệu cũ hơn, bên tập tin phẳng (flat files), hay loại tài nguyên khác Nếu trường hợp, bạn cịn có nhu cầu tới truy nhập, cập nhật, dùng liệu này, bạn có lẽ tìm thấy bạn giáp mặt với thực tính linh hoạt chảy Những hệ thống đơn giản có lẽ khơng có phương pháp thích hợp việc truy nhập sử dụng liệu ứng dụng Qua vài mục bàn luận ứng dụng BizTalk dùng giải vấn đề Chúng tơi nói hợp ứng dụng doanh nghiệp, hợp từ doanh nghiệp tới doanh nghiệp (business-to-business) (B2B) tự động hóa qui trình nghiệp vụ Muốn đọc số nghiên cứu tình giới thực BizTalk sử dụng cho thi hành giải thể khác này? Kiểm tra địa http://www.microsoft.com/biztalk/evaluation/casestudies để xem danh sách công ty tài liệu cài đặt chúng Sự tích hợp ứng dụng doanh nghiệp Trong giới kỹ thuật nơi nhiều lập trình viên Java, C#, hay ngơn ngữ kịch (scripting) đại diện cho tất phương pháp luật người có hệ thống cũ Windows 98 hay Windows NT Kết tìm kiếm COBOL,nNhững máy tính lớn, hệ thống nhớ ảo (Virtual Memory System - VMS), vận hành mở rộng địa ảo (Virtual Address eXtension - VAX), ảnh văn đóng vai xương sống tới tồn doanh nghiệp bình thường, cách đặc biệt công ty lớn Những hệ thống gia tài yên tĩnh rộng rãi dùng, triển khai, phụ thuộc vào cho hoạt động doanh nghiệp diễn Trên tất thứ khác, máy chủ BizTalk ứng dụng thiết kế cho dễ dàng hợp Nó sử dụng tiêu chuẩn công nghiệp nặng nề, tương tự XML, SOAP, BizTalk Framework Nó cung cấp cơng cụ cho phép để tạo trình bày XML liệu thừa kế bạn truy nhập sử dụng liệu phối hợp Điều giảm bớt hợp bạn vào hệ thống thừa kế để đơn giản hỗ trợ số đặc tính XML bản, BizTalk cầm lấy từ điểm Thừa kế liệu, nhiên, liệu mà với BizTalk truyền thơng số ngun Thật ra, điều chung ta tạo dịch vụ web dựa tảng XML vỏ bìa sách này, có lẽ tìm thấy máy chủ phục vụ BizTalk hệ thống hoàn hảo để xử lý xử lý thông điệp Sự tích hợp doanh nghiệp-đến-doanh nghiệp Tích hợp với ứng dụng bên có kiểu cài đặt hữu ích cho máy chủ BizTalk Nhiều doanh nghiệp xây dựng hệ thống tảng XML hay giao diện mà cho phép chúng tự động hóa truyền thơng chúng trao đổi với khách hàng công ty đối tác Ví dụ, cơng ty bán lẻ có lẽ thu mô tả sản phẩm đặt giá khuôn dạng XML Việc sử dụng máy phục vụ BizTalk khả vẽ đồ mơ hình tới người khác, bạn cảm thấy tin cậy bạn thiết kế mơ hình riêng để doanh nghiệp chúng ta, không giới hạn hợp với đối tác 256 BizTalk Mapper chiết tự cho phép vẽ đường thẳng phần tử thuộc tính hai mơ hình, với kết tờ kiểu XSLT mà thay đổi liệu đối tác vào khuôn dạng tới hệ thống Khả cho phép bạn để xây dựng giải pháp tảng XML bên cơng ty Tự động hóa q trình kinh doanh Tự động hóa q trình kinh doanh di chuyển tới mặt trước hôm kinh tế Nếu cơng ty giảm bớt thời gian chi phí liên quan đến nhiệm vụ đặc biệt, kiểm tra kiểm kê, lợi tức cơng ty có lẽ khơng tăng, giảm bớt chi phí hàng đáy lợi nhuận gia tăng Tự động hóa chuyển động vô quan trọng cất giữ chi phí cho cơng ty, cách đặc biệt tài liên quan BizTalk Orchestration Designer, với Messaging Manager, BizTalk mang tới bảng trực quan phương pháp dựa trực quan để thiết kế, tiến bộ, tự động hóa qui trình nghiệp vụ Với cơng cụ chúng thiết kế tồn q trình để xử lý yêu cầu đầu vào hay tài liệu tạo hồ sơ chương trình mà xử lý theo dõi III Truy cập liệu XML Trước có Windows.NET, OLEDB ActiveX Data Objects (ADO) API cho việc truy cập liệu Microsoft Windows Với đời NET, Microsoft giới thiệu nhánh mơ hình để truy cập liệu gọi ADO.NET, hỗ trợ mơ hình truy cập liệu chức hồn hảo cho đa tầng, mơi trường web phân tán Tất ba mơ hình đối tượng truy nhập liệu, OLEDB, ADO, ADO.NET, cung cấp mức khác hỗ trợ XML Trước tiên khảo sát qua ba mơ hình hỗ trợ cho XML chúng OLEDB ADO Cả hai OLEDB ADO dựa vào công nghệ COM OLEDB cung cấp mức thấp phương pháp hiệu cao việc truy nhập thao tác liệu có quan hệ, ADO xây dựng OLEDB, cung cấp phương tiện dễ dàng để truy nhập liệu Sự hỗ trợ XML ADO cung cấp xuyên qua Recordset Persitence thực Microsoft OLE DB Persistence Provider Nhà cung cấp có tạo đối tượng ADO Recordset, phát sinh tài liệu XML thông tin giản đồ liên quan, lưu trữ thứ vào stream hay tập tin Tương tự, cung cấp phát sinh đối tượng Recordset đọc tiến từ tập tin XML stream Ví dụ cho thấy tạo đối tượng Recordset để tạo tập tin XML ADORecordset2XML.cs: Persisting an ADO Recordset object to an XML file using System; using System.Data; using System.Data.SQL; public class ADORecordset2XML { public static void Main( String[] args ) { try { String connString = "provider=SQLOLEDB;" + "initial catalog=pubs;" + "server=localhost;" + "uid=sa;" + "pwd="; String queryString = "select * from titles"; /* Instantiate a Recordet object */ ADODB.Recordset rs = new ADODB.Recordset(); /* Connect to the database and execute a SQL query */ rs.Open( queryString, connString, 257 ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly, ); /* Export Recordset to "titles.xml" file in XML format */ rs.Save( "titles.xml", ADODB.PersistFormatEnum.adPersistXML ); /* close the Recordset object */ rs.Close(); } catch ( Exception e ) { Console.WriteLine( "Exception: {0}", e.ToString() ); } } } Trong ví dụ trên, tạo tập tin titles.xml, ví dụ đây, xem xét việc tạo đối tượng Recordset từ tập tin titles.xml XML2ADORecordset.cs: Recreating the Recordset object from the titles.xml file using System; using System.Data; using System.Data.SQL; public class XML2ADORecordset { public static void Main( String[] args ) { try { String connString = "provider=SQLOLEDB;" + "initial catalog=pubs;" + "server=localhost;" + "uid=sa;" + "pwd="; Int32 adCmdFile = 256; /* Instantiate Recordset object */ ADODB.Recordset rs = new ADODB.Recordset(); /* Open the titles.XML file into Recordset object */ rs.Open( "titles.xml", connString, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, adCmdFile ); /* Display the value of the price field for the first record */ rs.MoveFirst(); Console.WriteLine( rs.Fields[ "price" ].Value ); /* close the Recordset object */ rs.Close(); } catch ( Exception e ) { Console.WriteLine( "Exception: {0}", e.ToString() ); } } } XML hỗ trợ ADO hạn chế để nói bé Bạn tạo xây dựng lại đối tượng Recordset qua lại tập tin XML stream Tập tin XML tách biệt với đối tượng Recordset cũ thay đổi mà tạo cách tự động ADO.NET 258 ADO.NET chào hàng người kế thừa từ ADO dựa tảng XML Tiêu điểm lõi ADO.NET cung cấp API tạo điều kiện thuận lợi cho tạo thành ứng dụng phân tán, biến đổi được, tương tác chia sẻ liệu kiểu khơng kết nối liên tục ADO.NET gồm có hai phần: lớp Dataset Managed Providers Lớp Dataset cung cấp phương thức thuộc tính để truy nhập thao tác liệu có quan hệ Managed Providers mơ tả liệu lưu trữ nằm bên sở liệu Microsoft SQL Server Các không gian tên xây dựng ADO.NET Không gian tên Diễn giải System.Data Chứa lớp Dataset lớp sở khác System.Data.ADO Chứa lớp ADO Managed Provider System.Data.SQL Chứa lớp SQL Server Managed Provider System.Data.SQLT Chứa lớp cho kiểu liệu SQL ypes Server Lớp DataSet Lớp DataSet trung tâm ADO.NET gói cho truy nhập liệu thao tác NET Framework DataSet kết nối không thường xuyên hiển thị từ nhớ sở liệu Bạn có DataSet động tạo cư trú với liệu khơng có byte đơn truyền thơng tạo với DBMS Sự khử ghép liệu nguồn liệu nằm bên lõi cho phương thức hành động kết nối khơng liên tục ADO.NET Từ bên trong, chúng nghĩ Dataset tài liệu XML chứa đựng nhiều mẩu in rời hay liên hệ phần tử XML xếp thành bảng Thật ra, NET cung cấp mơ hình lập trình hợp để truy nhập liệu đại diện cho liệu XML lẫn liệu có quan hệ Bạn bắt đầu với DataSet làm việc với liệu theo sau đường khơng tuần tự, có thứ bậc điều khiển XML DOM Bù lại, bạn làm việc với tài liệu XML kiểu hàng- sau- hàng xuyên qua Dataset sử dụng mơ hình quan hệ Lớp The XmlDataDocument Lớp XmlDataDocument mở rộng từ lớp XmlDocument, bọc nang sơ cấp ADO.NET cho tài liệu XML XmlDataDocument cung cấp khả thêm để thao tác liệu có quan hệ tất XML khác- lớp liên quan,XmlDataDocument cư trú khơng gian tên System.Xml Trong ví dụ sau dùng mã lệnh C# để nhận liệu từ sở liệu SQL Server sử dụng XmlDataDocument để thao tác liệu: DataSet2XmlDataDocument.cs: Manipulating relational data using the DOM using System; using System.IO; using System.Data; using System.Data.SQL; using System.Xml; public class DataSet2XmlDataDocument { public static void Main( String[] args ) { SQLConnection conn = null; try { /* connect to the SQL Server database */ conn = new SQLConnection( "server= localhost;uid=sa;pwd=;database=pubs" ); 259 /* execute SQL query */ SQLDataSetCommand cmd = new SQLDataSetCommand( "select * from Titles", conn ); /* create a DataSet and populate it with the records returned from result of the above SQL query */ DataSet ds = new DataSet(); cmd.FillDataSet( ds, "Titles" ); /* associate this DataSet with an XmlDataDocument */ XmlDataDocument doc = new XmlDataDocument( ds ); /* you can now process this doc just like any DataDocument For example, the following uses DataDocumentNavigator to select the first Titles node and modifies the value */ DataDocumentNavigator nav = new DataDocumentNavigator ( doc ); nav.Select( "//NewDataSet/Titles[1]/title_id" ); if ( nav.MoveToNextSelected() ) { Console.WriteLine( "Original=" + nav.InnerText ); } else { Console.WriteLine( "Unexpected error: Node not found" ); } nav.InnerText = "BU1030"; /* modify the value of the title_id node */ /* XmlDataDocument auto synchronizes the above change with the associated DataSet */ Console.WriteLine( "Modified=" + ds.Tables[ "Titles" ].Rows[ ][ "title_id" ] ); } finally { if ( conn != null && conn.State == DBObjectState.Open ) { conn.Close(); } } } } Ví dụ sau thao tác với liệu sử dụng Dataset XmlDataDocument2DataSet.cs: Manipulating an XML document using a DataSet using System; using System.IO; using System.Data; using System.Xml; public class Xml2DataSet { public static void Main() { try { /* instantiate a XmlDataDocument */ XmlDataDocument doc = new XmlDataDocument(); /* load the schema */ doc.DataSet.ReadXmlSchema( "book.xsd" ); /* now load the XML document */ 260 doc.Load( "book.xml" ); /* print original price value of first Title node */ DataDocumentNavigator nav = new DataDocumentNavigator( doc ); nav.Select( "//Book/Titles[1]/price" ); if ( nav.MoveToNextSelected() ) { Console.WriteLine( "Original=" + nav.InnerText ); } /* update a price using the associated DataSet */ DataTable books = doc.DataSet.Tables[ "Titles" ]; books.Rows[ ][ "price" ] = "12.99"; /* display modified price */ nav.Select( "//Book/Titles[1]/price" ); if ( nav.MoveToNextSelected() ) { Console.WriteLine( "Modified=" + nav.InnerText ); } } catch (Exception e) { Console.WriteLine ("Exception: {0}", e.ToString()); } } } Ví dụ sau tài liệu xml sử dụng trên: book.xml: An XML document used in XmlDataDocument2DataSet.cs BU1032 The Busy Executive's Database Guide business 1389 19.99 5000 10 4095 An overview of available database systems with emphasis on common business applications Illustrated. 1991-06-11T16:00:00 BU1111 Cooking with Computers: Surreptitious Balance business 1389 11.95 5000 10 3876 Helpful hints on how to use your electronic resources to the best advantage. 1991-06-08T16:00:00 261 Sheets BU2075 You Can Combat Computer Stress! business 0736 2.99 10125 24 18722 The latest medical and psychological techniques for living with the electronic office Easy-to-understand explanations. 1991-06-29T16:00:00 Sau tập tin giản đồ sử dụng cho tập tin book.xml: 16-6 book.xsd: The XML schema for book.xml IV Parsing tạo tài liệu XML XmlReader XmlWriter lớp trừu tượng mơ hình đối tượng XML NET Framework XmlReader cung cấp API để đọc tài liệu XML, XmlWriter cung cấp API bổ sung để sản xuất tài liệu XML tương thích W3C Trong việc thiết kế lớp này, Microsoft mượn khái niệm từ DOM lẫn SAX XmlReader Lớp trừu tượng XmlReader cung cấp trỏ nhanh, đọc, đọc tiến tài liệu XML Việc sử dụng XmlReader nhiều việc sử dụng DOM, bạn đọc làm việc với nút thời điểm Một phương thức C# sau mà ngang qua tài liệu XML trình bày tên tất phần tử tài liệu public void DisplayElements( XmlReader reader ) { /* read the next node in document order */ 262 while ( reader.Read() ) { /* if this is an element node, display its name */ Console.WriteLine( reader.Name ); } } Phương thức C# sau hiển thị giá trị phần tử tại: public void DisplayNode( XmlReader node ) { switch ( node.NodeType ) { case XmlNodeType.Element: Console.Write( "" ); break; case XmlNodeType.Text: Console.Write( node.Value ); break; case XmlNodeType.CDATA: Console.Write( node.Value ); break; case XmlNodeType.ProcessingInstruction: Console.Write( "" ); break; case XmlNodeType.Comment: Console.Write( "" ); break; case XmlNodeType.Document: Console.Write( "" ); break; case XmlNodeType.Whitespace: Console.Write( node.Value ); break; case XmlNodeType.SignificantWhitespace: Console.Write( node.Value ); break; case XmlNodeType.EndTag: Console.Write( "" ); break; } } Đoạn lệnh sau đọc giá trị thuộc tính: for ( int = 0; i < node.AttributeCount; i++ ) { Console.WriteLine( node.GetAttribute( i ) ); } while ( node.MoveToNextAttribute() ) { Console.Write( " " + node.Name + "=\"" + node.Value + "\"" ); } Một ví dụ đọc tài liệu XML: ReadXML.cs: A C# console using the discussed methods and properties using System; using System.IO; using System.Xml; 263 public class ReadXML { public void DisplayNode( XmlReader node ) { switch ( node.NodeType ) { case XmlNodeType.Element: Console.Write( ""); break; case XmlNodeType.Text: Console.Write( node.Value ); break; case XmlNodeType.CDATA: Console.Write( node.Value ); break; case XmlNodeType.ProcessingInstruction: Console.Write( "" ); break; case XmlNodeType.Comment: Console.Write( "" ); break; case XmlNodeType.Document: Console.Write( "" ); break; case XmlNodeType.Whitespace: Console.Write( node.Value ); break; case XmlNodeType.SignificantWhitespace: Console.Write( node.Value ); break; case XmlNodeType.EndTag: Console.Write( "" ); break; } } public void DisplayElements( XmlReader reader ) { /* read the next node in document order */ while ( reader.Read() ) { DisplayNode( reader ); } } public static void Main( String[] args ) { XmlTextReader reader = new XmlTextReader( "book.xml" ); ReadXML tr = new ReadXML(); tr.DisplayElements( reader ); } } 264 Ví dụ việc sử dụng mã lệnh kiểm tra hợp lệ cách sử dụng giản đồ: Validation.cs: Code that validates an XML file using schema validation using System; using System.IO; using System.Xml; public class Validation { static bool gotError = false; public static void Main( String[] args ) { /* make sure we were passed with a filename */ if ( args.Length == ) { Console.WriteLine( "Usage: validation filename" ); return; } try { /* Instantiates an XmlReaderWriter using the filename passed in from the command line */ XmlTextReader reader = new XmlTextReader( args[ ] ); /* Specify the validation method */ reader.Validation = Validation.Schema; /* Register event handler for reporting validation errors */ reader.ValidationEventHandler += new ValidationEventHandler ( OnValidateError ); /* traverse the whole document */ while ( reader.Read() ); if ( !gotError ) { Console.WriteLine( "Document is valid" ); } } catch ( Exception e ) { Console.WriteLine( "Error: " + e.Message ); } } public static void OnValidateError( Object sender, ValidationEventArgs args ) { gotError = true; Console.WriteLine( "Error: " + args.Message ); } } XmlWriter XmlWriter lớp trừu tượng cho phép xuất dòng liệu tương thích W3C XML Đoạn mã lệnh sau minh họa cho việc sử dụng lớp XmlWriter WriteXML.cs: Code that generates an XML document to the console using System; using System.IO; using System.Xml; public class WriteXML { public static void Main( String[] args ) { 265 /* Instantiates an XmlTextWriter that writes to the console */ XmlTextWriter writer = new XmlTextWriter( Console.Out ); /* Use indenting for readability */ writer.Formatting = Formatting.Indented; writer.Indentation = 4; /* Now write out our XML document */ writer.WriteStartDocument(); writer.WriteStartElement( "Persons" ); writer.WriteStartElement( "Person" ); writer.WriteStartElement( "Name" ); writer.WriteStartAttribute( null, "firstName", null ); writer.WriteString( "Albert" ); writer.WriteEndAttribute(); writer.WriteStartAttribute( null, "lastName", null ); writer.WriteString( "Einstein" ); writer.WriteEndAttribute(); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteStartElement( "Person" ); writer.WriteStartElement( "Name" ); writer.WriteStartAttribute( null, "firstName", null ); writer.WriteString( "Niels" ); writer.WriteEndAttribute(); writer.WriteStartAttribute( null, "lastName", null ); writer.WriteString( "Bohr" ); writer.WriteEndAttribute(); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); /* Don't forget to close the writer */ writer.Close(); } } BÀI TẬP VỀ NHÀ Hãy xây dựng ứng dụng thực tế cài đặt ứng dụng hướng e-Business Biztalk Server 266 CÁC THUẬT NGỮ CHUN MƠN Markup Language: ngơn ngữ đánh dấu onload event : bắt đầu load Database Management Systems –DBMSs : hệ quản trị sở liệu Structured Query Language –SQL : ngôn ngữ truy vấn cấu trúc Binary Large Object –BLOB : đối tượng nhị phân lớn NULL : rỗng Validate: kiểm tra hợp lệ Schema: giản đồ cascading style sheet (CSS): loại style sheet dùng để định màu kiểu chữ DBMSs (Database Management Systems ): hệ quản trị sở liệu RDBMS (Relational DBMS): Hệ quản trị sở liệu quan hệ 267 TÀI LIỆU THAM KHẢO http://www.xml.com – Các báo tin tức XML http://www.w3c.org - World Wide Web Consortium http://www.microsoft com/xml - Web site XML Microsoft http://developer.netscape com/tech/metadata/index html http://www.software ibm.com/xml - Web site XML IBM http://www.xmlrepository com http://www.vovisoft.com/XML/XML01/XML01.htm http://vi.wikipedia.org/wiki/XML#L.E1.BB.8Bch_s.E1.BB.AD 268 ... nhập sử dụng liệu ứng dụng Qua vài mục bàn luận ứng dụng BizTalk dùng giải vấn đề Chúng tơi nói hợp ứng dụng doanh nghiệp, hợp từ doanh nghiệp tới doanh nghiệp (business-to-business) (B2B) tự... dịch vụ web dựa tảng XML vỏ bìa sách này, có lẽ tìm thấy máy chủ phục vụ BizTalk hệ thống hoàn hảo để xử lý xử lý thông điệp Sự tích hợp doanh nghiệp-đến-doanh nghiệp Tích hợp với ứng dụng bên... ứng dụng thực tế liên quan đến nhiều tảng dựa vào Web service 24 8 BÀI TÊN BÀI : LIÊN HỆ GIỮA XML VÀ NET Mã : ITPRG3_15.04 Giới thiệu : Trong nội dung học nghiên cứu liên hệ XML NET ứng dụng XML

Ngày đăng: 17/01/2022, 11:37

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w