บทความนี้จะบรรยายถึง Native XML web service ซึ่งเป็นแนวทางที่ SQL Server 2005 ใช้เสนอ web services โดยไม่ต้องทำงานผ่าน IIS แต่ผ่าน http.sys (Windows HTTP listener process ใน Windows 2003 และ Windows XP SP2) แทน ลักษณะที่สำคัญอย่างอื่นของมันมีดังนี้
- รองรับการทำงานร่วมกับ SOAP 1.1, SOAP 1.2 และ WSDL
- รองรับการทำงานกับคำสั่ง ad hoc Transact-SQL
- ข้อมูลผลลัพธ์จากการประมวลผลโดยส่วนใหญ่ ส่งกลับออกมาโดยไม่ต้องใช้ FOR XML
- client application เรียกใช้งานมันได้โดยตรง ไม่มีการทำงานผ่าน XML templates เหมือนใน SQLXML 3.0
- security ถูกควบคุมจากภายใน SQL Server โดยตรง
เราสามารถสร้าง Native XML web service ได้มากเท่าที่ต้องการโดยอาศัยคำสั่ง CREATE ENDPOINT เพื่อสร้าง service endpoints แต่ละ endpoint สามารถรับผลลัพธ์จาก stored procedure แล้วส่งออกไปเป็น SOAP message ในที่สุด
เราลองมาดูตัวอย่างการสร้างคำสั่ง CREATE ENDPOINT กัน
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
CREATE ENDPOINT ToyPoint STATE = STARTED AS HTTP ( PATH = '/Toy', AUTHENTICATION = (INTEGRATED), PORTS = (CLEAR), SITE = 'localhost' )
FOR SOAP ( WEBMETHOD 'Toys' (NAME='FunnyToys.dbo.ToyProc'), BATCHES = DISABLED, WSDL = DEFAULT, DATABASE = 'FunnyToys', NAMESPACE = 'http:// FunnyToys/Toy' )
GO |
พอจะสรุปได้ว่า web service ถูกสร้างขึ้นและสามารถใช้งานได้ที่ http://localhost/Toy ซึ่ง web service นี้เชื่อมต่อกับฐานข้อมูล FunnyToys ผ่าน stored procedure ชื่อ dbo.ToyProc
การเรียกใช้ Native XML web service จาก client application สามารถทำได้เหมือนกับ web services อื่นทั่วๆไป นั่นคือเริ่มจาก add web reference จากนั้นสร้าง proxy instance และในที่สุดก็สามารถเรียก web method ได้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
private void TestWebMethod(string toyName) { System.Data.SqlTypes.SqlString outToys = ""; server.ToyPoint proxy = new server.ToyPoint(); proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; object[] results; results = proxy.Toys(toyName, ref outToys);
for (int i = 0; i < results.Length; i++) { // Show result } } |
เป็นยังไงกันบ้างครับ ดูแล้วไม่ยากเลยใช่มั้ย ลองสร้างทดสอบกันดูนะครับ