การสร้างเว็บเซอร์วิส
ตอนที่ 2 สร้าง Web Services ด้วยภาษา C#.NET

2. การสร้าง Web Services ด้วยแพลตฟอร์ม .NET

ก็อปปีโฟลเดอร์ provider จากแผ่น DVD ชุดฝึกอบรม แล้วนำโฟลเดอร์ provider มาวางไว้ที่เครื่องคอมพิวเตอร์ของท่าน ที่จะทำหน้าที่เป็น Web Services Provider โดยเครื่องคอมพิวเตอร์นี้จะต้องมีซอฟแวร์เกี่ยวกับ .NET ติดตั้งไว้ดังนี้
ซอฟแวร์ที่จำเป็น
ทำหน้าที่
Microsoft Windows Server 2003
ระบบปฏิบัติการ
Visual Studio .NET 2008
เครื่องมือในการพัฒนาระบบตามแพลตฟอร์ม Microsoft .NET
Internet Information Server (IIS) 6
เว็บเซิร์ฟเวอร์
(ปกติจะมีมาให้พร้อมกับแผ่นติดตั้ง Windows Server 2003)
ตัวอย่างการติดตั้งเช่นก็อปปีโฟลเดอร์ provider วางไว้ที่ตำแหน่ง c:\provider ดังนี้

รูปภาพ 12 ก็อปปีโฟลเดอร์โซลูชันสำหรับใช้เป็น .NET Web Services Provider กับ Visual Studio .NET 2008
ให้ตรวจสอบว่ามีไฟล์ Solution สำหรับ Visual Studio .NET 2008 ครบทั้ง 2 ไฟล์คือ

รูปภาพ 13 ไฟล์โซลูชันทั้งสองไฟล์ที่จำเป็นสำหรับการติดตั้ง .NET Web Service Provider เพื่อใช้ทดสอบการเชื่อมต่อ
c:\provider\dotnet_rpc\Circle.sln และ c:\provider\dotnet_doc\CustomerService.sln โดยทั้งสองไฟล์นี้ เป็นไฟล์เก็บชุดโปรแกรมภาษา C# สำหรับเปิดกับ Visual Studio .NET 2008 ซึ่งเราจะต้องนำมารันเพื่อให้ทำหน้าที่เป็น Web Services Provider ทางฝั่ง .NET

2.1 รัน RPC-Style Web Services ด้วย Visual Studio .NET

ในการทดสอบ Web Services แบบ RPC Style นั้นเราจำเป็นต้องรัน Circle Web Services โดย Circle Web Services ได้มาติดมาให้พร้อมกับโซลูชันไฟล์ชื่อว่า Circle.sln ดังนั้นก่อนอื่นให้ท่านเปิดโปรแกรม Visual Studio .NET 2008 แล้วเปิดไฟล์ Circle.sln เพื่อเริ่มต้นใช้งาน ดังนี้

รูปภาพ 14 เปิดโปรแกรม Microsoft Visual Studio 2008
หลังจากเปิด Visual Studio .NET 2008 แล้วให้เลือกไปที่ เมนู File à  Open à Project/Solution … แล้วเลือกเปิดไฟล์ Circle.sln ไฟล์โซลูชันนี้จะเปิดออกมาได้ คล้ายดังภาพต่อไปนี้

รูปภาพ 15 เปิดไฟล์ Circle.sln จะพบโปรเจคชื่อว่า Circle ปรากฏออกมา
ให้ท่านเริ่มต้นรัน Web Services โดยคลิกปุ่ม Start Debugging จากทูลบาร์

รูปภาพ 16 กดปุ่ม Start Debugging (F5) จากทูลบาร์เพื่อรัน Web Service
หลังจากรอสักครู่ จะปรากฏหน้าต่างเบราเซอร์ Internet Explorer ลอยขึ้นมาพร้อมกับแสดงตำแหน่ง URL เป็น http://localhost:1943/Circle.asmx เราสามารถทดสอบว่า Circle Web Services สามารถใช้งานได้จริงหรือไม่ โดยให้ท่านคลิกเลือกที่โอเปอเรชันชื่อว่า GetArea จะปรากฏแบบฟอร์มสำหรับใส่ข้อมูลเพื่อทดสอบ แล้วให้ใส่ข้อมูลเข้าไปในแบบฟอร์มตามภาพต่อไปนี้

