หน้าเว็บ

วันพฤหัสบดีที่ 1 พฤศจิกายน พ.ศ. 2561

การทดสอบเรื่อง Web Service by Thanut Suwannawong

Link ต่างๆ

    1. Web Service URL => https://selectedtopickmutnb2018.azurewebsites.net/WebService.asmx
    2. WSDL URL => https://selectedtopickmutnb2018.azurewebsites.net/WebService.asmx?WSDL
    3. Bitbucket URL => https://bitbucket.org/thanut_suwannawong/myfirstwebsevice-selectedtopic1-2561/src/master/

Web Service ต่างๆ

ฝั่ง Server ใช้ภาษา C# ฝั่ง  Clients ใช้ภาษา Python, Ruby

Air Conditioner

1. GetAirConditionerData()


    เป็นฟังก์ชั่นไว้สำหรับ Query ค่าข้อมูลของเครื่องปรับอากาศออกมา โดยจะดึงข้อมูลจากไฟล์ xml ที่อยู่ในฝั่ง server 

ไฟล์ air_data.xml

    เมื่อเราเรียกใช้ฟังก์ชั่นแล้วฝั่ง server จะดึงข้อมูลจากไฟล์ xml ดังรูปประกอบแล้วส่งข้อมูลไปยัง client โดยจะส่งให้อยู่ในรูปของข้อมูล xml เช่นกัน โดยวิธีการเช็คว่าข้อมูลที่ได้นั้นมันเป็น xml หรือไม่ก็โดยใช้ตัวโปรแกรมที่มีชื่อว่า SoapUI โดยจะสามารถทดสอบเรียกใช้งานตัว Web Service และดูผลการทดสอบได้




ผลการทดสอบโดย SoapUI

    จากผลการทดสอบก็จะได้ว่าตัวของข้อมูลที่ได้มานั้น เป็นลักษณะของ XML

client ภาษา python

client ภาษา ruby

2. GetAirConditionerDataByRoomNumber()

    เป็นการเรียกดูข้อมูลของเครื่องปรับอากาศโดยสามารถที่จะระบุเลขห้องเพื่อขอดูข้อมูลเป็นตามห้องได้ โดยการเรียกใช้นั้นจะต้องใส่พารามีเตอร์ที่เป็นเลขห้องลงไปด้วย เช่น  

print(client.service.GetAirConditionerDataByRoomNumber("002"))





ผลที่ได้ใน python Client

3. AddAirConditionerData()

    เป็นการใส่ข้อมูลให้กับฝั่ง Server โดยจะต้องมีการส่งพารามีเตอร์ดังนี้ room_number (เลขห้อง), time( เวลา ), temperature(อุณหภูมิ), humidity(ความชื้น)


    ตัวอย่างการเรียกใช้งาน โดยเป็นห้องที่ 108 เวลา 19/09/1967 17:20 อุณหภูมิ 26.7 องศาเซลเซียล มีความชื้น 55.5

client.service.AddAirConditionerData("108","19/09/1967 17:20","26.7","55.5")

ผลของการเพิ่มข้อมูลแล้วเรียกดูข้อมูล

Student

4. GetStudentData()


    ใช้ในการเรียก Web Service ที่จะส่งข้อมูลของนักเรียนจากฝั่ง Server มาให้ที่ Client ในลักษณะของเอกสาร XML

รูปการใช้ SoapUI เพื่อดูว่าผลลัพธ์นั้นเป็น XML หรือไม่


ผลการเรียกใช้ของ python client 

        จากรูปด้านบนจะแสดงถึงการลอง print ชนิดของค่าที่ได้รับมาว่าเป็นไปตาม schema หรือไม่ ซึ่งในที่นี้ผมตั้งไว้ให้เป็น string หมดเลยซึ่งก็ได้ผลตามที่ตั้งไว้

Delivery Service

4. AddDeliveryData()




    เป็น web service สำหรับการส่งข้อมูลของลูกค้าขึ้นไปยังฝั่ง server โดยจะต้องมีทั้งชื่อ ที่อยู่ น้ำหนักสิ่งของที่ส่ง แล้วก็ ID ของสินค้านั้นๆด้วย ในไฟล์ xml ของฝั่งเซิฟเวอร์จะมีค่าตัวแปร Status อีกหนึ่งตัวซึ่งค่าของตัวแปรนี้จะ Default ให้เป็น "Delivering" หรือกำลังถูกส่ง เพื่อแสดงสถานะว่าของชิ้นนี้นั้นกำลังเดินทางไปหาเจ้าของ


