การสร้างเว็บเซอร์วิส
ตอนที่ 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 ดังนี้
ให้ตรวจสอบว่ามีไฟล์ 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 เพื่อเริ่มต้นใช้งาน
ดังนี้
หลังจากเปิด Visual Studio .NET 2008 แล้วให้เลือกไปที่ เมนู File à Open à Project/Solution … แล้วเลือกเปิดไฟล์ Circle.sln ไฟล์โซลูชันนี้จะเปิดออกมาได้
คล้ายดังภาพต่อไปนี้
ให้ท่านเริ่มต้นรัน Web Services โดยคลิกปุ่ม Start Debugging จากทูลบาร์
หลังจากรอสักครู่ จะปรากฏหน้าต่างเบราเซอร์ Internet
Explorer ลอยขึ้นมาพร้อมกับแสดงตำแหน่ง URL เป็น
http://localhost:1943/Circle.asmx
เราสามารถทดสอบว่า Circle Web Services สามารถใช้งานได้จริงหรือไม่
โดยให้ท่านคลิกเลือกที่โอเปอเรชันชื่อว่า 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 ขึ้นมา
แล้วทำตามขั้นตอนดังนี้
หลังจากเปิดหน้าต่างควบคุม Internet
Information Services (IIS) Manager ขึ้นมาแล้วจัดการ Allow ให้กับ Web Service Extension
ทุกตัวในรายการแล้ว ให้ท่านรีสตาทร์ IIS อีกครั้ง โดยคลิกขวาที่ตัวไอคอนเซิร์ฟเวอร์ แล้วเลือกคำสั่ง All
Tasks à
Restart IIS … จากเมนู
2.4 นำ Web Services จาก Visual Studio .NET มารันที่ IIS
ให้ท่านสร้างโฟลเดอร์ชื่อว่า circle ใส่ไว้ในโฟลเดอร์ c:\provider เพื่อใช้สำหรับเป็นตำแหน่งที่วางเว็บไซต์
ดังนี้
กลับไปที่ 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 และป้อนข้อมูลเพื่อทดลองรันได้
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 ดังภาพต่อไปนี้
ความคิดเห็น
แสดงความคิดเห็น