รูปภาพ 17 ขั้นตอนการสตาทร์ .NET Web Service และทดสอบ operation ชื่อว่า GetArea
เมื่อกดปุ่ม Invoke จะปรากฏผลลัพธ์ออกมาเป็นข้อมูล XML นั่นแสดงว่า Circle Web Services ที่เราจะใช้เพื่อเป็น .NET Web Service Provider สามารถใช้งานได้และขณะนี้กำลังเปิดให้บริการอยู่ที่พอร์ต 1943
ให้ท่านสังเกตหมายเลขพอร์ตที่ได้รับมาว่าเป็นหมายเลขอะไร เนื่องจากหมายเลขพอร์ตของท่านอาจจะไม่ใช่หมายเลข 1943 ตรงกับเอกสารฉบับนี้ เนื่องจาก Visual Studio .NET อาจจะสุ่มหมายเลขพอร์ตตามการใช้งานในแต่ละครั้ง อย่างไรก็ตามท่านจำเป็นต้องจดจำหมายเลขพอร์ตที่ให้บริการ Web Services อยู่ขณะนี้เพื่อนำไปใช้ลงทะเบียนเว็บเซอร์วิสกับระบบ Web Services Helper System ในภายหลัง

2.2 การติดตั้ง Web Services กับ IIS 6

จากขั้นตอนที่แล้วแม้ว่าเราจะรัน Circle Web Services ไว้กับ Visual Studio .NET 2008 แต่จะสามารถใช้งานได้เฉพาะภายในเครื่องตัวเองคือ http://localhost:1943 เท่านั้น โดยเครื่องคอมพิวเตอร์อื่นภายในเน็ตเวิร์คจะไม่สามารถเข้าถึงตำแหน่ง URL ของ Circle.asmx ที่เป็น Web Services ของเราได้ ดังนั้นในขั้นตอนนี้เราจะนำ Circle.asmx นี้ไปติดตั้งไว้กับ IIS (Internet Information Server) ที่ทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ของระบบปฏิบัติการ Windows 2003
ก่อนอื่นให้ท่านตรวจสอบให้แน่ใจก่อนว่าบนเครื่อง Windows Server 2003 ของท่านได้ติดตั้ง IIS 6 ไว้แล้วหรือไม่โดยเปิดไปที่ Control Panel และคลิกเลือก Add and Remove Programs คลิกที่ Add/Remove Windows Components และตรวจสอบคอมโพเนนท์ชื่อว่า Application Server และ Microsoft .NET Framework ตามภาพต่อไปนี้

รูปภาพ 18 ตรวจสอบว่ามี IIS 6 ติดตั้งไว้พร้อมสำหรับทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ให้กับ .NET Web Services
หากพบว่าเครื่องเซิร์ฟเวอร์ Windows 2003 ของท่านยังไม่ได้ติดตั้งคอมโพเนนท์ทั้งสองตัวนี้ ให้ท่านติดตั้งจากแผ่นติดตั้งระบบปฏิบัติการ Windows Server 2003 ให้เสร็จก่อนที่จะดำเนินการในขั้นตอนถัดไป

2.3 การปรับแต่งคอนฟิกเกอเรชันของ IIS ให้สามารถรัน ASP.NET

หากท่านพึ่งติดตั้ง IIS บนเครื่อง Windows Server 2003 เป็นครั้งแรก จะยังไม่สามารถรัน ASP.NET ได้ วิธีการทำให้ IIS สามารถรัน ASP.NET ได้ให้ท่านเปิดหน้าต่างควบคุม IIS ขึ้นมา แล้วทำตามขั้นตอนดังนี้

รูปภาพ 19 ขั้นตอนการปรับแต่งคอนฟิกเกอเรชันของ IIS ให้สามารถรัน ASP.NET และ Dynamic Web Page ได้
หลังจากเปิดหน้าต่างควบคุม Internet Information Services (IIS) Manager ขึ้นมาแล้วจัดการ Allow ให้กับ Web Service Extension  ทุกตัวในรายการแล้ว ให้ท่านรีสตาทร์ IIS อีกครั้ง โดยคลิกขวาที่ตัวไอคอนเซิร์ฟเวอร์ แล้วเลือกคำสั่ง All Tasks à Restart IIS … จากเมนู

รูปภาพ 20 เมื่อปรับแต่งค่า Allow ของ Web Services Extension เสร็จแล้วให้รีสตาทร์ IIS อีกครั้งด้วย

2.4 นำ Web Services จาก Visual Studio .NET มารันที่ IIS

ให้ท่านสร้างโฟลเดอร์ชื่อว่า circle ใส่ไว้ในโฟลเดอร์ c:\provider เพื่อใช้สำหรับเป็นตำแหน่งที่วางเว็บไซต์ ดังนี้

