Native XML Web Services ใน SQL Server 2005

Posted 01/01/2008 01:15 by nikom

บทความนี้จะบรรยายถึง 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
}
}

เป็นยังไงกันบ้างครับ ดูแล้วไม่ยากเลยใช่มั้ย ลองสร้างทดสอบกันดูนะครับ

ร่วมให้กำลังใจนักเขียน

อ่านแล้วชอบใจ อยากให้กำลังใจกับผู้แต่งบทความนี้ ขอเชิญร่วมให้กำลังใจผ่าน Paysbuy/Paypal นะครับ ปลอดภัยเพราะทำงานผ่าน SSL และไม่มีค่าใช้จ่ายเพิ่มเติมครับ เว็บเราให้นักเขียน 100% ครับ

Comment ระบบเก่า

 

ton said:

อยากสร้าง web service ที่ดึงข้อมูลจาก SQL Server 2005

แล้วเรียกใช้โดย Winform ใส่ข้อมูลที่ได้ลงใน gridview มันต้องทำยังไงครับ

งงเต็กครับ

July 8, 2008 12:04 PM
 

อ่าน said:

หายไปนานกับบทความใน Coresharp.Net แห่งนี้ แล้วก็กลับมาพบกันกับบทความแรกประจำเดือนธันวาคมนี้ครับ เนื่องมาจากม

December 20, 2009 8:34 PM
(required)  
(optional)
(required)  
Add

DisQUS Comment (ยังเอ๋อๆ อยู่)

blog comments powered by Disqus