ตัวอย่างของไฟล์ XML ของฝั่ง server

ตัวอย่างการเรียกใช้งาน 
client.service.AddDeliveryData("Thanut Suwannawong","11/50 Bangkok",1.5,"NM001")

5. Delivered()


   เป็น web service ที่เอาไว้สำหรับเปลี่ยนสถานะของสินค้า ว่าสินค้าชิ้นนั้นได้เดินทางไปถึงผู้รับเรียบร้อยแล้ว โดยเราจะต้องใส่ไอดีของสินค้าลงไปเป็นพารามีเตอร์เพื่อป้องกันการซ้ำ ในกรณีที่ถ้าหากเราใช้เป็นชื่อผู้ส่ง อาจจะมีผู้ส่งคนเดียวกันแต่สินค้าคนละชิ้นก็เป็นได้

ตัวอย่างการเรียกใช้งาน client.service.Delivered("NM001")



                                         
ก่อนการเรียกใช้งาน

หลังเรียกใช้งาน

6. GetDeliveryData(), GetOnDeliveringData(), GetDeliveredData()


GetDeliveryData() => เรียกข้อมูลสินค้าทั้งหมด

รูปผลการเรียกใช้งาน


GetOnDeliveringData() => เรียกข้อมูลสินค้าที่กำลังจัดส่งอยู่

รูปผลการเรียกใช้งาน


GetDeliveredData() => เรียกข้อมูลสินค้าทั้งหมดที่จัดส่งเรียบร้อยแล้ว

                                                                                    รูปผลการเรียกใช้งาน

วันพุธที่ 31 ตุลาคม พ.ศ. 2561

[Tutorial] สร้าง Web Service ด้วย C# Part 4 : Public Web Service บน Azure

ผลการค้นหารูปภาพสำหรับ azure

    การ Publish Web Service ขึ้น Azure นั้น ให้ทำการกด Publish Web App แล้วกดเลือกกลับมาที่หน้า Profile ก่อนครับ จากนั้นก็ทำการเลือก Publish Target เป็น Microsoft Azure App Service



    จากนั้นก็ทำการ Sign In ด้วย Email ที่เราได้สมัคร Azure for Student ไว้ใน Part 0 เสร็จแล้วก็จะเข้าสู่หน้า App Service จะเป็นว่า Subscription จะเป็น Microsoft Imagine หรืออาจจะเป็น Azure for Student ถัดมาในส่วนของช่องด้านล่างซึ่งเป็น Service ที่เคยสร้าง(ดูในมุมมองของ Resource Group) สำหรับคนที่เพิ่งเคยใช้จะไม่มีอะไรอยู่ จึงต้องกดที่ New เพื่อสร้างใหม่ก่อน




    ในหน้า Create App Service ให้ตั้งชื่อ App Name ที่ไม่ซ้ำกับผู้ใช้ Azure คนอื่นบนโลก เนื่องจากจะต้องไปเป็น Url ของ Web Service จากนั้นกด New.. ที่ Resource Group เพื่อตั้งชื่อ(สร้าง)ใหม่ หรือจะใช้ชื่อเดิมที่ตั้งมา default เลยก็ได้ ในที่นี้จะสร้างใหม่เป็น MyService ส่วน Hosting Plan ก็ให้กด New.. เช่นกัน เพื่อเปลี่ยน Location เป็น เอเชียตะวันออกเฉียงใต้ และ Size เป็นแบบ Free ส่วนชื่อ Plan จะเปลี่ยนหรือไม่เปลี่ยนก็ได้ จากนั้นก็ทำการกด Create ได้เลย




    หลังจากกด Create และรอจน Deploy เสร็จแล้วก็จะมาที่หน้าการตั้งค่า Connection ในหน้านี้ให้เราเพิ่ม /WebService.asmx ต่อท้ายในช่อง Destination URL จากนั้นก็กด Validate Connection เพื่อทดสอบความถูกต้องดู หากถูกต้องแล้วก็กด Publish ได้เลย หรือจะเข้าไปดูในส่วนของ Preview ก่อนก็ได้ เท่านี้เราก็จะได้ Web Service ที่อยู่บน Cloud ของ Azure เรียบร้อยแล้ว หากมีการแก้ไข Web Service ก็ให้ทำการ Publish อีกรอบเช่นเดียวกับในส่วนของ Local Network ครับ