รูปภาพ 21 สร้างโฟลเดอร์ circle สำหรับใช้วาง Circle Web Service และรันกับ IIS
กลับไปที่ Visual Studio .NET 2008 แล้วคลิกขวาที่ไอคอนโปรเจค Circle แล้วเลือกคำสั่ง Publish …

รูปภาพ 22 ที่ Visual Studio .NET ให้คลิกขวาจากไอคอนโปรเจค แล้วเลือกคำสั่ง Publish … ระบุตำแหน่งไปที่ c:\provider\circle
หลังจาก Publish แล้ว ให้เปิดไปดูที่โฟลเดอร์ c:\provider\circle จะพบว่ามีไฟล์ Circle.asmx วางอยู่ แสดงว่าขณะนี้เราสามารถนำโฟลเดอร์นี้ไปตั้งเป็น Web Services เพื่อใช้งานกับ IIS ได้แล้ว

รูปภาพ 23 หลังจาก Publish แล้ว ไฟล์ที่จำเป็นต่อการรัน Web Services กับ IIS จะถูกก็อปปีมาวางไว้ที่โฟลเดอร์ c:\provider\circle

2.5 สร้าง Virtual Directory

เปิดหน้าต่างควบคุมของ IIS อีกครั้ง แล้วสร้าง Virtual Directory ชี้ไปที่ตำแหน่ง c:\provider\circle ตามขั้นตอนในรูปภาพ 24
ในขั้นตอนหมายเลข 5 ให้ใส่ชื่อ alias เป็นคำว่า circle และขั้นตอนหมายเลข 6 ใส่ Path เป็น c:\provider\circle นอกจากนี้ให้ตรวจสอบที่ขั้นตอนที่ 7, 8, 9, 10 ให้เช็คเลือกไว้เพื่อให้ IIS สามารถรันโปรแกรม .NET ที่วางอยู่ที่โฟลเดอร์นี้ได้
เมื่อเสร็จสิ้นขั้นตอนสุดท้าย คลิกที่ปุ่ม Finish แล้วจะปรากฏ Virtual Directory ชื่อว่า circle ให้เห็นภายใต้ Default Web Site ซึ่งหมายความต่อไปนี้ผู้ใช้อื่นในระบบอินทราเน็ต (หรืออินเตอร์เน็ต) จะสามารถเบราซ์มาที่เครื่องคอมพิวเตอ์เซิร์ฟเวอร์ตัวนี้เพื่อรัน Circle Web Service ได้จากตำแหน่ง http://<ชื่อเครื่อง>/circle นั่นเอง

รูปภาพ 24 ขั้นตอนการสร้าง Virtual Directory เพื่อทำให้สามารถรัน Web Services ที่ Deploy ออกมาจาก Visual Studio .NET ได้

2.6 การทดสอบและปรับแต่ง Security เพิ่มเติม

เมื่อท่านสร้าง Virtual Directory สำหรับรัน Circle Web Services แล้วให้ทดสอบโดยเปิดเว็บเบราเซอร์ แล้วเบราซ์ไปที่ http://<ชื่อเครื่องของท่าน>/circle ควรจะได้ภาพดังนี้

รูปภาพ 25 เบราซ์มาที่ URL ตำแหน่ง http://<ชื่อเครื่องของท่าน>/circle และคลิกต่อไปที่ Circle.asmx (มี Error เกี่ยวกับ Security)
หากพบข้อผิดพลาดเกี่ยวกับ Security เช่นในภาพข้างต้นนี้ ให้ท่านเปิดไปที่ตำแหน่งที่ข้อความ Error แจ้งออกมา เช่นในที่นี้ ข้อความ Error บอกว่า ไม่สามารถเขียนไปที่โฟลเดอร์ c:\windows\Microsoft.NET\Framework\v.2.0.50727\Temporary ASP.NET Files ได้ ดังนั้นท่านจำเป็นต้องไปที่โฟลเดอร์นี้แล้วกำหนดสิทธิให้ผู้ใช้ชื่อ NETWORK SERVICE สามารถเขียนไฟล์ลงไปที่โฟลเดอร์ดังกล่าวนี้ได้ด้วย

