บทความนี้จะกล่าวถึงการสร้าง เวบเซอร์วิสพื้นฐาน
ติดต่อกับ window application ที่สร้างขึ้นมาเอง
โดยทำเป็น โปรแกรมเครื่องคิดเลข อย่างง่าย โดยมี GUI เป็น
windows app และใช้ webservice เป็นตัวคำนวณ
โดยบทความนี้ จะเน้น concept เป็นสำคัญ ไม่ว่าจะเป็นการสร้าง
wevservice การติดต่อถึง webservice
การPublish Webservice ให้ใช้ได้ใน IIS
ขอขอบคุณ อาจารย์ปรีชา วงศ์หิรัญเดชา,อาจารย์สุภาภรณ์ กานต์สมเกียรติ ผู้ประสิทธิ์ประสาทวิชา
เขียนโดย นายทินวัฒน์ พงษ์ทองเมือง
07 January, 2008 09:45:07 PM
- Visual
Studio.Net 2005
- IIS
- DotNetFramwork
1.1+
- ผู้ใช้ จะใช้ฟอร์มจาก windows app เรียกใช้ web service สำหรับคำนวณ แล้วนำผลลัพธ์ที่ได้ส่งกลับไปยัง ฟอร์ม ของ windows app อีกที เพื่อแสดงผลให้แก่ผู้ใช้ ดังรูป
1. เปิดโปรแกรม Visual Studio.Net 2005
2. คลิกที่ Project.. ที่หลังคำว่า Create ดังรูป Recent Projects
3.
คลิก Other Project Types - > Visual Studio
Solutions
จากนั้นคลิกเปลี่ยนชื่อที่ช่องName
เป็น SolutionCalculator จากนั้นก็คลิก OK
4.
คลิกที่รูป Add NewSolution Folder สร้าง2 Folder
ชื่อ WebService และ WinApp ดังรูป
1. คลิกขวาที่ Folder WebService
-> Add -> New Web Site...ดังรูป
2. คลิกเลือก ASP.NET Web Service
จากนั้นช่อง Location File system ให้ใช้
xxx\SolutionCalculator\Webservice โดยพิมพ์เพิ่มเข้าไป ตามรูปเลย
จากนั้นคลิก OK
3. ปรากฎรูปของกลุ่มไฟล์ WebService ใน
Folder WebServiceดังรูป
4.โค๊ดของไฟล์ Service.vb ให้เพิ่ม
WebMethod ดังนี้
'บวก
<WebMethod()> _
Public Function plus(ByVal a As Integer,
ByVal b As Integer) As String
Return a + b
End Function
'ลบ
<WebMethod()> _
Public Function minus(ByVal a As Integer,
ByVal b As Integer) As String
Return a - b
End Function
'คูณ
<WebMethod()> _
Public Function multiply(ByVal a As
Integer, ByVal b As Integer) As String
Return a * b
End Function
'หาร
<WebMethod()> _
Public Function divide(ByVal a As Integer,
ByVal b As Integer) As String
If b = 0 Then
Return
"ผิดพลาด"
Else
Return
a / b
End If
End Function
1.คลิกปุ่ม เพื่อดูผลรัน จะขึ้นหน้าต่างดังรูป คลิก OK
ได้เลย
2. จะปรากฎรูปของ Service และ Method
ต่างๆที่เราสร้างขึ้นดังรูป
สมมติเราจะทดสอบ Method divide(การหาร) ว่าใช้งานได้หรือไม่
ก็คลิกที่คำว่า divide เลยคับ
3. จากรูปเป็นการ นำ 60 หาร 12
ป้อนตัวเลขตามรูป แล้วคลิก Invoke
4.ผลลัพธ์ ที่ได้อยู่ในรูปของ XML
ซึ่งจะเห็นได้ว่ามี เลข 5 อยู่
ซึ่ง 60 หาร 12 เท่ากับ 5 จริง ลองทดสอบ method อื่นดูบ้าง
ตามต้องการ
5.เมื่อทดสอบแล้วได้ผลไ่่ม่ถูกต้อง
ก็ต้องกลับไปแก้ใน webmethod ในcode ไฟล์ service.vb ใหม่
หากทดสอบผ่านหมด ถูกต้องแล้ว ก็จะเตรียมส่งไปเผยแพร่ (publish)
ต่อไป
หัวข้อนี้สำคัญคือ ต้องมี IIS ดังที่ได้กล่าวไปข้างต้น และ IIS ต้องสนับสนุนไฟล์ .asmx ด้วย นั่นคืออยู่ใน DotNetFramwork
1.คลิกขวาที่ Webservice
ของเรา เลือก publish Web site
2.เปลี่ยน Target เป็น
http://localhost จากนั้นคลิกOK ได้เลย
3.ตอบ Yes ตามรูป
เมื่อเสร็จสมบูรณ์จะมีคำว่า Publish Success ที่ status bar
4.เข้าไปตรวจสอบใน IIS
ไปที่ Start-> Control Panel -> Administrative Tools
-> Internet Information Services
คลิกที่ Default Web Site ดังรูป
จะมี Service เข้ามาใน IIS แล้ว โดยดูได้จากด้านขวา Service
ของเราจะชื่อ Service.asmx
5.คลิกขวาที่ Default Web Site
เลือก Properties
6.คลิกที่แทป Home Directory
แล้วติ๊กถูกหน้า Directory Browsing
7.คลิกปุ่ม Stop Item
แล้วคลิกปุ่ม start Item จากนั้นก็ปิด IIS ได้เลย
8.เท่านี้ service ของเราก็ถูก publish ที่เครื่องเราเรียบร้อยแ้ล้ว การเรียกดู Webservice ของเรา ก็เพียงเข้า IE แล้วพิมพ์ IP เครื่องเราลงไปแล้ว Enter(เช่น http://192.168.0.2) ก็จะเห็น Service ของเราทันที เครื่องอื่น ก็สามารถ เรียกใช้ Service จากเครื่องเราได้ทันที เป็นอันเสร็จสิ้น การสร้าง WebService
1.คลิกขวาที่ Folder WinApp
เลือก Add - > New Project...
2.คลิกตามรูปวงกลมสีแดง
แล้วเปลี่ยน Name เป็น MyCal ส่วน Location ให้เพิ่ม WinApp
ดังภาพ
3.จะได้Form มา
ให้ลากคอนโทรลมาวาง ดังรูป
เปลี่ยนที่ Properties Name ของแต่ละคอนโทรล ดังรูป
4.เปลี่ยนที่ Properties
Text ของแต่ละคอนโทรล ดังรูป
5.คลิกขวาที่ MyCal แล้วเลือก
Add Web Reference
6.ช่อง URL ให้พิมพ์ตามนี้
ส่วนหมายเลข 172.25.5.8 เปลี่ยนให้ตรงกับ IP
เครื่องเพื่อนที่เราต้องการใช้ Service
7.หาก URL ถูกต้องแล้ว
ก็จะมีการพบ Service (1 Service Found) ดังรูป
ตรง Web reference name ให้ตั้งชื่อเป็น WebReference แล้วคลิกปุ่ม
Add Reference
8.ดับเบิ้ลคลิกแต่ละปุ่ม
เพื่อใส่โค๊ดโปรแกรม
โค๊ดโปรแกรมทั้งหมด
Public Class Mycalculator
Dim ws As New WebReference.Service
Private Sub cmdPlus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPlus.Click
Me.LbOperator.Text = "+"
Me.txtResult.Text = ws.plus(Me.txtA.Text, Me.txtB.Text)
End Sub
Private Sub cmdMinus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMinus.Click
Me.LbOperator.Text = "-"
Me.txtResult.Text = ws.minus(Me.txtA.Text, Me.txtB.Text)
End Sub
Private Sub cmdMultiply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMultiply.Click
Me.LbOperator.Text = "*"
Me.txtResult.Text = ws.multiply(Me.txtA.Text, Me.txtB.Text)
End Sub
Private Sub cmdDivide_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDivide.Click
Me.LbOperator.Text = "/"
Me.txtResult.Text = ws.divide(Me.txtA.Text, Me.txtB.Text)
End Sub
End Class
9.ปิดโค๊ด vb
จากนั้นคลิกขวาที่ MyCal เลือก Set as StartUp
Project
10.ทดสอบโปรแกรม
คลิกปุ่ม เพื่อดูผลรัน
ตกแต่งฟอร์มตามต้องการ จะได้ผลลัพธ์ดังรูป
ขอบคุณมากครับ น่าสนใจมาก แต่เสียดายรูปภาพประกอบบทความมันไม่ขึ้น ช่วย Up รูปภาพใหม่ได้ไม่ครับ ผมสนใจเรื่องนี่มากเลย
เห็นด้วยครับ ช่วยอัฟรูปภาพให้หน่อย
บทความน่าสนใจมากค่ะ พอดีจะใช้ทำโปรเจคด้วย แต่รูปไม่ขึ้น ช่วย Upload รูปใหม่ได้มั้ยค่ะ
พี่ครับผมทำโปรเจคเรื่องนี้อัปรูปขึ้นทีเถอะคับผมยังนึกภาพไม่ออก
ถือว่าสงสารเดกตาดำๆ
จะทำ web service ค่ะ ซึ่งอยู่งงอยู่ ไม่รู้จะเริ่มต้นยังไงดี
หาข้อมูลอยู่เรื่อยๆ มาเจอบทความนี้อธิบายเข้าใจง่ายดีค่ะ แต่เสียดายรูปไม่ขึ้น
อยากให้ช่วย upload รูปใส่ให้หน่อยจักขอบพระคุณ
ตัว webservice นี้ ผมก็เอาไปทำเกมส์ออนไลน์ส่งอาจารย์ด้วยคับ แหะๆ