Dịch vụ Web thành phần trong khung đàm phán

Một phần của tài liệu Xây dựng khung đàm phán chất lượng dịch vụ cho dịch vụ web (Trang 62)

4.4.1 Thông tin cấu hình của các dịch vụ Web thành phần

Mỗi dịch vụ thành phần như BookingTour, BookingHotel đều có tệp tin cấu hình QoS_FileConfig.xml. Tệp tin cấu hình QoS_FileConfig.xml lưu trữ thông tin cấu hình các thuộc tính chất lượng dịch vụ và thông tin cấu hình các hàm chức năng như: tên hàm chức năng, thời gian giới hạn được sử dụng, thời gian bắt đầu sử dụng, chìa khóa (key). Hình 4-6 mô tả thông tin cấu hình của tệp tin QoS_FileConfig.xml.

Hình 4-6. Thông tin cấu hình của dịch vụ thành phần BookingHotel.

4.4.2 Phƣơng thức đàm phán của dịch vụ Web thành phần BookingHotel

Trong khung đàm phán, dịch vụ BookingHotel được triển khai tại địa chỉ http://localhost:8080/QoSBookHotel/services/listServices. Danh sách các phương thức của dịch vụ BookingHotel bao gồm như sau:

Phƣơng thức GetInfoQoS

Phương thức này trả về thông tin chất lượng dịch vụ của các hàm chức năng. Các bước xử lý của phương thức GetInfoQoS:

- Bước 1: Lấy thông tin trường timeout và start tệp tin QoS_FileConfig.xml.

- Bước 2: Kiểm tra xem thời gian sử dụng phương thức GetInfoQoS có vượt quá thời gian giới hạn không.

Nếu phương thức GetInfoQoS có thời gian sử dụng quá thời gian giới hạn, nghĩa là phương thức này ở trạng thái sẵn sàng thì GetInfoQoS gọi phương thức ACK_GetInfoQoS_OK để trả về thông tin chất lượng dịch vụ.

Ngược lại, phương thức GetInfoQoS không ở trạng thái sẵn sàng nên phương thức này gọi phương thức ACK_GetInfoQoS_Reject trả về thông điệp reject. Thông điệp của phương thức GetInfoQoS.

<xs:element name="GetInfoQoS"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> Phƣơng thức ACK_GetInfoQoS_Reject

Phương thức này trả về thông điệp reject. Thông điệp của phương thức ACK_GetInfoQoS_Reject. <xs:element name="ACK_GetInfoQoS_Reject"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> Phƣơng thức ACK_GetInfoQoS_OK

Phương thức này trả về thông tin chất lượng dịch vụ của các hàm chức năng. Thông điệp của phương thức ACK_GetInfoQoS_OK.

<xs:element name="ACK_GetInfoQoS_OK"> <xs:complexType>

<xs:sequence/> </xs:complexType> </xs:element>

Phƣơng thức Confirm

Phương thức này kiểm tra trạng thái của hàm chức năng có ở trạng thái sẵn sàng không. Các bước xử lý của phương thức Confirm:

- Bước 1: Lấy thông tin trường timeout và start, key tệp tin QoS_FileConfig.xml của mỗi hàm chức năng.

- Bước 2: Kiểm tra thời gian sử dụng của hàm chức năng này. Nếu thời gian của hàm chức năng này quá thời gian giới hạn, thì trạng thái của hàm chức năng là sẵn sàng. Khi đó, phương thức Confirm gọi phương thức Counter_Confirm để trả về kết quả. Nếu thời gian của hàm chức năng này không vượt quá thời gian giới hạn thì chuyển sang bước 3.

- Bước 3: Kiểm tra xem chìa khóa (key) của hàm chức năng có trùng với chìa khóa (key) ở trên tệp tin cấu hình của hàm chức năng này không. Nếu chìa khóa trùng nhau thì hàm chức năng này ở trạng thái sẵn sàng và phương thức Confirm gọi phương thức Counter_Confirm để trả về kết quả. Ngược lại, hàm chức năng này không ở trạng thái sẵn sàng và phương thức Confirm gọi phương thức Refuse để trả về kết quả.

Thông điệp của phương thức ACK_GetInfoQoS_OK. <xs:element name="Confirm">