สารบัญ Tutorial สร้าง Web Service ด้วย C#

[Tutorial] สร้าง Web Service ด้วย C# Part 3 : Public Web Service บน Local Network


    การ Public Web Service ให้สามารถใช้งานบน Local Network ได้นั้น เราจะใช้ Microsoft IIS ที่ได้ทำการเปิดใช้งานใน Part 0 ไป



    เมื่อเปิดโปรแกรม IIS ขึ้นมา ในแถบ Connections ทางด้านซ้ายส่วนของ Sites จะมี Default Web Site อยู่ แต่เราจะทำการสร้าง site ใหม่สำหรับ Web Service โดยการกดคลิกขวาในแถบ Connections แล้วกด Add Website... ก็จะขึ้นหน้าต่าง Add Website ขึ้นมา




    ให้กรอกข้อมูลให้เรียบร้อย ชื่อของ Website, Directory ของ Website(แนะนำให้สร้างโฟลเดอร์ใหม่)  ส่วน IP Address สามารถที่จะตั้งเป็น IPv4, IPv6 หรือ All Unassigned (เข้าได้ทั้ง IPv4,IPv6 และ Localhost) ส่วน hostname ไม่จำเป็นต้องใส่ก็ได้ครับ จากนั้นก็กด OK ก็จะได้ Website ใหม่เพิ่มขึ้นมา





    หลังจากเตรียม Website ใน IIS เรียบร้อยแล้ว ทีนี้ก็มา Visual Studio โดยให้เปิดแบบ Run as Administrator



    ทำการเปิด Project ที่ได้สร้างเอาไว้ จากนั้นในแถบ solution explorer คลิกขวา >> Publish Web App



    เมื่อขึ้นหน้าต่าง Publish มา ให้เราเลือก publish target เป็น custom และตั้งชื่อ profile ให้เรียบร้อย




    เมื่อกด ok ก็จะเข้าสู่หน้าการตั้งค่า Connection ซึ่งจะตั้งค่าตามนี้
  • Server จะใส่เป็น localhost (ในกรณีที่จะใส่เป็น ip จะต้องมีการตั้ง username และ password)
  • Site name ให้ใส่ชื่อ Website ที่เราสร้างไว้ใน IIS ตามด้วย /ชื่อแอป (ชื่อแอปจะตั้งอะไรก็ได้ ไม่จำเป็นต้องตามชื่อโปรเจค)
  • Destination URL ให้ใส่ IP และ Port ตามที่ตั้งไว้ใน IIS ซึ่งเราได้ตั้งไว้เป็น All Unassigned ในที่นี้จึงขอใส่เป็น IPv4 จากนั้นให้ตามด้วย /ชื่อแอป ชื่อเดียวกับที่ใส่ในช่อง Site name และก็แนะนำให้ใส่ /WebService.asmx (หรืออาจจะชื่ออื่น ตามที่ได้ตั้งไว้) ต่อท้ายไปด้วย เพื่อให้หลังจาก Publish แล้วตัว Visual Studio จะได้ Redirect ไปที่หน้าเว็บ Web Service เลย
  • ทำการกด Validate Connection ตรวจเช็คดู หากไม่มีอะไรผิดพลาดก็จะขึ้นเครื่องถูกต้องสีเขียวมา
    จากนั้นเราสามารถที่จะกด Publish ได้เลย เนื่องจากในส่วนของ Setting ไม่มีตั้งแก้ไขการตั้งค่าอะไร หรือกดไปดูส่วนของ Preview ก่อนก็ได้ ซึ่งก็จะเป็นส่วนที่ Preview ดูสถานะของไฟล์ใน Server ซึ่งเราเพิ่ง Publish ครั้งแรก Action ของไฟล์จึงเป็นการ Add ทั้งหมดเข้าไป




    หลังจากกด Publish แล้วเราก็จะได้ Web Server ที่เป็น IP Address สามารถเข้าถึงได้ภายใน Local Network



   หากมีการแก้ไข Web Service เมื่อแก้ไขเสร็จแล้วต้องทำการ Publish ใหม่อีกครั้งด้วย แต่ไม่ต้องตั้งค่าอะไรใหม่ ซึ่งเมื่อเรากด Publish Web App ก็จะขึ้นหน้าต่าง Publish ในส่วน Preview มาให้เลย ในที่นี้ได้ทำการลบ Method SayHello ไป จะเป็นว่าใน Preview แสดงว่าไฟล์ WebService.cs มีการ Update เมื่อกดปุ่ม Publish หน้าเว็บ Web Service ก็จะได้รับการปรับปรุงเรียบร้อย




    ในพาร์ทต่อไปก็จะพูดถึงการ Public Web Service ขึ้นไว้บนบริการ Cloud อย่าง Azure ครับ



