ngô đăng quang Viện KH & CN xây dựng Trường Đại học Giao thông Vận tải Tóm tắt: Ra đời sau các công nghệ tính toán phân tán như DCOM, CORBA vμ RMI, Web services dịch vụ web thể hiện nh
Trang 1Tính toán phân tán với web serviceS
ThS TRần ngọc linh
Bộ môn Tự động hoá thiết kế cầu đường
TS ngô đăng quang
Viện KH & CN xây dựng Trường Đại học Giao thông Vận tải
Tóm tắt: Ra đời sau các công nghệ tính toán phân tán như DCOM, CORBA vμ RMI, Web
services (dịch vụ web) thể hiện nhiều ưu điểm bao gồm: khả năng liên vận hμnh, tính khả dụng, tính tái sử dụng, vμ tính phân tán Công nghệ nμy không bị hạn chế bởi hệ điều hμnh cũng như ngôn ngữ lập trình vμ tường lửa Sự tiện lợi nμy lμm cho công nghệ tính toán phân tán Web services được ứng dụng rộng rãi trong nhiều lĩnh vực mμ một trong số đó lμ dịch vụ thương mại
điện tử Bμi báo nμy trình bμy tổng quan về những khái niệm cơ bản của Web services vμ minh họa cách ứng dụng của chúng qua một mô hình hệ thống tính toán phần tử hữu hạn trên mạng
Summary: Born after the distributed computing technologies such as DCOM, CORBA
and RMI, Web services offer many benefits including: interoperability, usability, reusability, and deployability, this technology is not restricted by operating systems, programming languages or the fire wall These advantages make Web services be widely applied in many fields, one of which is e-ecomonic or e-business This paper presents a general view of fundamental concepts of Web services and illustrates the way to apply them through a model of finite
element analysis system on the Internet
CT 2
i Giới thiệu chung
Tính toán phân tán là phương pháp tính toán phân quyền và song song, sử dụng hai hay nhiều máy tính được nối mạng với nhau (mạng Intranet, Internet) để thực hiện một nhiệm vụ chung Như vậy, khi sử dụng phương pháp tính toán phân tán, các ứng dụng và logic nghiệp vụ
sẽ được phân bố trên nhiều nền tảng khác nhau Nói cách khác, việc xử lý được phân bố trên một hay nhiều máy mà ở đó mỗi quá trình chỉ thực hiện một phần của ứng dụng theo một trình
tự nhất định Công nghệ tính toán phân tán cho phép thực hiện các tương tác giữa các máy tính/người và máy tính/máy tính trên cơ sở lập trình phân tán
Rất nhiều bài toán trong ngành xây dựng có thể được phân chia thành nhiều bài toán nhỏ,
độc lập với nhau Với những dạng bài toán này, tính toán phân tán sẽ mang lại hiệu quả cao Ngoài ra, việc sử dụng công nghệ tính toán phân tán sẽ còn cho phép xây dựng các trung tâm tính toán mà ở đó, các khối lượng tính toán lớn sẽ được thực hiện trên các máy tính có sức mạnh
xử lý lớn Các bộ phận nhập và xử lý dữ liệu có thể được thực hiện trên các hệ thống rẻ tiền hơn
Điều này cho phép giảm đáng kể đầu tư cho phần mềm và phần cứng
Web là một thành công tuyệt vời về việc cho phép thực hiện các tương tác người/máy tính một cách đơn giản trong thế giới Internet Giao thức HTTP và ngôn ngữ HTML ngày nay được sử
Trang 2dụng trong các trình duyệt Web đã được chứng minh là một giải pháp hiệu quả và kinh tế trong
việc đưa các giao tiếp người dùng lên một diện lớn các thiết bị Một nhân tố quan trọng trong sự
thành công của HTTP và HTML là sự đơn giản tương đối của chúng – cả HTTP và HTML đều
dựa trên định dạng văn bản và có thể được cài đặt qua việc sử dụng rất nhiều hệ điều hành và
môi trường lập trình
Khái niệm Web services mô tả một cách chuẩn tắc về việc tích hợp các ứng dụng dựa trên
Web sử dụng các chuẩn mở XML, SOAP, WSDL và UDDI trên nền tảng giao thức mạng XML
được sử dụng để mô tả dữ liệu, SOAP được dùng để chuyển đổi dữ liệu, WSDL dùng cho việc
mô tả các dịch vụ và UDDI dùng cho việc liệt kê những dịch vụ nào hiện hữu Được sử dụng như
là phương tiện cơ bản để các nhà kinh doanh giao tiếp với nhau và với các khách hàng, Web
services cho phép các tổ chức trao đổi dữ liệu mà không bị hạn chế bởi hệ thống các tường lửa
Web services cho phép các ứng dụng khác nhau từ các nguồn khác nhau giao tiếp với
nhau mà không mất thời gian chuyển đổi mã lệnh, và bởi vì tất cả các giao tiếp đều trong XML,
Web services không bị ràng buộc bởi bất kỳ hệ điều hành hay ngôn ngữ lập trình nào Ví dụ,
Java có thể nói chuyện với Perl, các ứng dụng Windows có thể nói chuyện với các ứng dụng
UNIX Web services không đòi hỏi phải sử dụng trình duyệt hay ngôn ngữ HTML
ii Kiến trúc của Web services
Trong thế giới khách/chủ truyền thống, chúng ta có trình chủ cung cấp một số chức năng
được sử dụng hoặc gọi từ trình khách Một số kiểu tra cứu dịch vụ đóng vai trò như là môi giới
giữa khách và chủ
Môi giới dịch vụ
Yêu cầu dịch vụ
Cung cấp dịch vụ Internet
Hình 1 Thμnh phần của Webservices
yêu cầu công bố
kết nối
CT 2
Web services thể hiện như là một mẫu khác cho các ứng dụng phân tán, chúng gồm có ba
thành phần sau:
- Một dịch vụ môi giới đóng vai trò dịch vụ tra cứu giữa nhà cung cấp dịch vụ và yêu cầu
dịch vụ
- Một nhà cung cấp dịch vụ triển khai các dịch vụ của nó tới môi giới dịch vụ
- Một yêu cầu dịch vụ hỏi môi giới nơi có thể tìm thấy nhà cung cấp thích hợp và tự liên kết
với nhà cung cấp
Quan hệ giữa các thành phần của Web services được mô tả trên hình 1 [1]
Trang 3CT 2
XML, ngôn ngữ định dạng mở rộng, là một định dạng được chấp nhận rộng rãi cho việc chuyển đổi dữ liệu và các ngữ nghĩa
tương ứng Nó là một khối xây dựng cơ bản cho gần như tất cả các
lớp được sử dụng trong Web services Những lớp này cùng nhau
xây dựng một ngăn xếp giao thức Web services như hình 2, bao
gồm các phần sau [2]:
TCP/IP (giao thức liên lạc)
HTTP
(giao thức ứng dụng liên lạc)
SOAP
(lời gọi dịch vụ
từ xa)
UDDI
(tìm kiếm)
WSDL
(mô tả)
WEB SERVICES
Hình 2 Ngăn xếp giao thức
của Web services
- SOAP, giao thức truy xuất đối tượng đơn giản
- WSDL, ngôn ngữ mô tả Web services
- UDDI, tích hợp mô tả và tìm kiếm toàn bộ Các lớp này mô tả nền tảng phát triển Web services gồm 3 thành phần dịch vụ và định nghĩa Web services chính tắc Dưới
đây sẽ giải thích chi tiết các lớp SOAP, WSDL và UDDI trên nền
XML
SOAP
Vì Webservice chạy trong một môi trường hỗn hợp, các giao thức được sử dụng để chuyển đổi dữ liệu giữa các hàm phải độc lập với bất kỳ môi trường thực thi nào SOAP là một giao thức có những đặc tính này
Bản thân SOAP không định nghĩa bất kỳ ngữ nghĩa ứng dụng nào như mô hình lập trình hay việc cài đặt chuyên cho các ngữ nghĩa Nó chỉ định nghĩa kỹ thuật đơn giản cho việc biểu thị các ngữ nghĩa ứng dụng bằng cách cung cấp một mô hình gói dạng mô đun và kỹ thuật mã hóa cho dữ liệu trong các mô đun
Tất cả các gói tin SOAP đều được định dạng theo XML Các thông điệp của SOAP chứa thẻ thư hay gói bao (ENVELOPE) là phần tử gốc Thẻ thư này gồm có hai phần:
- Tiêu đề (header), không bắt buộc
- Thân (body) Phần tiêu đề có thể chứa một tập hợp các mục tiêu đề có thể được sử dụng để cung cấp thông tin như sự xác thực hay mã hóa của dữ liệu Thêm nữa, hai thuộc tính của tiêu đề tồn tại
để cung cấp thông tin về cách tiếp nhận một thông điệp SOAP như sau:
- Thuộc tính tác tử (actor), thuộc tính này có thể được dùng để chỉ định việc nhận tin của một mục tiêu đề nhất định
- Thuộc tính phải hiểu được (mustUnderstand), bằng cách thêm thuộc tính này vào mục tiêu đề một giá trị “1”, để ép buộc sự tiếp nhận mục tiêu đề và chắc chắn rằng mục tiêu đề này
sẽ không bị bỏ qua Nếu không chỉ định, thuộc tính này có cùng ngữ nghĩa với trường hợp giá trị của nó là “0”
Tất cả các mục tiêu đề phải có không gian tên (namespace) Các không gian tên của gói bao và kiểu mã hóa được định nghĩa trong tiêu chuẩn kỹ thuật của SOAP
Phần thân chứa các thông tin về việc tiếp nhận theo thứ tự của các tiếp nhận Thông tin
này được đóng kín trong các mục body Nếu gói bao chứa một tiêu đề, phần thân không được là
Trang 4phần tử đầu tiên trong gói bao Các mục body có thể được đặt tên
Tiêu chuẩn qui định một mục body được dùng để chứa các thông tin trạng thái hay lỗi liên
quan đến thông điệp Nó có thể chỉ xuất hiện một lần trong thông điệp SOAP Để hiểu rõ hơn về
SOAP, ta hãy xem một hàm như sau dùng để lấy tỷ giá cổ phiếu của công ty IBM viết bằng
ngôn ngữ Delphi
function GetStockQuote( Symbol : string ) : double;
Lời gọi của SOAP sẽ là:
Thẻ đầu tiên chúng ta thấy ở đây là <SOAP-ENV:Envelope > Thẻ này là một vỏ bọc cho
gói tin SOAP, cho phép khai báo nhiều không gian tên tùy nhu cầu Các không gian tên được
định nghĩa sao cho các tiền tố với các thẻ ví dụ như “SOAP-ENV:” hoặc “xsd:” để dễ dàng cho
Thẻ tiếp theo là <SOAP:ENV:Body> (Chúng ta bỏ qua thẻ SOAP-ENV:Header) Thẻ này
chứ đựng lời gọi thực sự của SOAP
Tiếp theo là thẻ <ns1:GetStockQuote…> Như tên gọi, thẻ này là chính hàm được gọi
Trong ngôn ngữ của SOAP, đây được gọi là toán tử Vì thế GetStockQuote là toán tử cần được
thực thi ns1 là một không gian tên, chỉ định urn:xmethods-quotes trong trường hợp này
Thuộc tính kiểu mã hóa, encodingStyle, chỉ định cách một lời gọi của SOAP được nhận
dạng Trong thẻ <GetStockQuote> có các tham số Trường hợp này ta chỉ có một tham số, đó
là thẻ <symbol> và kiểu dữ liệu được XML mô tả qua dòng thông tin
xsi:type=”xsd:string”
Kiểu dữ liệu sẽ được trả về dạng chuỗi Trong thẻ <symbol> có nội dung là “IBM”, đó là
giá trị của tham số symbol cho hàm GetStockQuote
Đó là tất cả về một lời gọi đến trình chủ SOAP Sau khi trình chủ phân tích, nó nhanh
chóng gửi lại một gói tin về tỷ giá cổ phiếu như sau:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema" >
<SOAP-ENV:Body>
<ns1:GetStockQuote xmlns:ns1="urn:xmethods-quotes">
<SOAP-NV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<symbol xsi:type="xsd:string">IBM</symbol>
</ns1:GetStockQuote>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Trang 5<m:GetStockQuoteResponse xmlns:m="urn:xmethods-quotes">
<Price>34.5</Price>
</m:GetStockQuoteResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Sau khi bỏ tất cả các bao bì, gói tin này cho chúng ta thấy giá cổ phiếu của IBM là 34.5 Hình 3 mô tả cách thức SOAP được dùng trong Web services Với cách biểu thị gói tin theo chuẩn XML, rõ ràng SOAP đã cho thấy sự đơn giản trong việc thể hiện và chuyển đổi thông tin
Môi giới dịch vụ
Yêu cầu dịch vụ
Cung cấp dịch vụ Internet
Hình 3 Thμnh phần của Webservices vớiSOAP
yêu cầu dịch vụ
sử dụng SOAP
công bố dịch vụ
sử dụng SOAP
kết nối dịch vụ
sử dụng SOAP
WSDL
CT 2
<definitions>
<import/>
WSDL là một tài liệu được viết bằng XML Mục đích chính của nó là mô tả dịch vụ web Nó nắm giữ các thông tin sau về Web service:
- Địa chỉ của dịch vụ hay URL
<types>
</types>
<messages>
- Các phương thức mà nó dùng và các tham số đi kèm
- Các kết quả của phương thức và kiểu (như chuỗi, số,…)
Cấu trúc tài liệu:
</messages>
<portType>
Phần tử cơ bản của bất kỳ một tài liệu WSDL là phần tử
<definitions> Nó gồm sáu phần tử con và có thể chia thành
hai nhóm: định nghĩa tóm lược và định nghĩa chi tiết </portType>
<biding>
</biding>
Các phần tử định nghĩa tóm lược:
1 Các kiểu, cung cấp các định nghĩa về kiểu dữ liệu được
dùng để mô tả các thông điệp được trao đổi <service>
</service>
</definitions>
2 Thông điệp, biểu thị một định nghĩa tóm lược về dữ liệu
được chuyển đổi Một thông điệp gồm có các phần logic, mỗi
phần được liên kết với một định nghĩa trong một số hệ thống kiểu
3 Kiểu cổng giao tiếp, là một tập hợp các toán tử tóm lược Mỗi toán tử tham khảo tới một
thông điệp gọi và các thông điệp kết quả
Trang 6CT 2
y đủ và các chuẩn định dạng dữ liệu cho các toán tử
và th o tiếp nhất định
cổng liên quan
ực hiện của dịch vụ web
Nó đ ột kỹ thuật chuẩn cho việc xuất bản và tìm kiếm các mô tả dịch vụ Web Nó cung
cấp
hân loại hay các tiêu chí khác UDDI sau đó cung cấp các con trỏ trỏ đến các tài liệu
WSD
PI vấn
iếm một tModel và trỏ về tài liệu
ầu SOAP sẽ được gửi đến nhà cung cấp dịch vụ, và phản hồi sẽ được thực hiện
nghệ Web services
phải phát triển một hệ thống phân tích phần tử hữu hạn trên mạng
Yêu ửi từ máy trạm đến máy chủ, sau khi hoàn thành việc phân tích,
máy
Các phần tử định nghĩa chi tiết:
1 Các liên kết, chỉ định giao thức đầ
ông điệp theo một kiểu cổng gia
2 Cổng, chỉ định một địa chỉ cho một kết nối, định nghĩa một điểm cuối giao tiếp một chiều
3 Dịch vụ, được sử dụng để tạo một tập hợp các
UDDI
UDDI là một công trình phát triển khả năng liên vận hành và sự th
ưa ra m
một thông tin lớn cần thiết để quyết định dịch vụ nào mà một ứng dụng sẽ dùng và tìm nó ở
đâu
Trình khách có thể truy vấn một đăng ký UDDI dựa trên tên công ty, danh mục công tác,
kiểu p
L mô tả các dịch vụ và một hay nhiều các cài đặt mà trình khách có thể chọn để truy cập
Nếu các địa chỉ dịch vụ và các cài đặt cần thay đổi theo thời gian do các vấn đề như sự ổn định,
duy trì và phiên bản, thì UDDI là một cách tuyệt vời để quản lý các dịch vụ một cách trực tiếp
Để truy xuất các dịch vụ UDDI, thư mục UDDI bày ra một tập hợp các hàm API theo định
dạng của một Web Service trên cơ sở SOAP API được chi thành hai phần logic Chúng là A
tin (Inquiry API) và API tạo tin (Publishers’ API) API vấn tin gồm có hai phần nhỏ-một phần
được sử dụng cho việc xây dựng chương trình để có thể tìm kiếm và duyệt thông tin được tìm
thấy trong một đăng ký UDDI, một phần còn lại được sử dụng trong trường hợp có lỗi xảy ra
Sau khi đã mô tả các công nghệ chính, chúng ta có thể đưa ra một bức tranh đầy đủ về các
ứng dụng phân tán cũng như những ứng dụng của SOAP, WSDL và UDDI:
1 Nhà cung cấp dịch vụ Web mô tả dịch vụ web trong một tài liệu WSDL và xuất bản nó
thành một đăng ký UDDI sử dụng hàm tạo tin API dựa trên SOAP
2 Một yêu cầu dịch vụ sử dụng vấn tin API của UDDI tìm kiếm đăng ký UDDI của nhà cung
cấp dịch vụ thích hợp Nếu có một đăng ký tìm thấy, nó có thể tìm k
WSDL
3 Một yêu cầu SOAP sẽ được tạo lập theo tài liệu WSDL
4 Yêu c
ây dựng hệ thống phân tích phần tử hữu hạn trên mạng sử dụng côn
3.1 Mô hình hệ thống
Giả sử, chúng ta cần
cầu tính toán sẽ được g
chủ sẽ trả về kết quả và kết quả được biểu thị trên máy trạm Rõ ràng đây là một hệ thống
tính toán phân tán, chúng ta sẽ dùng Web services để minh họa cho khả năng ứng dụng trong
lĩnh vực này Mô hình hệ thống được biểu diễn trên hình 4
Trang 7FEMClient (Trình khách)
FEMServer (Trình chủ) FEMInterface Mạng máy tính
FEMImplement
FEA
CT 2
Hình 4 Mô hình hệ thống phân tích FEM
3.2 Cài đặt
phương thức RunCommand với các tham số được định nghĩa trước để gọi điều khiển toàn bộ hệ thống Mục đích tạo ra tính giản ơng tác giữa các máy tính
A10-44F3-A750-BA0E3B4D2176}']
procedure RunCommand(cmd:string);
stdc
end;
stdcall;
end;
hân tích phần tử hữu hạn đầy đủ với các thu và phương thức như sau
c
of TNode;
:array of TElement;
: (_Cholesky,_BandCholesky,_Gauss,_Skyline);
; {Vector Displace and Load}
nt;
array of TMaterial;
Các phần FEMInterface và FEMImplement ở đây chỉ dùng một gọn của sự tư
a FEMInterface
IFEM = interface(IInvokable)
b FEMImplement
TFEM = class(TInvokableClass, IFEM) ['{7AABCCDA-3
all;
public procedure RunCommand(cmd:string);
FEA
TFEA = class public
NODE:array ELEM Support:TSupport;
FEMResults:TFEMResult;
nN1:integer;
nE1:integer;
SolveMethod VNLoad:arrnR SMatrix:TSparseMatrix;
private DataXML: TXMLDocume MAT:
SEC:array of TSection;
Trang 8CT 2
trix}
nteger;X,Y,Z:double);
re
AL(Index:integer;MType,Name:string;E,m,at,g:double);
de;
terial;
hickness;
,T:arrnnR);
ctor(Obj:TElement;L:arrnR;T:arrnnR);
rtex(aNIndex:arrnI;n:integer;var VN:arrnR);
cementResult;
ype:integer);
DispResult;
Client vừa gửi thông điệp yêu cầu tính toán đến FEMServer và nhận thông điệp kết
quả từ FEMS chất mỗi hệ thống Client và Server vừa đóng vai trò là chủ và
GM1:arrnnR; {Stiff_Ma
published
procedure Add_NODE(Index:i
procedu
ELEMENT(Index:integer;EType:string;IMat,ISecThick:in
procedure Add_MATERI
procedure Add_THICKNESS(Index:integer;Name:string;T:double);
procedure Add_SECTION(Index:integer;Name:string;F,Jx,Jy,Jz,Fx,Fy:double);
procedure AddElement(Obj:TElement);
procedure AddNODE(Obj:TNode);
procedure AddMaterial(Obj:TMaterial);
procedure AddSection(Obj:TSection);
function Get_NODE(Index:integer):TNo
function Get_MAT(Index:integer):TMa
function Get_THICKNESS(Index:integer):TT
procedure ReadDataFromFile(fn:string);
procedure SetIndexNode;
procedure AddStiffMatrix(Obj:TElement;K
procedure AddNodeLoadVe
procedure AddNodeLoad(NL:arr6r;Index:integer);
procedure BuildVNodeLoad;
procedure BuildBoundary;
procedure BuildStiffMatrix;
procedure SolveEquation;
procedure GetEDeformedVe
procedure Add_NodeDispla
procedure AnalyseAllElement;
procedure Init;
procedure WriteData(fn:string;ft
procedure Write
procedure WriteToMtxfile(fn:string);
end;
d FEMServer vμ FEMClient
Vì FEM
erver trở về nên thực
Trang 9Sau thực hiện tính toán một ví dụ phân tích cục bộ trụ thân cột với hệ thống phân tích vừa tạo l các kết quả được thể hiện trên hình 5 Mô hình kết c
h Những tác vụ này có thể được cài đặt đồng thời trong một mô đun hoặc với 2 mô đun tác biệt hoạt động trên từng máy tính
3.3 Một số hình ảnh về kết quả
ập trên mạng 2 máy tính (1 Laptop và 1 PC),
ấu được hiển thị trên FEMServer (bên trái) và kết quả biểu diễn ở FEMClient (bên phải)
CT 2
Hình 5 Các giao diện mô đun hoạt động của FEMServer vμ FEMClient
iv Kết luận
Trong tính toán phân tán, các công nghệ DCOM, CORBA và RMI tập trung ứng dụng chủ
ng dụng intranet bởi hạn chế về vấn đề vượt qua tường lửa cũng như sự khác biệt
ành xây dựng và đã có một số kết quả bước
[1] Hartwig Gunzer, Sales Engineer, Introduce to Web services, Borland, March 2002
rs.com/topic/web-service
with a DB2 Backend, http://delphi.about.com, 5 Dec 2002 ces, Annual Borland Conference, 2003
yếu trong các ứ
giao thức làm cho không đảm bảo tính đồng bộ giữa các ứng dụng chủ và khách Công nghệ Web services khắc phục được những hạn chế trên nhờ tính mềm dẻo của các chuẩn XML, SOAP, WSDL và UDDI cấu thành hệ thống tính toán phân tán Nhờ tính ưu việt này mà rất nhiều ứng dụng tính toán phân tán được phát triển, là cơ sở quan trọng để xây dựng hệ thống thương mại điện tử và các hệ thống dịch vụ mạng khác
Hệ thống phân tích phần tử hữu hạn trên mạng được phát triển với công nghệ tính toán phân tán Webservice là một ứng dụng điển hình trong ng
đầu Trong thời gian tới, các tác giả sẽ tiếp tục hoàn thiện để có được một ứng dụng đầy
đủ hơn và có thể áp dụng vào thực tế
Tài liệu tham khảo
[2] http://www.answe
[3] http://www.w3.org/TR/wsdl#_service
[4] Maco Cantu, Building a Web Service in Delphi
[5] Deepak Shenoy, Advanced Web Servi
[6] http://www.systinet.com/doc/ssc-65/primer/html/using.web.services.html
[7] http://www.perfectxml.com/WebSvc3.asp
[8] http://www.idealliance.org/papers/xml2001/papers/html/03-02-03.html Ă