<xs:complexType> <xs:sequence>

<xs:element minOccurs="0" name="methodNames" nillable="true" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

Phƣơng thức Counter_Confirm

Phương thức này trả về thông điệp counter_confirm. Thông điệp của phương thức Counter_Confirm.

<xs:element name="Counter_Confirm"> <xs:complexType>

<xs:sequence>

<xs:element minOccurs="0" name=" methodName" nillable="true" type="xs:string"/>

</xs:complexType> </xs:element> (adsbygoogle = window.adsbygoogle || []).push({});

Phƣơng thức Refuse

Phương thức này trả về trông điệp refuse. Thông điệp của phương thức Refuse. <xs:element name="Refuse">

<xs:complexType> <xs:sequence>

<xs:element minOccurs="0" name=" methodName" nillable="true" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

Các phương thức FuncHotel1, FuncHotel2, FuncHotel3 là các hàm chức năng. Phục vụ cho chức năng đặt phòng khách sạn. Khung đàm phán của luận văn này không đề cập đến các vấn đề xử lý logic của các hàm chức năng.

4.4.3 Phƣơng thức đàm phán của dịch vụ Web thành phần BookingTour

Dịch vụ thành phần BookingTour được triển khai tại địa chỉ http://localhost:8080/QoSBookTicket/services/listServices.

Tượng tự, dịch vụ BookingTour cũng có một số phương thức giống như dịch vụ BookingHotel như sau.

Phƣơng thức GetInfoQoS

Thông điệp của phương thức GetInfoQoS <xs:element name="GetInfoQoS"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> Phƣơng thức ACK_GetInfoQoS_Reject

Thông điệp của phương thức ACK_GetInfoQoS_Reject. <xs:element name="ACK_GetInfoQoS_Reject"> <xs:complexType>

<xs:sequence/> </xs:complexType> </xs:element>

Phƣơng thức ACK_GetInfoQoS_OK

Thông điệp của phương thức ACK_GetInfoQoS_OK. <xs:element name="ACK_GetInfoQoS_OK"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> Phƣơng thức Confirm

Thông điệp của phương thức Confirm. <xs:element name="Confirm"> <xs:complexType>

<xs:sequence>

<xs:element minOccurs="0" name="methodNames" nillable="true" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

Phƣơng thức Counter_Confirm

Thông điệp của phương thức

<xs:element name="Counter_Confirm"> <xs:complexType>

<xs:sequence>

<xs:element minOccurs="0" name=" methodName" nillable="true" type="xs:string"/>

</xs:sequence>

</xs:complexType> </xs:element>

Phƣơng thức Refuse

Thông điệp của phương thức Refuse. <xs:element name="Refuse">

<xs:complexType>

<xs:sequence> (adsbygoogle = window.adsbygoogle || []).push({});

<xs:element minOccurs="0" name=" methodName" nillable="true" type="xs:string"/>

</xs:sequence>

</xs:complexType> </xs:element>

Các phương thức FuncTour1, FuncTour2, FuncTour3, FuncTour4 là các hàm dịch vụ chức năng. Phục vụ cho chức năng đặt phòng tour. Trong phạm vị khung đàm phán này không đề cập đến các vấn đề xử lý logic của các hàm dịch vụ chức năng.

4.4.4 Thời gian giới hạn sử dụng của các dịch vụ thành phần

Các hàm chức năng và hàm chất lượng dịch vụ đều có một thời gian giới hạn. Thông tin trường thời gian giới hạn được lấy ở tệp tin cấu hình QoS_FileConfig.xml.

Quy trình cập nhật trường thời gian bắt đầu sử dụng (start) của phương thức GetInfoQoS bao gồm các bước:

- Bước 1: khi dịch vụ Travel_WS gọi phương thức Proposal để gửi thông điệp GetInfoQoS cho dịch vụ thành phần giả sử như BookingHotel để yêu cầu muốn sử dụng chức năng GetInfoQoS.

