Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
บทท 1 บทนำ�
1.1 คว�มเปนม�และคว�มสำ�คญของโครงก�ร
โปรแกรมเวบเซอรวสเรยกงาย เปนโครงการทชวยสรางระบบพนฐานทสามารถเออใหผพฒนาสรางโปรแกรมดงกลาวไดงายขน โดยอาศยเทคนคดานการเขยนโปรแกรมแบบวชวล (Visual Programming) เพอลดเวลาและความซบซอนของการพฒนาไป นอกจากนเทคนคแบบโปรแกรมวชวล (Visual Programming) ยงเออใหผพฒนาสามารถตรวจสอบคณสมบตและสถานะตางๆ ของระบบไดงาย และดวยเทคโนโลยของเวบเซอรวส (Web Services) ทำาใหผพฒนาสามารถใชงานผานเวบบราวเซอร (Web Browser) ไดอกดวย ซงทำาใหผใชเรยกใชเวบเซอรวส (Web Services) ไดงายโดยไมจำาเปนจะตองรจก และเขาใจเวบเซอรวส (Web services)
1.2 วตถประสงคโครงการนมวตถประสงคเพอทำาใหเวบเซอรวส (Web services)
งายตอการเรยกใชและเพอตรวจสอบความถกตองของเวบเซอรวส (Web services) ซงจะทำาใหสามารถลดตนทนในการทำาธรกจหรอทำาใหเกดความสะดวกสบายในการเรยกใชบรการอนๆ
1.3 ขอบเขตของโครงก�ร1.พฒนาโปรแกรมใหสามารถเรยกใชเวบเซอรวส (Web services)
ไดทกแพลตฟอรม (platform) รวมไปถง ชนดของขอมลทสลบซบซอน (Complex type) ดวย 2.พฒนาโปรแกรมใหสามารถใชงานงายและเหมาะสมกบทกๆ เวบเซอรวส (Web services) และ ความตองการของผใช
1
3.พฒนาโปรแกรมทสามารถบนทกเวบเซอรวส (Web services) ทผใชทำาการเรยกหรอสรางขนมาใหมเพอใหสามารถเรยกใชไดโดยงาย 4.พฒนาโปรแกรมใหสามารถเรยกใชการบรการ (Services) ไดดวยตวโปรแกรมเอง
1.4 แผนก�รดำ�เนนง�น
โครงการนมระยะเวลาในการดำาเนนงานตงแตเดอน มถนายน พ.ศ. 2547 ถงเดอน กมภาพนธ พ.ศ. 2548 โดยมขนตอนการดำาเนนงานดงน 1.ศกษาและวเคราะห Tool ตางๆทใชในโปรแกรม (AXIS, JWSDL, WSFL, WSDL)
2.ออกแบบโปรแกรมใหสามารถใชงานงายและสมบรณ 3.เรมเขยนโปรแกรม 4.ทดสอบและแกไขขอผดพลาดของโปรแกรม 5.ทำารายงานและสรปผลโครงการและคมอการใช
แผนการดำาเนนงาน ม.ย.2547
ก.ค.2547
ส.ค.2547
ก.ย.2547
ต.ค.2547
พ.ย.2547
ธ.ค.2547
ม.ค.2548
ก.พ.2548
ศกษาหาความรทเกยวของออกแบบโปรแกรม
2
เรมเขยนโปรแกรมทดสอบโปรแกรมและแกขอผดพลาดทำารายงานสรปผลโครงการและคมอการใชงาน
1.5 ผลทค�ดว�จะไดรบ
1. ทำาให เวบเซอรวส ( Web services ) เปนทรจกและใชกนอยางแพรหลายมากขน
2. ทำาใหมความสะดวกสบายตอผใช เวบเซอรวส (Web services) ไมวาผใช จะรจกและเขาใจ เวบเซอรวส (Web services) หรอไม .
.
.บทท 2
ทฤษฎพนฐ�น
2.1 Web Services เวบเซอรวส (Web services) คอ application หรอ program ททำางานอยางใดอยางหนง ในลกษณะใหบรการ โดยจะถกเรยกใชงานจาก application อนๆ ซงการใหบรการจะมเอกสารทอธบายคณสมบตของบรการกำากบไว โดยภาษาทถกใชเปนสอในการแลกเปลยนคอ XML ทำาใหเราสามารถเรยกใช component ใด ๆ กได ใน platform ใด ๆ กได บน protocol HTTP ซงเปน protocol สำาหรบ World Wide Web อนเปนชองทางทไดรบการยอมรบทวโลกในการตดตอสอสารกนระหวาง application กบ application ในปจจบน
3
เวบเซอรวส (Web services) ชวยใหการเขาถงขอมลสารสนเทศจากแอพพลเคชนทตางกนเปนไปโดยงาย โดยแอพพลเคชนนนๆ สามารถเขยนดวย Java และรนอยบน Sun Solaris Application Server หรออาจจะเขยนดวย C++ และรนอยบน Windows NT หรออาจะเขยนดวย Perl และรนอยบนเครอง Linux ซงมาตรฐานของ เวบเซอรวส (Web services) ทำาใหอนเทอรเฟซของแอพพลเคชนเหลาน ถกอธบายโดย WSDL และทำาใหอยในมาตรฐานของ UDDI หลงจากนน จงสามารถตดตอสอสารถงกนโดย XML ผาน SOAP อนเตอรเฟส
เวบเซอรวส (Web services) สามารถถกเรยกใชภายในองคกรเองหรอจากภายนอกองคกร โดยผานไฟรวอล (Firewall) ดงนนจงมองคกรใหญๆ มากมาย กำาลงพฒนาระบบทมอยของตน ใหเขากบ เวบเซอรวส (Web services) ซงนบเปนการลงทนทคมคา เนองจาก เวบเซอรวส (Web services) สามารถเพมศกยภาพในการทำางานขององคกร อกทงลดคาใชจายในการจดการทรพยากรขององคกรไดอกทางหนง
นอกจากนน เวบเซอรวส (Web services) ยงสามารถใชรวมกบ เวบแอพพลเคชน (Web Application) โดยสงผานขอมลทางอนเตอรเนตไดอกดวยซงนบเปนวธทมประสทธภาพในการตดตอสอสารกบลกคาหรอหนสวน ถงแมจะตองคำานงถงระบบรกษาความปลอดภย และการจดการรายการของขอมลอยกตาม แต เวบเซอรวส (Web services) ไดใชมาตรฐานทวไปของอนเตอรเนต (Internet) เรองดงกลาวจงนบเปนเรองธรรมดาของการสอสารผานระบบอเลกทรอนกส
2.2 WSDL WSDL (Web Services Description Language)
เปนภาษาทใชอธบายคณลกษณะการใชบรการของ เวบเซอรวส (Web
4
services) และวธการตดตอกบ เวบเซอรวส (Web service) ความตองการของนยามนเกยวเนองกบความตองการของระบบกระจายขอมล (distributed system) ทจะกำาหนด Interface Definition Language (IDL) โดยใชภาษา XML, WSDL เกดจากการรวมแนวคดของ NASSL (The Network Accessible Service Specification Language), WDS (Well-Defined Services) ของบรษทไอบเอม, SDL (The Service Description Language) และ SCL (the SOAP Contract Language) ของบรษทไมโครซอฟท ปจจบน WSDL เปนภาษา ทอยในการดแลของ W3C (World Wide Web Consortium) ซงยงไมเปนมาตรฐานทสมบรณ เวอรชนทใชงานอยใน ปจจบนคอ WSDL 1.1 (รายละเอยดเพมเตมเกยวกบ WSDL สามารถศกษาเพมเตมไดท http://www.w3c.org/TR/wsdl) WSDL คอ มาตรฐานสำาหรบการประกาศ process ทจำาเปนในการเรยกใชเซอรวส SOAP (Simple Object Access Protocol)โครงสร�งเอกส�ร WSDL WSDL เปนภาษาทอยในความดแลขององคกร W3C (World Wide Web Consortium) version ทมอยในปจจบน คอ WSDL 1.1 ในการใชงานจรง หากเราสราง เวบเซอรวส (Web services) กจะมเครองมอชวยสรางเอกสาร WSDL สำาหรบ เวบเซอรวส (Web services) อยางอตโนมต จดภายในเอกสารทเราควรรเกยวกบการตดตอและเรยกใชบรการของ เวบเซอรวส (Web services) มจดทควรร ดงนElement Definition<portTy
pe>เปนสวนทสำาคญทสดใน WSDL element อธบาย operations ท web service มใหบรการและ messages ทเกยวของ เทยบไดกบ function library หรอ module หรอ class ในการเขยนโปรแกรม
5
<operation>
อธบาย method ทใหบรการ เวบเซอรวส (Web services) หนงจะม method จำานวนก method กได
<message>
อธบาย data elements ของ operation แตละ message อาจมมากกวาหนงสวนเทยบไดกบ parameter ของ function ในการเขยนโปรแกรม
<types>
อธบายชนดขอมลท web service ใช เพอความเปนกลาง WSDL ใช XML Schema syntax ในการระบชนดขอมล
<binding>
อธบาย format ของ message และ protocol details ในแตละ port
<service>
สำาหรบ web server จะม เวบเซอรวส (Web services) จำานวนกบรการกได และ ชอ เวบเซอรวส (Web services) กเปนตวจำาแนกและบงบอกแตละบรการซงหามมชอซำากน
ตามทฤษฎแลว ไฟลเอกสาร WSDL แตละไฟล สามารถอธบายคณลกษณะของบรการ เวบเซอรวส (Web services) ไดมากกวา 1 บรการโดยแตละ เวบเซอรวส (Web services) จะม port สอสารเฉพาะตว ซงบงบอกไวในเอกสาร WSDL อยแลวตวอยาง WDSL <?xml version="1.0" encoding="UTF-8" ?> <wsdl:definitions targetNamespace="http://localhost/axis/services/Version"
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost/axis/services/Version" xmlns:intf="http://localhost/axis/services/Version" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://www.soapinterop.org/Bid" xmlns:tns2="http://www.soapinterop.org/Registry" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types><schema targetNamespace="http://www.soapinterop.org/Bid"
xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <complexType name="Address"><sequence> <element name="address" nillable="true" type="xsd:string" />
6
<element name="city" nillable="true" type="xsd:string" /> <element name="name" nillable="true" type="xsd:string" /> <element name="state" nillable="true" type="xsd:string" /> <element name="zipCode" nillable="true" type="xsd:string" /> </sequence> </complexType>
<complexType name="LineItem"><sequence> <element name="name" nillable="true" type="xsd:string" /> <element name="price" nillable="true" type="xsd:decimal" /> <element name="quantity" type="xsd:int" /> </sequence> </complexType>
<complexType name="PurchaseOrder"><sequence> <element name="billTo" nillable="true" type="tns1:Address" /> <element name="createDate" nillable="true" type="xsd:dateTime" /> <element name="items" nillable="true"
type="impl:ArrayOf_tns1_LineItem" /> <element name="poID" nillable="true" type="xsd:string" /> <element name="shipTo" nillable="true" type="tns1:Address" /> </sequence> </complexType> </schema>
<schema targetNamespace="http://www.soapinterop.org/Registry" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <complexType name="Service"><sequence> <element name="serviceName" nillable="true" type="xsd:string" /> <element name="serviceType" nillable="true" type="xsd:string" /> <element name="serviceUrl" nillable="true" type="xsd:string" /> <element name="serviceWsdl" nillable="true" type="xsd:string" /> </sequence> </complexType> </schema>
<schema targetNamespace="http://localhost/axis/services/Version" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <complexType name="ArrayOf_tns1_LineItem"><complexContent><restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:LineItem[]" /> </restriction> </complexContent> </complexType> </schema> </wsdl:types>
<wsdl:message name="getVersionRequest" /> <wsdl:message name="getVersionResponse"> <wsdl:part name="getVersionReturn" type="xsd:string" /> </wsdl:message>
<wsdl:portType name="Version"><wsdl:operation name="getVersion"> <wsdl:input message="impl:getVersionRequest"
name="getVersionRequest" /> <wsdl:output message="impl:getVersionResponse"
name="getVersionResponse" /> </wsdl:operation>
7
</wsdl:portType><wsdl:binding name="VersionSoapBinding" type="impl:Version"> <wsdlsoap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="getVersion"> <wsdlsoap:operation soapAction="" /> <wsdl:input name="getVersionRequest"> <wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://axis.apache.org" use="encoded" />
</wsdl:input><wsdl:output name="getVersionResponse"> <wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/axis/services/Version" use="encoded" />
</wsdl:output> </wsdl:operation> </wsdl:binding>
<wsdl:service name="VersionService"><wsdl:port binding="impl:VersionSoapBinding" name="Version"> <wsdlsoap:address location="http://localhost/axis/services/Version" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
2.3 WSFL ศกษาและทำาความเขาใจกบ WSFL ไดดงน
Web Services Flow Language 1.0 (WSFL) เปนการใชมาตรฐานภาษา XML ในการอธบายการเชอมโยงกนระหวางเซอรวสและกำาหนดถงระดบการทำางานของแตละเซอรวส โดยลำาดบการทำางานจะใหนยามดวย Flow Control และการเชอมโยงระหวาง Services จะใหนยามดวย Data Link ขอมลทใชในการนำาเอามาและสำาคญมากคอ Web Services Description Language (WSDL) ซงเปนขอมลทอธบายถงการทำางานของแตละเซอรวส โดยจะอธบายวาจะสามารถเขาถงแตละเซอรวสอยางไร โดยจะมสวนเชอมตอ (interface) ของแตละเซอรวส ทจะให WSFL เขาถงและเรยกใชงาน (Binding)
สวนประกอบของ WSFL มดงน 1. เซอรวสทจะเรยกใช (Service Provider) 2. โอเปอรเรชนทจะเรยกใชแตละเซอรวส (Activity) 3. ทอย หรอ WSDL Object ของแตละเซอรวส (Locator)
8
4. Input และ Output ของแตละเซอรวส 5. Source Services คอ เซอรวสเรมตนทมการเรยกใช
6. ความสามารถในการเชอมโยงของแตละ Services (Data Link) ตองพจารณาชนดของ Data ทจะเชอมโยงกน
7. รปแบบการ Flow วาจะมการเรยกใชงาน Service ไหนกอนหลง (Control link)
8. เงอนไขในการ Flow วาจะเรยกใชแตละ Service เมอ เงอนไขเปนจรง (Transition Condition)9. เมอสรางรปแบบ Flow เสรจแลวจะใช Service ไหนในการ นยาม WSDL ของ FlowModel นน และสงออก (export) ในรปโครงสรางการทำางานของ WSFL จะเหนไดดงรปท 2.1
รปท 2.1 โครงสรางของ WSFL
Syntax Definition จากโครงสราง เราจะไดรปแบบของ tag ตางๆ ดงน
Element Attribut คำาอธบาย
9
e FlowModel
name เปน root ของเอกสารทอธบายถงรปแบบการ ทำางาน ของ Flow Services
Element Attribut
eคำาอธบาย
FlowSource
name อธบาย Services เรมตนทมการเรยกใชงาน
Element Attribut
eคำาอธบาย
ServiceProvider
name อธบายถง Services ทมการเรยกใช FlowModel
Element Attribute
คำาอธบาย
PortType
name อธบายถง PortType ของเซอรวสทเรยกใชเนองจากแตละเซอรวสอาจจะม PortType มากกวา 1 PortType ดงนนจงตองระบ PortType ทจะใชงานจรงดวย
Locator Type อธบายถงชนดของตำาแหนงของเซอรวส ซงจะมคาเปน static คอตำาแหนงของเซอรวสทมตำาแหนงไมแนนอนไมเปลยนแปลง หรอ Dynamics คอตำาแหนงของเซอรวสทมตำาแหนงไมแนนอนเปลยนแปลงได
Service ตำาแหนงของเซอรวส หรอ WSDL files
Element Attribute
คำาอธบาย
Export PortType
อธบายถงการจะ publish WSDL เปนเซอรวสทจะใช PortType อะไรซงโดยทวไปจะใช
10
PortType เดยวกนกบ PortType ของ FlowSource หรอเซอรวสเรมตนของ WSDL files
operation
อธบายถงการจะ publish WSDL เปนเซอรวสจะใช operation อะไรซงโดยทวไปจะใช operation เดยวกนกบ operation ของ FlowSource หรอเซอรวสเรมตนของ WSDL
Message
Name อธบายถงการจะ publish WSDL เปนเซอรวสจะใช Message อะไรซงโดยทวไปจะใช Message เดยวกนกบ Message Input ของ FlowSource หรอ เซอรวส เรมตน WSDL
Host Name อธบายถงการจะ publish WSDL เปนเซอรวสจะใหเซอรวสนนอยทตำาแหนง หรอให WSDL file ของ WSDL อยท URL ใด
Element Attribute
คำาอธบาย
Activity Name อธบายถง operation ทใชเรยกเซอรวสใน
11
แตละ PortType ทเลอกเนองจากในแตละ PortType ของเซอรวสตางๆ อาจจะม operation มากกวา 1 operation จงตองเลอก operation ดวย
Element Attribute คำาอธบายperformby
Serviceprovider
อธบายถง operation อยใน Service ใด
Input Name อธบายถง ชอ Input ของ operationMessage อธบายถง Message Input ของ
operationOutput Name อธบายถง ชอของ Output ของ
operationMessage อธบายถง Message Output ของ
operation
Element Attribute คำาอธบายControlLink
Name อธบายถงลำาดบการทำางานของเซอรวสตางๆ ซงจะกำาหนดโดยการพจารณาการทำางานแตละครง หลงจากทำางานเซอรวสปจจบนจะกำาหนดเปนตำาแหนง source แลวจะทำางานในเซอรวสใดในลำาดบถดไปซงจะกำาหนดเปนตำาแหนง target ทำาจนกระทงถงเซอรวส สดทาย
source อธบายถงเซอรวสปจจบนทกำาลงทำางานtarget อธบายถงเซอรวสถดไปทจะมการเรยกใชงานtransitioncondition
อธบายถงเงอนไขในการทำางานของเซอรวสถดไป ซงจะตองพจารณาเงอนไขดวย โดย
12
เงอนไขจะม 2 รปแบบ คอ -เงอนไขแบบเปรยบเทยบ และเงอนไขการกำาหนด loop-เงอนไขจากการเปรยบเทยบจะพจารณาผลการเปรยบเทยบเปนจรง หรอ เทจ เชนการเปรยบเทยบ X >Y ซงเซอรวสถดไปจะทำางานเมอผลการเปรยบเปนจรง-เงอนไขการกำาหนด loop จะทำางานจากเซอรวส source และถดไปทำางานเซอรวส target จนกระทงครบตามจำานวน loop ทกำาหนด
end อธบายถงจดสนสดของการทำางานของเซอรวส ซงจะพจารณาจาก คา True หรอ False ถาเปน True จะถอวา target ของ ControlLink นนจะทำางานเปนเซอรวสสดทายของ WSDL
Element Attribute
คำาอธบาย
DataLink
Name อธบายถงความสมพนธ และการเชอมโยงระหวาง Output ของ Service source และ Input ของ Service target
Source อธบายถง Service source ทจะพจารณาคา Output วาจะกำาหนดเปน Input ของเซอรวสถดไปไดอยางไร
Target อธบายถง Service target ทจะพจารณาคา Input วาจะสามารถนำาคานมาจาก Output ของเซอรวสกอนหนาไดอยางไร
13
Element Attribute
คำาอธบาย
Part value อธบายคาทเปน Input ของ Service target ซงอาจจะไดมาจาก Output ของเซอรวสกอนหนา หรอไดมาจากการกำาหนดคา Input จากผใชกได
Type อธบายถงชนดของ Input เชน Integer, String เปนตน
Arg อธบายถง Field หรอ Argument ของ Message Input ซงจะใชสำาหรบการ mapping คาของ Input ของ Service target ใหถกตอง กบ Part ของ Message Input
จากการออกแบบแทกดวยภาษา XML โดยพจารณาถงความเหมาะสมในหลายๆสวนดงน
1. ความหลากหลายของ tag ควรเหมาะสมตามจำานวนความจำาเปนของขอมล โดยไมนยาม tag ใหมากเกนความจำาเปนซงจะทำาใหไมเกดความสบสนสำาหรบผทจะศกษาการออกแบบ WSDL
2. เนองจาก WSDL เปนภาษาทอยระหวางการพฒนาเปนภาษามาตรฐาน ดงนนในการออกแบบ จงเปนการผสมระหวางแนวความคดเดมทไดมผออกแบบระบบกอนหนานแลว กบความคดใหม เพอใหเหมาะสมกบระบบ Visual Editor ของโครงการน
3. รปแบบของ tag มความยดหยนพอทจะสามารถประยกตเพอทจะทำาการขยาย หรอปรบปรงใหเหมาะสมในอนาคต
14
4. ในการพฒนาดาน programming ใช ภาษา java ในการพฒนา และใชเทคโนโลย DOM ( Document Object Model ) ซงจะม API (Application Programming Interface) ในการเรยกใชงานซงทำาใหมความสะดวกและยดหยนในการขยายระบบตอไป ซงเหมาะกบการพฒนาโครงการน
ตวอยาง WSFL ของ travel agent business ซงประกอบดวย Services airline และ Services traveler ดงรป ท 2.2
รปท 2.2 ตวอยาง WSFL
15
รปท 2.2 ตวอยาง WSFL (ตอ)
16
รปท 2.2 ตวอยาง WSFL (ตอ)
17
บทท 3ง�นทเกยวของ
งานทเกยวของมดงตอไปน- HOOK- การวเคราะหเวบเซอรวส ของ WWW.WSIAM.COM 3.1 HOOK
HOOK เปนโครงการพฒนาตนแบบโปรแกรมสรางการกระจายงานในระบบเครอขาย เปนโครงการทชวยสรางระบบพนฐานทสามารถเออใหผพฒนาสรางโปรแกรมดงกลาวไดงายขน โดยเฉพาะเมออาศยเทคนคดานการเขยนโปรแกรมแบบวชวล (Visual Programming) สามารถลดเวลาและความซบซอนของการพฒนาไปไดมาก นอกจากนการเขยนโปรแกรมแบบวชวล (Visual Programming) ยงเอ อใหผ พฒนาสามารถตรวจสอบคณสมบตและสถานะตางๆ ของระบบไดงาย และดวยเทคโนโลยของเวบเซอรวส (Web Service) ทำาใหผพฒนาสามารถใชงานผานเวบบราวเซอร (Web Browser) ไดอกดวย
ซอฟตแวรในโครงการ จะประกอบดวยซอฟตแวรหลก 3 ชนงานไดแก1. ซอฟตแวรสำาหรบการสรางโปรแกรมประมวลผลแบบกระจาย
ระบบ GIS (Hook System Application)2. ซอฟตแวรสำาหรบการสรางโปรแกรมประมวลผลแบบกระจายโดย
ใช Visual Editor3. ซอฟตแวรต วอยางการประมวลผลแบบกระจายทสรางจาก
ซอฟตแวรของโครงการโดยซอฟตแวรหลกของโครงการนจะเปนการพฒนาซอฟตแวรสำาหรบการประมวลผลแบบ กระจายโดยใช Visual Editor
3.1.1 คว�มส�ม�รถของ HOOK ผใชสามารถออกแบบระบบการประมวลผลโดยนำา object ไปวางใน
Editor และกำาหนดทศทางการไหลของการประมวลผลใหกบ object เพอทโปรแกรมสามารถประมวลผลตามระบบทออกแบบได object ทวานผ
18
พฒนาจะเรยกวา WSDL Component โดยความสามารถโดยรวมมดงน
1. สามารถออกแบบระบบการประมวลผลแบบกระจายได โดยการนำาองคประกอบตางๆ สำาหรบการออกแบบระบบมาวางบน Visual Editor
2. สามารถตรวจสอบหรอกำาหนดคณสมบตขององคประกอบการประมวลผลได
3. สามารถกำาหนดทศทางการไหลของการประมวลผลแบบกระจายได
4. สามารถกำาหนดเงอนไขในการไหลของการประมวลผลแบบกระจายได
5. สามารถทจะตรวจสอบคณสมบตขององคประกอบการประมวลผล (WSDL Component) จากตางเครองซงเปนระบบประมวลผลเดยวกนได
6. มความสามารถในการแลกเปลยนขอมลทเกดจากการออกแบบโดยผใช บคคลอนสามารถดขอมลขององคประกอบตางๆ เพอใหตวโปรแกรมเดยวกนจากตางเครองซงอยในระบบประมวลผลเดยวกน แตไมสามารถทจะแกไขขอมลได
7. สามารถตรวจสอบความถกตองของระบบทออกแบบได8. สามารถทจะทำาการประมวลผลแบบกระจาย และแสดงผลลพธ
ของการประมวลผลได
ซ งจากความสามารถในการทจะสามารถกำาหนดคณสมบตของ WSDL Component โดยคณสมบตหนงกค อ ก ำาหนดถงทอยของ WSDL Component นน ทำาให WSDL Component ทมาประกอบบน Visual Editor นนมาจากทอยหลายทและทำาการประมวลผลตามแตละท ท WSDL Component นนใหบรการอย ซงการประมวลผลรปแบบนกคอระบบการกระจายงานในระบบเครอขายนนเอง
19
3.1.2 รปแบบของ HOOK- เปนลกษณะ Visual Programming - สราง Source Code ได- ปรบแตงคาของ Services ได
รปท 3.1 รปตวอยางของโปรแกรม HOOK
สภ�พแวดลอมของระบบทจะส�ม�รถใชง�นโปรแกรมได1.ระบบปฏบตการ Linux หรอ Windows 95/98/NT/XP2. ตดตง JRE 1.4.0 ขน3.ตดตง GLUE ของบรษท The Mind Electric Co., Ltd4.ตดตง โปรแกรม Web Browser คอ Netscape หรอ
Internet Explorer 5.ตดตง โปรแกรม Web Server คอ Apache Web Server
3.1.3 ขอเสยของ HOOK1. สนบสนนเวบเซอรวสทพฒนาดวย GLUE อยางเดยว2. ไมสามารถใชกบเวบเซอรวส ( Web Services ) ทมชนดขอมลท
สลบซบซอน
20
( Complex Type ) ได3. ไมสามารถเรยกการบรการ ( Call Services ) ไดดวยตวเอง
(คอเมอโปรแกรมเสรจแลว จะไมสามารถเรยกใชงานเซอรวสไดโดยตรงตองสรางคลาสและใชเครองมอตวอนเรยกอกท (GLUE) )
4. ไมสามารถทำาตามความสามารถของโปรแกรม HOOK ไดจรง
3.1.4 ขอแตกต�งระหว�ง HOOK และ โปรแกรมเวบเซอรวสเรยกง�ย
HOOK โปรแกรมเวบเซอรวสเรยกงาย
สนบสนน GLUE อยางเดยว สนบสนนทกแพลตฟอรม (Platform)
ไมสามารถใชกบเวบเซอรวส ( Web Services ) ทมชนดขอมลทสลบซบซอน ( Complex Type ) ได
สามารถใชกบเวบเซอรวส ( Web Services ) ทมชนดขอมลทสลบซบซอน ( Complex Type ) ได
ไมสามารถเรยกการบรการ ( Call Services ) ไดดวยตวเอง
สามารถเรยกเซอรวสไดโดยตรง
ไมสามารถทำาตามความสามารถของโปรแกรม HOOK ไดจรง
สามารถทำางานตามคณสมบตทออกแบบไวได
3.2 ก�รวเคร�ะหเวบเซอรวส ของ WWW.WSIAM.COM
งานทไดศกษาอกอยางคอ การโหลดและวเคราะห WSDL ผาน engine ของ www.wsiam.com
21
ขนตอนในก�รโหลดและวเคร�ะห WSDL ของ WWW.WSIAM.COM
ในสวนของ www.wsiam.com นน เมอเรยกใช เซอรวส (Services) ผาน Engine ของ www.wsiam.com แลว จะวเคราะห WSDL ออกมาและแสดง การใหบรการ(Operation) ทมอย ใหทำาการเรยกใช ดงรปท 3.2
รปท 3.2 แสดง Services ทวเคราะหผาน Engine ของ
www.wsiam.com
เมอทำาการเรยกใช การใหบรการ(Operation) ทมใน เซอรวส(Services) จะแสดงชองใหใสขอมลทตองการ ดงรปท 3.3 เพอนำาไปประมวลใหไดผลลพธ ชองทใหใสคาจะบอกแค ชนดของขอมลทใส ไมไดบอกวาขอมลนนคออะไร ทำาใหเขาใจไดยาก ตองทำาการศกษามากอนจงจะเขาใจ
22
รปท 3.3 แสดง input ของ Operation ทเรยกผาน Engine ของ wsiam
ขอเสย ของการวเคราะหแบบผาน Engine ของ wsiam น คอ 1 ไมสามารถนำาไปพฒนาตอได ซง ในโปรแกรมเวบเซอรวสเรยกงาย
(Easy Call Web Services) สามารถนำาไปวเคราะหและเชอมกบ เซอรวส(Services) อน ได กำาหนดเงอนไขการทำางานได
2 Input ทใหใสมความยงยาก รายละเอยดในการอธบายนอยเกนไปผใชงานทวไปทไมมความรดานโปรแกรม ทำาใหผใชไมสามารถใชเวบเซอรวสไดโดยงาย
3 เมอตองการใชงานใหมจะตองโหลด WSDL และทำาการวเคราะหใหม
ซงโปรแกรมเวบเซอรวสเรยกงาย (Easy Call Web Services) สามารถแกไขขอบกพรองดงกลาวขางตนได
23
บทท 4
ก�รออกแบบและพฒน�โปรแกรมเวบเซอรวสเรยกง�ย
ในบทนจะอธบายถงการออกแบบและพฒนาโปรแกรมเวบเซอรวสเรยกงาย ซงจะมรายละเอยดขนตอนทพฒนา สวนประกอบของโปรแกรมเวบเซอรวสเรยกงาย เหตผลในการออกแบบ และรายละเอยดของสวนประกอบอนๆ
4.1 ขนตอนก�รก�รพฒน�โปรแกรมเวบเซอรวสเรยกง�ย -ศกษาสวนประกอบตางๆทสำาคญและจำาเปนในการทำางานของโปรแกรมเวบเซอรวสเรยกงาย -แยกการทำางานโปรแกรมเวบเซอรวสเรยกงายออกเปนสวนๆเพอใหงายตอการพฒนา -แบงงานใหแตละคนทำาตามทถนด -นำาสวนยอยของโปรแกรมเวบเซอรวสเรยกงายแตละสวนทไดมารวมกน -ทดสอบขอผดพลาดการทำางานของโปรแกรมเวบเซอรวสเรยกงาย
4.2 โครงสร�งและสวนประกอบของโปรแกรมเวบเซอรวสเรยกง�ย ( Graphics User Interface )GUI รวมทงหมดของโปรแกรม
ไดมการออกแบบหนาตาของโปรแกรมเวบเซอรวสเรยกงาย ใชหลกการของการเขยนโปรแกรมแบบวชวลซงจะทำาใหงายตอการออกแบบ การออกแบบ Visual Programming โดยสามารถจบวางแลว
24
กำาหนดคณสมบตได จะทำาใหผใช สามารถเรยกใชเวบเซอรวสไดงาย แมผใชไมมความรดานการเขยนโปรแกรมเลยกตาม
รปท 4.1 แสดงสวนประกอบทงหมดของโปรแกรมเวบเซอรวสเรยกงาย
เมนและแถบเครองมอเมน จะมคำาสงทใชในโปรแกรมทงหมด ดรปท 4.2 ประกอบ
1 File ม การสราง Project, เปด Project, ปด Project , และ Load WSDL2 Edit มคำาสงแก ในสวน Visual Editor 3 Build มคำาสงเกยวกบการสรางโปรแกรม และฟงกชน4 Help ขอความชวยเหลอในการใชงาน
25
สวนแถบเครองมอ จะเกบเฉพาะ เมนทคาดวาจะใชบอย ทำาเปนแถบเครองมอขนมาเพอใหสะดวกในการใชงาน สวนคำาสงทไมจำาเปนจะไมนำามาใสในแถบเครองมอเพราะจะไมทำาใหดรกและไมทำาใหโปรแกรมมขนาดใหญขนโดยไมจำาเปนอกดวย
เมนในสวนของเมน และแถบเครองมอเพอเพมความสะดวก จะทำาใหมคยลด (Hot key) ใหผใชงานใชไดสะดวกยงขน
รปท 4.2 แสดงสวนของเมน และแถบเครองมอ
สวนประกอบของก�รกำ�หนดและควบคม (Flow Components)เปนสวนทจะกำาหนดการเชอม Flow โดยนำาไปวางใน Visual
Editor โดยจะเชอม เซอรวส (Services) ตางๆ และจะกำาหนดคณสมบต เงอนไขของการทำางานของ เซอรวส (Services) ทนำามาทำางานรวมกน เซอรวส (Services) ทจะนำามาเชอมกนนจะตองเรมดวย สวนของจดเรม (Component Start) และจบดวย สวนของจดจบ (Component Stop) เพอทเราจะไดทราบวาจดเรมตนของ เซอรวส (Services) ทเรานำามาเชอมอยทใด และไปสนสดทตรงไหน ทำาใหในการเขยนโปรแกรมเพอตรวจสอบขบวนการภายในทำาไดงายไมสบสน ทำาใหการสรางฟงกชนของเซอรวส (Services) ททำาการเชอมและวเคราะห แลวทงหมดสะดวกขน
สวนประกอบ(Components) ทใชมดงน ดรปท 4.3 ประกอบ 1 Start มเพอบอกจดเรมตนของ เซอรวส (Services) ทเราจะนำาเชอม 2 Stop มเพอบอกจดสนสดของ เซอรวส (Services) ทเราจะนำาเชอม 3 Flow มเพอทจะเชอม เซอรวส (Services) , เงอนไข (Condition) , เชอมกบจดเรม (Start)
26
และจดจบ(Stop) 4 Services Flow ทำาหนาทเชอมเหมอน Flow แตจะเปนเฉพาะกรณ
ท เซอรวส (Services) เชอม กบ เซอรวส (Services) เทานน เพอเปนการแยกความแตกตางระหวาง การเชอมแบบปรกต และการเชอมแบบ เซอรวส (Services) ในอนาคตอาจจะยบไปรวมกบ Flow ได ถาสามารถแยกการเชอมไดวาเปนการเชอมแบบไหน
5 Pointer มเพอทจะเปนตวเลอกเหมอนสวตซ เปดปดไฟ วาจะใชงาน Component ตวไหน 6 Condition เปนการกำาหนดเงอนไขแบบปรกต 7 Loop Condition เปนสวนทกำาหนดเงอนไขแบบวนลป (Loop) 8 Summary Condition เปนเงอนไขทจะรวม เซอรวส (Services)
1 2 3 4
5 6 7 8รปท 4.3 แสดงสวนของ Flow Components
สวนประกอบทเกบเซอรวส (Service Components)เปนสวนทเกบ เซอรวส (Services) ททำาการโหลดมาและวเคราะห
แลวทำาการบนทก (Save) เกบในรปแบบของโครงสรางของ XML และรปแบบในการเกบเซอรวส (Services) จะใชแบบตนไม (Tree) แทนการเกบแบบ List เพราะ แตละ เซอรวส (Services) อาจจะม หลาย Operation ทำาใหเวลาใชงานอาจทำาใหสบสนได Tree ทำาใหเราเกบไดเปนระเบยบแยกแตละ Operation ใน Services ไดชดเจน และเมอ
27
ตองการใชงานเฉพาะ บาง Operation กสามารถเรยกใชงานไดเลยโดยไมตองเรยกทง Services
สวนประกอบทเกบเซอรวส (Service Components) แบงยอยได 2 สวน คอ
1. เซอรวสททำ�ก�รเชอมและกำ�หนดแลว(Our Services)เปนสวนทเราทำาการโหลด เซอรวส (Services) อนๆ แลวนำามา
ทำาการวเคราะห เชอม Flow กำาหนดคณสมบตและเงอนไขตามทเราตองการแลว ทำาการ Save จดเกบในรปแบบโครงสรางของ XML เมอกลบมาใชงานภายหลง ทำาใหไมตองเสยเวลาทำาการวเคราะห ตรวจสอบและเชอม เซอรวส (Services) ใหม เราสามารถนำาเซอรวสทเราออกแบบและวเคราะหไวแลวมาเรยกใชงานไดเลย เหมอนกบการทเรานำา เซอรวส (Services) อน มาผสมกนโดยการเชอม และกำาหนดเงอนไขทำาใหเกดเปน เซอรวส (Services) ใหม ขนมาทเกดจากการนำา Operation ของ เซอรวส (Services) มารวมกน เวลาเรยกใชงานกจะเรยกเพยงครงเดยว กจะเหมอนกบการเรยกใชหลายๆ เซอรวส2. เซอรวสทมใหบรก�รอยแลว(Others Services)
เปน เซอรวส (Services) ทมผใหบรการอยแลว โดยตวโปรแกรมจะทำาการโหลดและวเคราะหตวใหบรการ (Operation) และบนทก (Save) เกบไวในรปแบบโครงสรางของ XML ทำาใหเราสามารถเรยกใชงาน เซอรวส (Services) ไดเลยโดยทไมตองทำาการวเคราะหใหม ทำาใหการใชงานรวดเรวและสะดวกยงขน อกทงยงนำาไปวเคราะห เชอม เซอรวส (Services) ตอไดอกในสวนของ เซอรวสททำาการเชอมและกำาหนดแลว(Our Services)
28
รปท 4.4 แสดงสวนของ Service Components
คำ�อธบ�ยคณลกษณะ(Description)เปนสวนทอธบาย ความสามารถของ เซอรวส (Services) วาให
บรการเกยวกบอะไร รวมถงคำาจำากดความสนๆ ของ เซอรวส (Services) นนๆ รวมถงขอมลอนพท (input) และขอมลเอาพท (output) วาเปนขอมลชนดอะไร อธบายขอมลเทาทจะหาไดจากผทใหบรการ
ออกแบบใหมสวนนเพอทจะชวยใหผใชเขาใจ เซอรวส (Services) ทใหบรการวาเปนบรการอะไร จะไดสงขอมลเพอทจะรบบรการไดถกตอง อยางในรปท 4.5 เปนการอธบาย เซอรวส (Services) ทชอ Spell Checker ทม URL คอ http://wsdl.wsdlfeeds.com/spell.cfc?wsdl
ตวโปรแกรมจะทำาการแสดงคำาอธบาย เมอเราคลกเลอก เซอรวส (Services) ทเกบไวใน สวนประกอบทเกบเซอรวส (Services Components)
รปท 4.5 แสดงสวนของ Description
29
ตวแกไขวชวล (Visual Editor)เปนสวนทใชในการออกแบบ โดยการเขยนโปรแกรมแบบวชวล จะ
เปนสวนทใหนำาสวนประกอบ (Components) มาวาง และเชอม เซอรวส (Services) การดำาเนนการจะทำาใน Visual Editor น เมอออกแบบในสวนนเสรจแลวจะตองสามารถ ทำาการสรางฟงกชน ใหเปนไปตามเงอนไขทวเคราะหและออกแบบได
ในรปท 4.6 แสดงการออกแบบ เซอรวส (Services) ทนำา เซอรวส (Services) ทมอยแลวมาเชอมกน เรมโดยจดเรม (Start) จบดวยจดจบ (Stop) ออปเจค (Object) สเหลองคอ ตวแทนของ เซอรวส (Services) ทเราโหลดมา หรอ นำามาจากทเราไดโหลดและบนทก ไวในสวนของตวทเกบเซอรวส (Service Components) อยกอนแลว การเชอมเงอนไข (Condition) จะตองสามารถทำาได ออปเจค (Object) สฟา คอสวนของเงอนไข (Condition) ทจะเปนตวกำาหนดเงอนไขในการทำา วาจะเลอกไปเชอมและทำางานในสวนของ เซอรวส (Services) ไหนตอ เมอออกแบบและกำาหนดคณสมบตไดครบตามทตองการแลวกจะสรางฟงกชน ขนมา
30
รปท 4.6 แสดงสวนของ Visual Editor
เหตผล ในการออกแบบ เปนวชวล คอ การทมภาพออปเจค (Object) แสดงเปนตวแทนจะทำาใหเขาใจไดงาย ออกแบบไดงาย เพราะไมตองไปยงกบการเขยนคำาสงโปรแกรม ซงคำาสงโปรแกรมหรอฟงกชน นจะถกสรางขนมาจาก class ทใชในการสรางคำาสงฟงกชน (Generate Code) ใน Library Axis ทนำามาใชในโปรแกรมนนม class ทใชใน การสรางคำาสงฟงกชน (Generate Code) ดงนนจงไมตองเขยน class นนใชขนมาเอง4.3 ก�รโหลดและวเคร�ะห WSDL ขนตอนในก�รโหลด WSDL ของโปรแกรมเวบเซอรวสเรยกง�ย คอ 1 หาทอย URL ของ Services ทใหบรการ ในทนเลอกหาจาก www.wsiam.com ดงรปท 4.7
31
รปท 4.7 แสดงการหา URL ทอยของ Services จาก www.wsiam.com
2 เมอได URL มาแลว เรยก class ในการโหลด WSDL ขนมา ใส URL ทตองการจะโหลดลงไป ดงรปท 4.8
รปท 4.8 แสดงการโหลด WSDL3 เรากจะไดขอมลของ เซอรวส (Services) นนมาวเคราะห ดงรปท 4.9
32
รปท 4.9 แสดง WSDL ทโปรแกรมโหลดมาได4 เมอโหลด WSDL มาแลวเราจะนำาขอมลไปวเคราะห ตอได เพอแยก การใหบรการ (Operation) แลวบนทก เกบไวใน Others Services หรอจะนำาไปใสในสวนของ Visual Editor เพอทำาการ เชอม Flow และ เซอรวส (Services) อนกำาหนดเงอนไขแลว คอยทำาการบนทก เกบไวกได เมอนำามาเรยกใชงานจะเปนดงรปท 4.10
รปท 4.10 แสดงสวนของ Visual Editor เมอ Load WSDL
33
4.4 แนวก�รพฒน�โปรแกรมสถาปตยกรรมของระบบ (System Architecture)
ลกษณะการประมวลผลของระบบทออกแบบโดยโปรแกรมการประมวลผลแบบกระจายดวย Visual Editor จะมลกษณะดง รปโดย WSDL Component แตละโมดลจะใชบรการจาก เวบเซอรวส เพอประมวลผลอนพตทผใชงานโปรแกรมกำาหนด
เมอ WSDL Component เรยกใชบรการ เวบเซอรวส และไดรบผลลพธการประมวลผล เอาตพตทไดนจะถกสงตอไปเปนอนพตของ WSDL Component ตวอนๆ เพอประมวลผลตอไปตามทไดออกแบบระบบไว โดยผพฒนาจะอาศยมาตรฐานของ WSFL (Web Service Flow Language) ในการควบคม และตรวจสอบเงอนไขตางๆ เพอใหการไหลของขอมลการประมวลผลเปนไปตามทผใชงานโปรแกรมไดออกแบบระบบประมวลผลไว23233333125
34
System Architecture ของระบบก�รประมวลผลรปท 4.11 แสดงรปแบบการประมวลผล
รปแบบการประมวลผลสามารถแบงได 2 รปแบบ คอก�รประมวลผลแบบต�มลำ�ดบ (Sequential Flow Control)
การประมวลผลลกษณะน คอ การประมวลผลทยดถอเฉพาะลำาดบของการทำางานเทานน ดงตวอยางรปท 4.12
รปท 4.12 การประมวลผลแบบลำาดบ
35
ก�รประมวลผลแบบมเงอนไข (Condition Flow Control)การประมวลผลลกษณะน คอ การประมวลผลทยดถอทงลำาดบของ
การทำางานและเงอนไขในการจะทำางานลำาดบตางๆ ดงตวอยาง รปท 4.13
รปท 4.13 รปแบบการประมวลแบบมเงอนไข.
รปแบบก�รทำ�ง�นของระบบรปแบบการทำางานของระบบจากตวอยาง Flow Control สามารถ
แสดงไดดง รปท 414. ซงจะเหนไดวา ผทตองการใชบรการจากระบบประมวลผล GIS นนจะเขาถงบรการไดจาก Easy Call Web Services (ซงโปรแกรมเปนตว Generate Code สวนนจากการออกแบบระบบประมวลผล ) หนาทของ Easy Call Web Services คอการควบคมการไหลของการประมวลผล ( Flow Control ) ใหเปนไปตามทไดออกแบบระบบไว เมอ Easy Call Web Services ถกกำาหนดอนพตและถกสงใหเร มตนประมวลผล Easy Call Web Services จะทำางานโดยการไปเรยกใชงาน (Invoke) Services ยอยอนๆ ภายในระบบ ในกรณทเซอรวสยอยเหลานนตองการอนพต Hook Service กสามารถบอกเซอรวสยอยเหลานนไดวาสามารถไปเอาอนพตไดจากทไหน
ผลลพธทเกดจากการประมวลผลของเซอรวสยอยเหลาน ไมไดถกสงกลบมายงต ว Easy Call Web Services แตเซอรวสยอยจะเก บผลลพธการประมวลผลไวทตวเอง (ททเซอรวส locate อย ซงไมจำาเปน
36
ตองอยทเดยวกบเคร องทรนโปรแกรมอย ) เมอเซอรวสยอยประมวลผลเสรจกจะสง response กลบมายง Easy Call Web Services พรอมทงตำาแหนงของผลลพธ หลงจากนน Easy Call Web Services กจะไป เรยกเวบเซอรวสอนๆ ตามลำาดบและเงอนไขทกำาหนด พรอมทงบอกเซอรวสยอยนนวาสามารถไปเอาอนพต (ทจะเอามาประมวลผลจรง ) ไดจากทไหน ซงจะเหนไดวาการทำางานลกษณะนจะเสมอนกบวาแตละเซอรวสยอยนนไดคยกนเอง
รปท 4.14 แสดงรปแบบการทำางานของระบบ
4.5 สวนประกอบของ class ทจำ�เปน
package ชอ WSDLDocument มอย 7 class ซงแตละ class หนาทแตกตางกนออกไป
-ReadWSDL ทำาหนาทอานและกำาหนด configure ตางๆ ของ WSDL
37
-WSDLDocument เปนตวหลกในการทำางานในการตรวจสอบ WSDL -WSDLComplexType เปนตวตรวจสอบ Complex Type -WSDLOperation ตรวจสอบ operation ของ Services -WSDLMessage ตรวจสอบ Message ของ Services -WSDLPortType ตรวจสอบ PortType ของ Services
-WSDLVariable ตรวจสอบตวแปรทมชนดขอมลสลบซบซอน (Complex Variable Type) ใน WSDL
. .
บทท 5 ขนตอนก�รพฒน�
5.1 สวนของก�รพฒน�
- ในการทดสอบเรยกใช Service เราไดเขยน class เพอทำาการเรยก service ขนมา เพอทำาการเรยกใช service ดงน
ซงเมอทำาการทดสอบ โดยใช Service Stock Quote ซง ผ Publish คอ walterjones เปน service ทใชในการดขอมลของ หน ตางๆทสำาคญ โดยไดทำาการสง input เปน หนของ CNN จะได output ดงน GetQuoteResult=<StockQuotes><Stock><Symbol>CNN</Symbol><Last>6.28</Last><Date>12/17/2004</Date><Time>2:56pm</Time><Change>0.00</Change><Open>6.29</Open><High>6.32</High><Low>6.28</Low><Volume>2600</Volume><MktCap>N/A</MktCap><PreviousClose>6.28</
38
PreviousClose><PercentageChange>0.00%</PercentageChange><AnnRange>5.36 - 6.65</AnnRange><Earns>0.00</Earns><P-E>N/A</P-E><Name>PROSPECT INC SHS </Name></Stock></StockQuotes>ทดสอบโดยการ ใส input เปน CNS (พฒนสน) GetQuoteResult=<StockQuotes><Stock><Symbol>CNS</Symbol><Last>15.86</Last><Date>12/17/2004</Date><Time>4:10pm</Time><Change>-0.24</Change><Open>16.10</Open><High>16.10</High><Low>15.76</Low><Volume>123100</Volume><MktCap>560.3M</MktCap><PreviousClose>16.10</PreviousClose><PercentageChange>-1.49%</PercentageChange><AnnRange>13.00 - 17.98</AnnRange><Earns>0.18</Earns><P-E>89.44</P-E><Name>COHN & STEERS</Name></Stock></StockQuotes>ดงรปท 5.1 เปนรปตวอยางการเรยกใช class ททำาการ call service
โดยการแกในตวโปรแกรมโดยตรง
39
รปท 5.1 การเรยกใช class ททำาการ call service
รปท 5.2 แสดงตวอยางของการผลลพธของการ call Services
40
-เนองจากปญหาจากการพฒนาของภาคการเรยนทแลว ทพบวาเมอนำา GUI มาใชทำางานจรงในสวนของ Visual Editor จะมการกระพรบของภาพวตถเกดขน ดงนนจงได ทดลองเขยนโปรแกรมทแกไขปญหาการกระพรบของ VisualEditor ทมการปรบปรงและแกไข
สวนของโปรแกรมมดงน
public void paint(Graphics g) { super.paint(g); paintModel(g); /* if (bufimg!=null) g.drawImage(bufimg,0,0,this); else { bufimg = createImage(getWidth(),getHeight()); // Works in Java2 from Sun only !!! bufgrf = bufimg.getGraphics(); }*/
} public void paintModel(Graphics g){ if(flagMove){ g.setColor(Color.white); g.fillRect(tempmoveX, tempmoveY, model_services.getWidth(this), model_services.getHeight(this)); } for(int i=0;i<pointX.size();i++){ g.drawImage(model_services,Integer.parseInt(pointX.g
41
et(i).toString().trim()),Integer.parseInt(pointY.get(i).toString().trim()),this); } } public void update(Graphics g){ paintModel(g); } private void canvas1MouseDragged(java.awt.event.MouseEvent e) { if(flagMove){ tempmoveX = Integer.parseInt(pointX.get(tempMove).toString()); tempmoveY = Integer.parseInt(pointY.get(tempMove).toString()); pointX.setElementAt(e.getX()+"",tempMove); pointY.setElementAt(e.getY()+"",tempMove); repaint(); } }
ผลของการทำางานของโปรแกรมดงรปท 5.3 และ รปท 5.4
42
รปท 5.3 แสดงการวางวตถแลวลากไมกระพรบ
รปท 5.4 แสดงการวางวตถ
43
- สามารถลากและวาง object โดยไมเกดการกระพรบ- สามารถสราง object ซำาๆกนได- แกปญหาเวลา ลากรปแลวไมใหกระพรบโดยการเลอก พนทในการใช
method updateเฉพาะสวน แลวทำาการ repaint ทบ object เดมทไมตองการ ทำาใหไมเกดการกระพรบ
เขยน GUI ขนมาใหม
รปท 5.5 GUI
- สามารถยอ หรอขยาย Frame ได- ลดจำานวน Object Components ใหเหลอเฉพาะทจำาเปน
44
5.2 สรปก�รดำ�เนนง�นต�มแผนง�น
คว�มก�วหน�ต�มแผนก�รดำ�เนนก�ร แผนการดำาเนนงาน ม.ย
.2547
ก.ค.
2547
ส.ค.2547
ก.ย.2547
ต.ค.2547
พ.ย.2547
ธ.ค.2547
ม.ค.
2548
ก.พ.2548
ศกษาหาความรทเกยวของ
-------******
-------******
-------******
ออกแบบโปรแกรม -------******
-------******
-------******
-------******
-------******
เรมเขยนโปรแกรม -------******
-------******
-------******
-------******
-------******
-------******
ทดสอบโปรแกรมและแกขอผดพลาด
-------
-------******
-------******
-------**
ทำารายงานสรปผลโครงการและคมอการใชงาน
-------**
-------- สวนทวางแผนไว
45
******* สวนทไดดำาเนนการจรง
.
.
.
.บทท 6
ก�รทดสอบและใชง�นโปแกรม
6.1 ก�รทดสอบกบเวบเซอรวสทมขอมลชนดไมซบซอน (Simple Type)นำาสวนประกอบมารวมกนแลวทำาการทดสอบการใชงาน ขนตอนการทำางานมดงน
1. ออกแบบใน Visual Editor วาเราตองการจะใชเซอรวสกตวโดย ไปคลกเลอกจาก สวนของ component แลวนำามาวาง ดงรปท 6.1 และกำาหนดจด Start, Stop ของ Services ทออกแบบ
46
รปท 6.1 แสดงการเอา component มาวางเพอออกแบบ
2. คลกเลอก Service component เพอทจะทำาการโหลด WSDL ใหกบ object (Service 0)วธการคอ คลกท ในสวนของ component กอน แลว มาคลก object ใน Visual Editor ดงรปท 2
47
รปท 6.2 แสดงการคลกเลอก เพอทจะทำาการโหลด WSDL
3.จากนนจะมหนาจอขนมาใหเราใสทอยของ WSDL ของ Service ทเราตองการจะทำาการโหลดเมอทำาการโหลด WSDL จะเปนการตรวจสอบไปดวยวาม Service นนอยจรงหรอไมWSDL ทโหลดคอ http://localhost:8080/axis/topza/EasyPlus.jws?wsdl ซงเปน Services การบวก
48
รปท 6.3 แสดงการโหลด WSDL
4. เมอโหลด WSDL เสรจแลว จะโปรแกรมจะทำาการวเคราะหใหวา Services ท โหลดมานน ม Port Type เปนอะไร มก Operation และ Operation ม input เปนอะไร ขอมลทรบเขาเปนชนดไหน ดงรปท 4 สำาหรบ Service แรกทเชอมกบ จด Start จะกำาหนด input ทาย เมอตองการจะทำาการเรยกใชงานเซอรวสทงหมดทออกแบบ
49
รปท 6.4 แสดงการวเคราะห Services
5. ทำาการโหลด WSDL ใหกบ object ตวถดมา
50
รปท 6.5 แสดงการคลกเลอก Object เพอทจะโหลด Services ตวถดมา
6. โหลด WSDL ใหกบ object ทชอ Service 1
รปท 6.6 แสดงโหลด WSDL ใหกบ object ทชอ Service 17.วเคราะห WSDL ทโหลดมาของ Service 1
51
รปท 6.7 แสดงวเคราะห WSDL ทโหลดมาของ Service 18. ทำาการเชอม input ของ Service 1 เขากบ Service 0 ในรปท 8 จะเหนวา เราเชอม ผลลพธของ Service 0 ใหเปน input ของ Service 1 ทตวแปร y สวนในรปท 9 จะเปนการใหผใชใสคาเองท input ตวแปร x
รปท 6.8 แสดงการเชอม Service โดยเอา ผลลพธจาก Service กอนหนา
52
รปท 6.9 แสดงการเชอม Service โดยผใชใสคาเอง
9.ผลของการเชอม
รปท 6.10 แสดงผลของการเชอม
10. โหลด WSDL ใหกบ Service 2 โดย ใช Services อนทตางจาก Services กอนหนา คอ
53
http://localhost:8080/axis/services/CalculatorService?wsdl
รปท 6.11 แสดงการโหลด WSDL ใหกบ Service 2
11. เนองจาก จาก Services ทโหลดมา ม 2 Operation ใหเลอก เราสามารถเลอก Operation ทตองการได ดงรปท 6.12 ในทนเลอก Operation sub
54
รปท 6.12 แสดงการเลอก Operation
12.ทำาการเชอม Services ดงในรปท 13 ผลลพธจาก service 1 จะเปน input ของ service 2 สวน Input อก ตวผใชจะปอนคาเอง คอ 1
รปท 6.13 แสดงการเชอมของ service 2
55
13. เมอทำาการเชอม Services ทเราตองการครบแลว เมอเราตองการจะใหโปรแกรมทำาการเรยกใชงาน Services ทงหมด จะจะไปทำาการกำาหนด input เรมตนทจด Start คอ ไปคลก ปม Start ใน component แลวมาคลก ใน Visual Editor เพอ กำาหนดคา ดงในรปท 6.14 เมอกด OK จะทำาการเรยก Services และ แสดงผลลพธออกมาดงรปท 6.15
รปท 6.14 การกำาหนดคาใหกบ จด Start เมอจะทำาการเรยกใชงาน Services
56
รปท 6.15 ผลลพธของการเรยกใชงาน Services ทไดออกแบบ
6.2 ก�รทดสอบกบเวบเซอรวสทมขอมลชนดซบซอน (Complex Type)1. ออกแบบเซอรวสโดย นำา object มาวางลงใน Visual Editor
57
รปท 6.16 ออกและแบบวาง object2. หาทอย WSDL ของเวบเซอรวสทมชนดขอมลแบบสลบซบซอน (Complex Type) ในทนคอ http://localhost:8080/axis/HotelServices.jws?wsdl ซงเปน เซอรวสของโรงแรมทมใหบรการการเชคหองพก สงจอง ตรวจสอบราคาของหองพก
58
รปท 6.17 WSDL ทเปน Complex Type
3. โหลด WSDL ให object โดย คลกท object Service ดงรปท 6.18 จากนน จะมหนาจอขนมาใหผใชใสคาทอยของ WSDL เซอรวส ในทนคอ http://localhost:8080/axis/HotelServices.jws?wsdl
เมอกด Load จะเปนการตรวจสอบดวยวา เวบเซอรวสนมอยจรงหรอไม ถามจรงจะโหลดสำาเรจและขนขอมลของ WSDL ดงรปท 6.19
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
59
............ รป รปท 6.18 โหลด WSDL ให object โดย คลกท
object Service
60
รปท 6.19 การโหลด WSDL ให object 4. หลงจากโหลด WSDL แลวจะมผลของการวเคราะหขนมา วาเซอรวสทเราโหลดมานน ม Port Type อะไรบาง ม operation กตว แลวในแตละ operation นนม input และ output อะไร ดงรปท 6.20
รปท 6.20 ผลของการวเคราะห และเลอก operation5. เมอทำาการวเคราะหเสรจแลว ใหไปคลกท object Start เพมจะใสคา แลวเรยกใชงานเซอรวส ดงรปท 6.21 เมอกด OK จะเปนการสงคาทผใชปอนเขาไปผลลพธทไดจะเปนดงรปท 6.22คาทใสไปคอ หมายเลขหองของโรงแรมทเราตองการทราบราคา ผลลพธกจะไดราคาคาเชาหอง
61
รปท 6.21 การใสคาให object Start
รปท 6.22 ผลลพธของการเรยกใชเซอรวส
6.3 สรปผลก�รทดสอบ จากผลการทดสอบพบวา ตวโปรแกรมสามารถเรยกใชงานไดทงเวบเซอรวสทมขอมลชนดไมซบซอน
62
และ เวบเซอรวสชนดทมขอมลซบซอนได ยงพบวาโปรแกรมมขอจำากดตรงท ไมสามารถวเคราะหเวบเซอรวสทมขอมลเปนแบบชนดสลบซบซอน(Complex Type) ทซอนกนหลายๆชนได ขนตอนการใชงานโดยสรปมดงน
1. ออกแบบ Services โดย วาง object ลงใน Visual Editor 2. ทำาการโหลดและวเคราะห Services ให3. นำา Services มาทำาการเชอม4. กำาหนด คา เรมตน และเรยกใชงาน Services ทตองการ
บทท 7ก�รสรปผล
7.1 ก�รสรปผลโครงก�ร โปรแกรมเวบเซอรวสเรยกงาย คอโปรแกรมทจะชวยผใชในการเรยก
ใชงานเวบเซอรวสไดสะดวกขน โดยทผใชสามารถกำาหนดคณสมบตตางๆ ทตวเวบเซอรวสมมาให กำาหนดการเชอมตอกบเซอรวสอน แลวยง
สามารถเกบเซอรวสทไดปรบแตงแลวไวใชงานในภายหลงหรอเรยกใชงาน เซอรวสอนทมอยแลว โดยทไมจำาเปนตองโหลดและวเคราะหเวบเซอรวส
ใหม ซงหลกการของการเขยนโปรแกรมแบบวชวล(Visual Programming) ทำาใหผ ใชไมจำาเปนตองมความรดานการเขยนโปรแกรมกสามารถใชโปรแกรมได
หรอแมแตโปรแกรมเมอรเอง กจะไดรบความสะดวกสบายดวยเพราะไมจำาเปนตองเขยนโปรแกรมขนมาตรวจสอบวเคราะหหรอเรยกใชงานเซอรวสกสามารถทำาการตรวจสอบคณสมบตหรอความถกตองของขอมลและความถกตองของเวบเซอรวสไดซงทำาใหการพฒนาหรอเรยกใชเปนไป
ไดอยางรวดเรวแลวสะดวกสบายมากยงขน การพฒนาโครงการนจะประสบผลสำาเรจหากมการนำาไปใชงานไดจรงและตวโปรแกรมสามารถทำางานไดตามคณสมบตทไดออกแบบไวแลวในขางตน
63
7.2 ปญห�และอปสรรค1. เวบเซอรวสเปนเทคโนโลยใหม การพฒนาหรออปกรณ คมอ ยง
ไมแพรหลายทำาให การศกษาคนควา หาความรยงไมเพยงพอกบความตองการทจำาเปนตองใชในการพฒนาโปรแกรม
2. การพฒนาโปรแกรมแบบวชวล (Visual Programming) นนเปนการออกแบหรอพฒนาเพอใหผใชสามารถใชงานโปรแกรมไดงาย ซงตองอาศยประสบการณและความรเพอทจะออกแบบใหผใชสามารถใชงานไดงาย ซงผพฒนาเองยงมประสบการณนอยและความรยงไมเพยงพอทำาใหการพฒนาหรอออกแบบทำาใหยงใชงานไมงายเทาทควร
3.การพฒนาเพอใหสามารถทำาการเรยกขอมลทซบซอน (Complex Type) นนทำาไดยากเนองจากเครองมอหรอ อปกรณทใชในการพฒนายงไมสามารถสนบสนนการใชขอมลทซบซอน (Complex Type) มากนกซงทำาใหการพฒนาเปนไปดวยความยากลำาบาก ทำาใหการพฒนาเพอรองรบขอมลทซบซอน (Complex Type) รวมไปถงการแสดงผลเปนไปดวยความยากลำาบาก
7.3 ก�รแกปญห�1.จากการทเวบเซอรวสเปนเทคโนโลยใหมเมอไมเขาใจหรอสงสยจะ
สอบถามผรหรอคนควาเพมเตมในเวบไซต2.เมอจะทำาการออกแบบโปรแกรมแบบวชวล (Visual
Programming) จะสอบถามผใชวาโปรแกรมแบบไหนทชอบ และใชงานไดงายรวมไปถงการศกษาหาความรเพอออกแบบโปรแกรมใหสามารถใชงานไดงาย
64
3.การแกปญหาขอมลทซบซอน (Complex Type) จะทำาการสรางเมทรอดหรอคลาสทเปนคลาสกลางเพอเรยกใชขอมลทซบซอน
7.4 ขอเสนอแนะเวบเซอรวสเปนเทคโนโลยทเพงเขามาซงการทำางานของเวบเซอรวส
นนทำาใหโปรแกรม(application) ตางๆสามารถคยกนหรอแลกเปลยนขอมลกนได ทำาใหการตดตอสอสารไมจำากดไมวาจะเปนเครองคอมพวเตอร มอถอ pocket PC ซงทำาใหมความสะดวกสบายมากขน ทำาใหงายตอการทำาธระกรรมตางๆไมวาจะเปนการฝากเงน ถอนเงน โอนเงน หรอการชอขาย และลดเวลาทำาใหเหลอเวลาทจะทำาอยางอนตอไปได เทคโนโลยเวบเซอรวสนนเปนทนาจบตามองมากเพราะอนาคตอนใกลนจะมการใหบรการของเวบเซอรวสมากขนทำาใหสงตางๆสามารถหาไดงายมากขนและไมจำากดรปแบบดวย ซงการจดทำาโปรแกรมนขนมาเพอทำาใหเวบเซอรวสสามารถใชงานไดงาย รวมไปถงการตรวจสอบขอมลตางๆคาตวแปรตางของเวบเซอรวสไดงายทำาใหงายตอการพฒนาและนำาไปใช
บรรณ�นกรม
65
1. Prof. Dr. Frank Leymann. WSFL. Distinguished Engineer Member IBM Academy of Technology IBM Software Group2. Kanda Runapongsa ([email protected]).
WSDL. Dept. of Computer Engineering Khon Kaen University
3. Mitch Glodstein, 2001. HardcoreJFC . SIGS BOOK US.
4. Ramesh Nagappan , Robert Skoczylas, and Rima Patel Sriganesh ,2003. Developing Java Web Services. WILEY. UK
5. www.wsiam.com การวเคราะห Web Services โดย Engine ของ WSIAM
6. www.ibm.com WSFL7. http://java.sun.com J2EE, J2SDK, java Tutorial 8. www.apache.org jakarta tomcat
ภ�คผนวก
66
คมอก�รใชง�น ก�รเรยกใชง�น
1.สามารถเรยกใชงานโดย คลกไฟลตวโปรแกรมทชอ EasyCallWebServices.jar ซงเปนไฟลทสามารถเรยกใชงานไดในตวเหมอน .EXE เพยงแคม JVM (java visual machine) ในเครอง
รปท A1 แสดงการเรยกใชโปรแกรม
2.เมอเรยกใชงานแลวจะขนหนาจอหลกของการใชงานโปรแกรมดงรป A2
รปท A2 หนาตาของโปรแกรม
67
3.คลกเลอก object แลวนำามาวาง สวนประกอบอยางนอยตองม 3 สวน คอ
- Services component- Start component- End component
รปท A3 แสดงการวาง object
4.ทำาการเชอม object
68
รปท A4 แสดงการเชอม object
5.โหลด WSDL ใหกบ object
รปท A5 ผลของการโหลด WSDL
6.กำาหนดคาของการเชอมเซอรวส (ถามหลายเซอรวส)
รปท A6 แสดงการเชอม input และ output
69
รปท A7 แสดงผลของการเชอม
7.กำาหนดขอมลทรบเขามา
รปท A8 แสดงการใสคาเพอจะทำาการเรยก
เซอรวส
70
8.เรยกเซอรวสทไดออกแบบไวกจะไดผลลพธตามทตองการ
รปท A9 แสดงผลลพธของการเรยกเซอรวสทไดออกแบบ
71