Webservice on Cloud : https://selectedtopictest5810059.azurewebsites.net/WebService.asmx
Server : ASP.NET (C#)
Client : Python(Zeep), PHP(Zend)
อื่นๆ : SoapUI
Commit 1 : Add project files.
ในคอมมิทแรกจะเป็นการเพิ่มไฟล์โปรเจคทั้งหมดลงไป รวมถึง Service 3 ตัวที่ได้ทำในวันทดสอบระบบ ได้แก่
เป็น Service ที่ไว้บันทึกข้อมูลของแอร์ แล้วเก็บลงในไฟล์ air_data.xml โดยจะรับค่า room, time ที่เป็น string และ temperature, humidity ที่เป็น double และจะไม่ส่ง response อะไรกลับไป
ตัวอย่างการเรียกใช้ จะใช้ python เป็น client โดยใช้ library ที่ชื่อว่า zeep ครับ
ข้อมูลในไฟล์ air_data.xml ก่อนที่ client จะเรียกใช้ service AddData
การเรียกใช้ service AddData ใน python โดยใช้ library zeep
ข้อมูลในไฟล์ air_data.xml หลังจากที่ client เรียกใช้ service AddData
จะเห็นว่า เมื่อ client มีการเรียกใช้ Service AddData เพิ่มข้อมูลเข้าไป ข้อมูลของห้อง 002 ก็จะถูกเพิ่มลงไปในไฟล์
getData
เป็น Service ที่ไว้เรียกข้อมูลที่อยู่ในไฟล์ air_data.xml ออกมา ไม่มี input โดยจะมีการ Response ออกมาเป็นชุดข้อมูล xml AirData ซึ่งภายในก็จะมี room_number, time_record ที่เป็น string และ temperature, humidity เป็น double
ตัวอย่างการเรียกใช้ด้วย python จะเห็นว่าค่าที่รับมานั้นจะได้มาเป็นชุดข้อมูลหรือก็คือ array ของ AirData โดยข้อมูลของ room_number และ time_record เป็น string จึงมี ' ' ครอบอยู่ ส่วนข้อมูลของ temperature และ humidity จะเป็นตัวเลขที่มีทศนิยม
เพื่อความแน่ใจจึงใช้คำสั่งแสดงประเภทเช็คดูอีกที ซึ่งก็ได้ผลลัพธ์ประเภทของข้อมูลตรงตามที่กำหนดไว้ (ใน python ไม่มี double จึงแสดงเป็น float)
เนื่องจาก library zeep จะแปลงค่าที่ได้รับมาเป็น JSON ดังนั้นจึงอาจไม่เห็นชัดว่า ได้รับข้อมูลมาเป็น xml จริงหรือเปล่า ซึ่งสามารถใช้โปรแกรม SoapUI แสดงความชัดเจนในเรื่องนี้ได้
getDataByRoom
จะคล้ายกับ getData แต่ Service นี้จะมีการรับ input roomNo เพื่อเอามาทำการ query ข้อมูลจากไฟล์ air_data.xml และ response ข้อมูลออกไปเฉพาะห้องที่ระบุใน input เท่านั้น
ตัวอย่างการเรียกใช้
Commit 2 : Add Service AboutMe, Create Client Folder(PHP, Python)
ในคอมมิทที่ 2 จะเป็นการเพิ่ม PHP Client เข้ามา สร้างโฟลเดอร์เพิ่มรวม Client ไว้ที่เดียวกัน และสร้าง Service AboutMe
AboutMe
เป็น Service ที่จะ Response ข้อมูลของตัวเองกลับไป ซึ่งประกอบด้วย ชื่อ รหัส และงานอดิเรก 2 อย่าง
เรียกใช้ด้วย Python
เรียกใช้ด้วย PHP โดยใช้ library zend
เรียกใช้ด้วย SoapUI
*** ปัญหาที่พบก็คือ child element ของ hobby นั้นชื่อว่า <string> ซึ่งไม่สื่อความหมาย
Commit 3 : Product Express Add Service AddProduct, SendComplete
ในคอมมิทที่ 3 จะเป็นการสร้าง Service ที่เกี่ยวกับการส่งสินค้า ซึ่งภายในคอมมิทนี้ก็จะประกอบไปด้วย
AddProduct
เป็น Service ที่ไว้เพิ่มข้อมูลของสินค้า แล้วเก็บลงในไฟล์ Product.xml จะรับค่า id, customer_name กับ address ที่เป็น string และ weight ที่เป็น double และจะไม่ส่ง response อะไรกลับไปโดยก่อนที่จะเพิ่มข้อมูลลงในไฟล์ Product.xml ก็จะเพิ่ม <ProductSended> เข้าไปด้วยเพื่อใช้เป็นตัวบอกสถานะการส่ง โดยจะกำหนดค่าเริ่มต้นให้เป็น Not Yet
ข้อมูลในไฟล์ Product.xml ก่อนที่ client จะเรียกใช้ service AddProduct
ข้อมูลในไฟล์ Product.xml หลังจากที่ client(python) เรียกใช้ service AddProduct
ข้อมูลในไฟล์ Product.xml หลังจากที่ client(php) เรียกใช้ service AddProduct
เป็น Service ที่ไว้แก้สถานะการส่งของสินค้า เพื่อบอกว่าสินค้านั้นๆส่งสำเร็จแล้ว โดยจะรับ id ของสินค้าเข้ามา และทำการแก้สถานะของสินค้าชินนั้น และจะไม่ส่ง response อะไรกลับไป
ตัวอย่างการเรียกใช้ด้วย Python
ตัวอย่างการเรียกใช้ด้วย PHP
Commit 4 : Add Service getProduct, getProductBySendStatus / Add Client
ในคอมมิทที่ 4 จะเป็นการเพิ่มไฟล์ Client ใหม่เพิ่มใช้สำหรับ Service ที่เกี่ยวกับการส่งสินค้า(Client ตัวเก่าใช้กับ AboutMe) และเพิ่ม Service ที่เกี่ยวกับการส่งสินค้า 2 ตัว ได้แก่
getProduct
เป็น Service ที่ไว้เรียกข้อมูลที่อยู่ในไฟล์ Product.xml ออกมา ไม่มี input โดยจะมีการ Response ออกมาเป็นชุดข้อมูล xml ProductData ซึ่งภายในก็จะมี ProductID, Customer, Address และ ProductSended ที่เป็น string ส่วน ProductWeight นั้นจะเป็น double
ตัวอย่างการเรียกใช้ด้วย PHP
ทำการตรวจสอบประเภทของข้อมูลด้วย PHP ซึ่งผลลัพธ์ประเภทของข้อมูลก็ได้ตรงตามที่กำหนดไว้
getProductBySendStatus
จะคล้ายกับ getProduct แต่ Service นี้จะมีการรับ input sended ที่เป็นประเภท boolean เพื่อเอามาทำการ query ข้อมูลจากไฟล์ Product.xml หาก input เป็น True ก็จะ response เฉพาะข้อมูลสินค้าที่ส่งแล้วออกไป แต่ถ้า input เป็น False ก็จะ response เฉพาะข้อมูลสินค้าที่ยังไม่ได้ส่งออกไป
ข้อมูลในไฟล์ Product.xml
ตัวอย่างการเรียกใช้ด้วย PHP
Commit 5 : Edit About Me edit name Hobbies child element (string >> Hobby)
ในคอมมิทที่ 5 นี้จะเป็นการแก้ปัญหาจากคอมมิทที่ 2 หรือก็คือแก้ชื่อของ child element ของ hobby วิธีแก้ปัญหาก็คือใส่คำสั่ง XmlArrayItem("Hobby") ไว้ก่อนการประกาศตัวแปร public List<string> Hobbies เพื่อเป็นการตั้งชื่อ Element ที่อยู่ใน Array Hobbies
Commit 6 : Add Bin Folder / Rename AirService.asmx >> WebService.asmx
เพิ่มโฟลเดอร์ Bin เข้าไป ซึ่งเป็นโฟลเดอร์ที่เก็บ Reference หรือ library เอาไว้ และเหมือนจะเกิดข้อผิดพลาดบางอย่าง ไฟล์ที่ได้ Rename ไปกลับไม่เข้ามาอยู่ในคอมมิทนี้ จึงต้องคอมมิทซ้ำอีกรอบในคอมมิทที่ 7Commit 7 : Rename AirService.asmx >> WebService.asmx
เปลี่ยนชื่อไปจาก AirService.asmx เป็น WebService.asmx และ Publish Project ขึ้นบน Azure
ไม่มีความคิดเห็น:
แสดงความคิดเห็น