รูปภาพ 26 การกำหนดสิทธิให้กับ NETWORK SERVICE เพื่อให้สามารถเขียนข้อมูลลงไปที่โฟลเดอร์ชั่วคราวของ .NET ได้
นอกจากนี้ ท่านควรจะต้องกำหนดสิทธิให้ NETWORK SERVICE สามารถเขียนโฟลเดอร์ TEMP ของ Windows ได้ เนื่องจากขณะรัน .NET อาจจะมีการสร้างไฟล์ชั่วคราวออกมา และจำเป็นต้องเขียนไปวางไว้ที่โฟลเดอร์ TEMP ซึ่งหากท่านไม่อนุญาตให้สิทธิไว้ อาจจะเกิด Error ได้ในขณะรันหน้าเว็บที่เป็นพวก .NET

รูปภาพ 27 ตัวอย่างการกำหนดสิทธิให้ NETWORK SERVICE สามารถเขียนไฟล์ชั่วคราวไปที่โฟลเดอร์ c:\Windows\Temp ได้
เมื่อกำหนดสิทธิให้กับ NETWORK SERVICE แล้วให้ทดลองรีเฟรชหน้าเว็บ http://<ชื่อเครื่อง>/circle/Circle.asmx อีกครั้งจะสามารถเข้าถึง Circle Web Services และป้อนข้อมูลเพื่อทดลองรันได้

รูปภาพ 28 ทดลองรัน Circle Web Services ว่าสามารถใช้งานได้

2.7 เปิดดู WSDL ของ Circle Web Service

ให้ท่านแก้ไขตำแหน่ง URL บนแอดเดรสบาร์ โดยใส่ ?WSDL ต่อท้ายคำว่า Circle.asmx เข้าไป เมื่อกดคีย์ Enter เพื่อเบราซ์ดู จะปรากฏข้อมูล WSDL (Web Service Description Language) ของ Circle Web Service ปรากฏออกมาให้เห็นดังนี้

รูปภาพ 29 สามารถเปิดดู WSDL ของ Circle Web Services ได้ ให้สังเกตที่ location ซึ่งเป็นตำแหน่งที่ใช้รัน Web Services
เราจำเป็นต้องจดจำตำแหน่ง WSDL นี้เพื่อนำไปลงทะเบียนกับระบบ Web Services Helper System และทดสอบว่าระบบ Web Services Helper System สามารถเชื่อมต่อกับ .NET Web Service ที่เป็นแบบ RPC Style นี้ได้

2.8 การติดตั้ง Document-Style Web Services กับ .NET

เว็บเซอร์วิสที่ถูกพัฒนาขึ้นมาจะมีอยู่ 2 รูปแบบคือ RPC-Style และ Document-Style ที่ผ่านในเราทดสอบเชื่อมต่อไปที่ Circle Web Services ซึ่งเป็นเว็บเซอร์วิสแบบ RPC-Style ในขั้นตอนนี้เราจะทดสอบเชื่อมต่อไปที่เว็บเซอร์วิสชื่อว่า CustomerService ซึ่งเป็นแบบ Document-Style

รูปภาพ 68 โฟลเดอร์ dotnet_doc ที่ใช้สำหรับติดตั้งเพื่อทดสอบการเชื่อมต่อกับ Web Services Provider แบบ Document-Style
การนำไฟล์ CustomerService.sln นี้ไปคอมไพล์และใช้งานกับ IIS จะใช้วิธีการเดียวกันกับ Circle Web Services ที่ทำผ่านมาแล้วคือ
·      เปิดไฟล์ CustomerService.sln ด้วย Visual Studio .NET 2008
·      สั่ง Publish … ไฟล์ไปวางที่ตำแหน่ง c:\provider\customer
·      ใช้ IIS Manager สร้าง Virtual Directory มาที่โฟลเดอร์ c:\provider\customer ตั้งชื่อ Alias เป็น customer
·      ทดลองรันหน้าเว็บที่ตำแหน่ง URL http://<ชื่อเครื่อง>/customer/Customer.asmx
ดังนั้นในที่นี้จะสมมุติว่าท่านได้ติดตั้ง CustomerService ตัวนี้ลงไปรันกับ IIS เรียบร้อยแล้ว และได้ตำแหน่งไฟล์ WSDL มาเป็น http://<ชื่อเครื่อง>/customer/Customer.asmx?WSDL ดังภาพต่อไปนี้

รูปภาพ 69 การนำ CustomerService ไปรันกับ IIS เพื่อใช้เป็น Web Services Provider แบบ Document-Style


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ทำความเข้าใจกับ XML เว็บเซอร์วิส (Web Services) และ SOA

การสร้างเว็บเซอร์วิส
ตอนที่ 1 สร้าง Web Services ด้วยภาษา Java