- Bước 2: dịch vụ BookingHotel gọi phương thức GetInfoQoS, phương thức này sẽ kiểm tra tính hợp lệ thời gian sử dụng của GetInfoQoS có vượt quá thời gian giới hạn không. Nếu thời gian sử dụng của GetInfoQoS quá thời gian giới hạn thì GetInfoQoS ở trạng thái sẵn sàng và thực hiện cập nhật trường thời gian bắt đầu (start) của GetInfoQoS vào trong tệp tin QoS_FileConfig.xml.

Quy trình cập nhật trường thời gian bắt đầu sử dụng (start) của các hàm chức năng bao gồm các bước sau:

- Bước 1: khi dịch vụ Travel_WS gửi thông điệp Confirm cho một dịch vụ thành phần như BookingTour để yêu cầu xác nhận một hàm chức năng giả sử là FuncTour1 xem hàm này có ở trạng thái sẵn sàng hay không. - Bước 2: dịch vụ BookingTour gọi phương thức Confirm, phương thức

này sẽ kiểm tra thời gian sử dụng của FuncTour1. Nếu FuncTour1 có thời gian quá thời gian giới hạn thì FuncTour1 ở trạng thái sẵn sàng và thực hiện cập nhật trường thời gian bắt đầu (start) vào tệp tin QoS_FileConfig.xml.

4.5 Các giao diện của dịch vụ thành phần

Trong phần này sẽ miêu tả giao diện WSDL của các dịch vụ thành phần BookingTour và BookingHotel. Dịch vụ Travel_WS sẽ giao tiếp với chúng thông qua WSDL.

4.5.1 Giao diện WSDL của BookingHotel

Giao diện WSDL của BookingHotel được miêu tả ở phụ lục A.

4.5.2 Giao diện WSDL của BookingTour

Giao diện WSDL của BookingTour được miêu tả ở phụ lục B.

4.6 Lựa chọn hàm chức năng

Phần này trình bày một số phương pháp so sánh các hàm chức năng này dựa trên thuộc tính chất lượng dịch vụ. Trong khung đàm phán của luận văn, dịch vụ Travel_WS đã áp dụng phương pháp gán trọng số để so sánh các hàm chức năng trong dịch vụ thành phần, từ đó Travel_WS chọn ra hàm dịch vụ phù hợp nhất với yêu cầu đưa ra.

4.6.1 Lựa chọn hàm chức năng dựa vào phƣơng pháp so sánh đặc điểm chất lƣợng dịch vụ

Đây là phương pháp so sánh đơn giản, so sánh các thực thể với nhau trên cùng một thuộc tính chất lượng dịch vụ. Thực thể nào có thuộc tính chất lượng tốt nhất thì xếp thứ 1, thực thế tốt thứ nhì xếp thứ 2, thực thể tốt thứ ba thì xếp thứ 3. Sau đó đối với mỗi thực thể thực, hiện tính tổng thứ tự các thuộc tính chất lượng dịch vụ. Nếu thực thể nào có tổng nhỏ nhất thì thực thể đó được chọn [13].

Ví dụ 4.7: Ví dụ về phương pháp so sánh dựa trên tính tổng các thuộc tính chất lượng dịch vụ Web.

FuncTour1, FuncTour2 và FuncTour3 là ba hàm chức năng với ba thuộc tính Cost, Time và Availability như ở bảng 4.1.

Bảng 4-1: Minh họa phƣơng pháp so sánh dựa trên tổng các thuộc tính chất lƣợng dịch vụ

Cost Time Availability Tổng

FuncTour1 1 2 3 6

FuncTour3 3 3 2 8

Mặc dù đây là phương pháp đơn giản, nhưng phương pháp này có một vài hạn chế. Một là khi giá trị tổng của các thực thể bằng nhau thì chọn hàm chức năng nào. Hai là phương pháp này chưa phân biệt mức độ khác nhau giữa các thuộc tính chất lượng dịch vụ.

4.6.2 Lựa chọn hàm chức năng dựa vào phƣơng pháp chuẩn hóa (adsbygoogle = window.adsbygoogle || []).push({});

Phương pháp chuẩn hóa trên các thuộc tính khắc phục hạn chế khi tổng của các hàm chức năng bằng nhau. Trong phương pháp này, giá trị của các thuộc tính được chuẩn hóa bằng cách gán 1 cho hàm chức năng có giá trị thuộc tính lớn nhất và 0 cho hàm dịch vụ có giá trị thuộc tính nhỏ nhất. Tất cả các giá trị của thuộc tính chỉ thuộc trong đoạn [0,1] và được phân bổ tỉ lệ thuận với giá trị thực của nó [13].