สารบัญ Tutorial สร้าง Web Service ด้วย C#

[Tutorial] สร้าง Web Service ด้วย C# Part 2 : ทดสอบ Web Service ด้วย SoapUI

    จาก Part ที่แล้ว เราได้ทำการสร้าง Web Service ไปแล้ว คราวนี้ก็จะทำการทดสอบกันด้วยโปรแกรม SoapUI ที่ได้โหลดเตรียมเอาไว้



    ขั้นตอนแรกให้ทำการเพิ่ม Service เข้าไปในตัวโปรแกรมก่อน โดยการกดที่ปุ่ม SOAP แล้วจะมีหน้าต่าง New Soap Project เด้งขึ้นมา ให้นำลิงค์ของ WSDL หรือ Service Description ใส่ลงไปแล้วกด OK



    หลังจากกด OK เราจะได้โปรเจคที่ WebService มา ภายในจะประกอบด้วย WebServiceSoap และ WebServiceSoap12 (Soap ver. 1.2) ซึ่งเราสามารถทดสอบกับตัวไหนก็ได้ โดยภายในทั้งสองตัวนี้ก็จะมี HelloWorld กับ SayHello ที่เป็น Method ที่เราสร้างไว้ ในแต่ละ Method ก็จะมี Request ที่ใช้เรียกใช้ Method นั้นๆของ Web Service นั่นเอง ซึ่งเราจะทำการทดสอบ Hello World กันก่อน ก็ให้ดับเบิ้ลคลิกที่ Request ของ Method Hello World ก็จะมีหน้าต่าง Request เด้งขึ้นมา




    จากรูปนั้นทางด้านซ้ายจะเป็น XML ที่ส่งไปให้ทาง Server เมื่อเราทำการ Submit Request (สามารถกด alt+enter ได้) ก็จะปรากฏ XML ที่ทาง Server Response กลับมาทางด้านขวาครับ ในที่นี้ก็จะเป็นการส่ง <HelloWorldResult>Hello World</HelloWorldResult> กลับมานั่นเอง



    จากนั้นก็ทดสอบอีก Method นีง ซึ่งก็คือ SayHello




    จากรูป เนื่องจาก Method SayHello เป็น Method ที่มี Input รับค่าชื่อเข้าไป จึงมี <tem:name>?</tem:name> โผล่ขึ้นมาตรงฝั่ง Request โดยที่ ? คือส่วนที่ให้เราใส่ input ลง ในที่นี้ก็จะใส่ชื่อวิชานี้ลงไปนะครับ


 
    พอทำการ Submit Request แล้ว ผลลัพธ์ที่ได้ก็จะได้ออกมาเป็น <SayHelloResult>Hello, Selected Topic</SayHelloResult> ตรงตามที่เราได้เขียนโปรแกรมไว้ให้ Method Return คำว่า Hello, ตามด้วย input ที่ใส่เข้าไปครับ




        ในพาร์ทต่อไปก็จะพูดถึงการ Public Web Service ที่สร้างไว้ให้สามารถใช้บน Local Network ได้ครับ


สารบัญ Tutorial สร้าง Web Service ด้วย C#