Tổng của các xếp hạng của mỗi hàm chức năng được tính toán và hàm chức năng nào có tổng lớn nhất được coi là tốt nhất. Bảng 4.3 dưới đây mô tả các giá trị đã được chuyển đổi từ các giá trị thực ở bảng 4.2 theo phương pháp chuẩn hóa. Nhược điểm của phương pháp này là không giải quyết được vấn đề độ ưu tiên của các thuộc tính trong mỗi hàm chức năng.

Bảng 4-2: Bảng minh họa giá trị gốc trong phƣơng pháp chuẩn hóa

Cost Time Availability

FuncTour1 80 0.4 90%

FuncTour2 90 0.2 99%

FuncTour3 60 0.9 95%

Bảng 4-3: Bảng minh họa các giá trị đã đƣợc chuyển đổi trong phƣơng pháp chuẩn hóa

Cost Time Availability Tổng

FuncTour1 0.67 0.71 0 1.38

FuncTour2 1 0 1 2 (*)

4.6.3 Lựa chọn hàm chức năng dựa vào phƣơng pháp gán trọng số

Phương pháp này khắc phục nhược điểm của phương pháp chuẩn hóa là phân biệt được mức độ khác nhau giữa các thuộc tính chất lượng dịch vụ. Trong thực tế thì điều này là khá cần thiết. Một thuộc tính có trọng số cao hơn là có tầm quan trọng hơn. Phương pháp gán trọng số này đã mượn lý thuyết giả tương đương và phương pháp bất tương đương (Hypothetical Equivalents and Inequivalents Method) ký hiệu là HEIM để gán trọng số cho các thuộc tính chất lượng dịch vụ. Ví dụ 4.8 dưới đây mô tả phương pháp gán trọng số [13].

Ví dụ 4.8: ví dụ phương pháp gán trọng số.

Gọi FuncTour1, …, FuncTour4 là 4 hàm chức năng đặt tour và mỗi hàm chức năng có 3 thuộc tính là Cost, Time và Availability với các giá trị được gán như ở trong bảng 4.4.

Bảng 4-4: Bảng minh họa các giá trị thuộc tính chất lƣợng dịch vụ trong phƣơng pháp gán trọng số

W1 W2 W3

Cost Time Availability

FuncTour1 1 0.5 1

FuncTour2 0.5 0 0.5

FuncTour3 1 0.5 0.5

FuncTour4 0.5 0.5 1

Mỗi thuộc tính được gán trọng số Wi và tổng các trọng số thỏa mãn biểu thức sau ∑ (4.2). Tổng giá trị các thuộc tính trong mỗi hàm chức năng được tính theo công thức FuncTouri = ∑ (4.3).

Vj, Wj tương ứng là giá trị và trọng số của thuộc tính thứ j. Khi đó, tổng giá trị các thuộc tính có gán trọng số của các hàm chức năng như ở bảng 4.5. Thực hiện tính tổng của từng hàm chức năng, hàm nào có tổng lớn nhất thì được chọn và coi là tối ưu nhất. Đã có một số nghiên cứu rất cụ thể để xác định được trọng số của các thuộc tính được trình bày tài liệu mục [22][23]. Trong luận văn chưa đề cập đến vấn đề xác định các trọng số, mà các trọng số trong luận văn được lấy ngẫu nhiên.

Bảng 4-5: Bảng minh họa tính tổng giá trị thuộc tính chất lƣợng dịch vụ trong phƣơng pháp gán trọng số

W1 W2 W3

Cost Time Availability Tổng

FuncTour1 1 0.5 1 W1+0.5W2+W3

FuncTour2 0.5 0 0.5 0.5W1+W3

FuncTour3 1 0.5 0.5 W1+0.5W2+0.5W3 (adsbygoogle = window.adsbygoogle || []).push({});

FuncTour4 0.5 0.5 1 0.5W1+0.5W2+W3

4.6.4 Áp dụng phƣơng pháp gán trọng số để so sánh các hàm chức năng trong khung đàm phán

Trong khung đàm phán chất lượng dịch vụ này, tác giả sử dụng phương pháp gán trọng số cho các thuộc tính chất lượng dịch vụ và xây dựng hai dịch vụ thành phần BookingHotel, BookingTour và ba thuộc tính chất lượng dịch vụ là cost, time, availability. Việc thêm các thuộc tính chất lượng dịch vụ cũng như thêm các dịch vụ thành phần mới đã được tính trong khung đàm phán để đảm bảo tính mềm dẻo và dễ dàng khi thêm mới chúng.

Trọng số của các thuộc tính chất lượng dịch vụ được lưu ở tệp tin cấu hình Composite_FileConfig.xml của dịch vụ Web kết hợp như ở hình 4-7, việc lưu trữ này thuận tiện cho việc thay đổi trọng số khi cần. Khung đàm phán chất lượng dịch vụ Web này áp dụng phương pháp gán trọng số ở mục 4.6.3 để so sánh các hàm dịch vụ, từ đó chọn ra hàm dịch vụ phù hợp nhất với yêu cầu đưa ra.

Hình 4-7. Thông tin cấu hình chất lƣợng dịch vụ của dịch vụ Web kết hợp.

Bảng 4-6: Bảng biểu diễn tổng các thuộc tính chất lƣợng dịch vụ của các hàm chức năng trong dịch vụ BookingHotel

W1 W2 W3

FuncHotel1 h1 h2 h3 H1= h1*w1+h2*w2+h3*w3

FuncHotel2 h4 h5 h6 H2= h4*w1+h5*w2+h6*w3

FuncHotel3 h7 h8 h9 H3= h7*w1+h8*w2+h9*w3

Bảng 4-7: Bảng biểu diễn tổng các thuộc tính chất lƣợng dịch vụ của các hàm chức năng trong dịch vụ BookingTour

W1 W2 W3

Cost Time Availability Tổng

FuncTour1 t1 t2 t3 T1= t1*w1+t2*w2+t3*w3

FuncTour2 t4 t5 v6 T2= t4*w1+t5*w2+t6*w3

FuncTour3 t7 t8 t9 T3= t7*w1+t8*w2+t9*w3

FuncTour4 t10 t11 t12 T4=

t10*w1+t11*w2+t12*w3

Bảng 4-8: Bảng biểu diễn tổng các thuộc tính chất lƣợng dịch vụ của dịch vụ thành phần Travel_WS

W1 W2 W3

Cost Time Availability Tổng

Travel_WS v1 v2 v3 S= v1*w1+v2*w2+v3*w3

Từ bảng 4.6, 4.7 và 4.8 dịch vụ Travel_WS sẽ chọn ra tất cả các cặp (Ti, Hj) sao cho thỏa mãn điều kiện Ti +Hj <= S, với i =1..4 và j= 1…3.

4.7 Kết quả thực nghiệm

Dữ liệu đầu vào của dịch vụ Travel_WS bao gồm.

- Các thuộc tính chất lượng dịch vụ Cost, Time và Availability và trọng số tương ứng 0.3, 0.3, 0.4. Tổng các trọng số luôn phải bằng 1.

- Giá trị các thuộc tính chất lượng dịch vụ

{Cost, Time và Availability} = {1.7, 2.8,0.96}. - Thời gian timeout của dịch vụ Travel_WS là 15s.

Dữ liệu đầu vào của các dịch vụ thành phần BookingHotel, BookingTour - Thời gian timeout của các hàm chức năng là 15s

- Thời gian timeout của hàm chất lượng dịch vụ GetInfoQoS là 15s. Kết quả của khung đàm phán. (adsbygoogle = window.adsbygoogle || []).push({});

Kết quả các bước thực hiện của khung đàm phán như sau.

Bƣớc 1. Dịch Travel_WS đọc thông tin cấu hình để xác định các dịch vụ thành phần, sau đó Travel_WS gửi thông điệp GetInfoQoS với các dịch vụ thành phần.

Bƣớc 2. Kết quả phản hồi của hàm GetInfoQoS trong dịch vụ BookHotel là. [{cost:0.03636092,time:1.4978759,avaiablity:0.79, func:FuncHotel1}; {cost:0.49026966,time:1.2486365,avaiablity:0.96, func:FuncHotel2}; {cost:0.6564163,time:1.2208222,avaiablity:0.92, func:FuncHotel3}]

Kết quả phần hồi của hàm GetInfoQoS trong dịch vụ BookingTour là. [ {cost:0.78765845,time:0.81255513,avaiablity:0.79, func:FuncTour1}; {cost:0.9473247,time:1.2091951,avaiablity:0.84, func:FuncTour2}; {cost:0.73153687,time:0.7704551,avaiablity:0.79, func:FuncTour3}; {cost:0.7291133,time:1.2998772,avaiablity:0.84, func:FuncTour4}]

Bƣớc 3. Dịch vụ Travel_WS thực hiện tổng hợp kết quả phản hồi và tìm ra được các cặp hàm dịch vụ thỏa mãn điều kiện đầu vào. Kết quả của Travel_WS như sau. {cost:0.03636092,time:1.4978759,avaiablity:0.79, func:FuncHotel1,total:0.7762711}; {cost:0.78765845,time:0.81255513,avaiablity:0.79, func:FuncTour1,total:0.79606414} {cost:0.03636092,time:1.4978759,avaiablity:0.79, func:FuncHotel1,total:0.7762711}; {cost:0.73153687,time:0.7704551,avaiablity:0.79, func:FuncTour3,total:0.7665976} {cost:0.03636092,time:1.4978759,avaiablity:0.79,

func:FuncHotel1,total:0.7762711}; {cost:0.7291133,time:1.2998772,avaiablity:0.84, func:FuncTour4,total:0.94469714} {cost:0.49026966,time:1.2486365,avaiablity:0.96, func:FuncHotel2,total:0.9056719}; {cost:0.78765845,time:0.81255513,avaiablity:0.79, func:FuncTour1,total:0.79606414} {cost:0.49026966,time:1.2486365,avaiablity:0.96, func:FuncHotel2,total:0.9056719}; {cost:0.73153687,time:0.7704551,avaiablity:0.79, func:FuncTour3,total:0.7665976} {cost:0.6564163,time:1.2208222,avaiablity:0.92, func:FuncHotel3,total:0.93117154}; {cost:0.78765845,time:0.81255513,avaiablity:0.79, func:FuncTour1,total:0.79606414} {cost:0.6564163,time:1.2208222,avaiablity:0.92, func:FuncHotel3,total:0.93117154}; {cost:0.73153687,time:0.7704551,avaiablity:0.79, func:FuncTour3,total:0.7665976}

Bƣớc 4. Dịch vụ Web gửi thông điệp Confirm tới các dịch vụ thành phần yêu cầu xác định các hàm chức năng vừa chọn ở bước 3 có ở trạng thái sẵn sàng sử dụng không.

Bƣớc 5. Kết quả phản hồi của hàm Confirm trong dịch vụ BookingHotel. func:FuncHotel1,used:0,keys:8f2b6f6f-ee8e-4d80-be51-edf06719ea85; func:FuncHotel2,used:1,keys:8f6b9197-baad-4de5-91e1-69e28beccf24; func:FuncHotel3,used:1,keys:ca3a5fa5-8b76-46a1-a731-1ce3f238c058.

Kết quả phản hồi của hàm Confirm trong dịch vụ BookingTour.

func:FuncTour1,used:1,keys:b3859b81-f4e6-4c18-81f0-ebdfd0233236; func:FuncTour3,used:1,keys:a68564d4-3a55-4e48-b05f-8df8a3c66273; func:FuncTour4,used:1,keys:3153e320-c327-4cd8-9bd7-ec63c38f0c8e

Trong đó, giá trị used =1 nghĩa là hàm chức năng này ở trạng thái sẵn sàng và used = 0 là hàm này không ở trạng thái sẵn sàng. Mỗi hàm chức năng được nhận một giá trị keys, giá trị keys có ý nghĩa để dịch vụ thành phần xác định ứng dụng

Một phần của tài liệu Xây dựng khung đàm phán chất lượng dịch vụ cho dịch vụ web (Trang 62)