บริการเว็บเป็นฟังก์ชันบนเครือข่ายที่แอปพลิเคชันเว็บสามารถรับได้ผ่านโปรโตคอลเครือข่ายเว็บ การพัฒนาบริการเว็บส่วนใหญ่ประกอบด้วยสามด้านต่อไปนี้:
สร้างบริการเว็บ
สร้างพร็อกซีเซิร์ฟเวอร์
ใช้บริการเว็บ
เว็บเซอร์วิสคือเว็บแอปพลิเคชัน รูปแบบพื้นฐานคือคลาสที่มีหลายวิธีที่สามารถเรียกใช้โดยแอปพลิเคชันอื่นได้ นอกจากนี้ยังใช้โครงสร้างโค้ดที่ซ่อนอยู่ เช่น เว็บเพจ ASP.NET แต่ไม่มีส่วนต่อประสานกับผู้ใช้
เพื่อให้เข้าใจแนวคิดนี้ได้ดีขึ้น เรามาสร้างบริการเว็บที่ให้ข้อมูลราคาหุ้นกันดีกว่า ลูกค้าของบริการสามารถค้นหาชื่อและราคาที่เกี่ยวข้องผ่านแท็กหุ้น เพื่อให้ตัวอย่างนี้ง่ายขึ้น เราได้กำหนดราคาหุ้นเป็นมูลค่าคงที่และบันทึกไว้ในรายการสองมิติ บริการบนเว็บนี้มีสามวิธี:
วิธีการ HelloWorld เริ่มต้น
วิธีการ GetName
วิธีการ GetPrice
ทำตามขั้นตอนต่อไปนี้เพื่อสร้างบริการ:
ขั้นตอนที่ (1) : เลือกไฟล์ -> ใหม่ -> เว็บไซต์ใน Visual Studio จากนั้นเลือก ASP.NET Web Service
ขั้นตอนที่ (2) : ไฟล์บริการเว็บชื่อ Service.asmx และโค้ดของมันถูกซ่อนไว้ และ Service.cs จะถูกสร้างขึ้นในเส้นทาง App_Code ของโปรเจ็กต์นี้
ขั้นตอนที่ (3) : เปลี่ยนชื่อไฟล์เป็น StockService.asmx และ StockService.cs
ขั้นตอนที่ (4) : ไฟล์ .asmx ทำให้คำสั่ง WebService ง่ายขึ้นดังต่อไปนี้:
<%@ ภาษา WebService = "C #" CodeBehind = "~/App_Code/StockService.cs" Class = "StockService" %>
ขั้นตอนที่ (5) : เปิดไฟล์ StockService.cs รหัสที่สร้างขึ้นในไฟล์นี้เป็นรหัสพื้นฐานของบริการ Hello World รหัสบริการเว็บเริ่มต้นจะเป็นดังนี้:
ใช้ System.Collections ใช้ System.Data ใช้ System.Web ใช้ System.Web.Protocols ; namespace StockService { // <summary> // คำอธิบายโดยย่อสำหรับ Service1 // <summary> [WebService (Namespace = "http://tempuri.org/")] [WebServiceBinding (ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // หากต้องการอนุญาตให้บริการเว็บนี้ถูกเรียกจากสคริปต์ // โดยใช้ ASP.NET AJAX ให้ยกเลิกหมายเหตุในบรรทัดต่อไปนี้ // [System.Web.Script.Services.ScriptService] Service1 ระดับสาธารณะ: System.Web.Services.WebService { [WebMethod] สตริงสาธารณะ HelloWorld () { กลับ "Hello World" } } }
ขั้นตอนที่ (6) : แก้ไขโค้ดในไฟล์เพื่อเพิ่มตัวชี้แบบสองมิติที่เก็บสตริงของฉลาก ชื่อ และราคาหุ้นแต่ละรายการ และเขียนวิธีทางเว็บ 2 วิธีเพื่อรับข้อมูลหุ้นดังนี้
ใช้ System.Linq; ใช้ System.Web.Services; ใช้ System.Web.Services.Protocols; ใช้ System.Xml.Linq; ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // หากต้องการอนุญาตให้เรียกใช้บริการเว็บนี้จากสคริปต์ // ใช้ ASP.NET AJAX ไม่ต้องใส่เครื่องหมายข้อคิดเห็น บรรทัดต่อไปนี้ // [System.Web.Script.Services.ScriptService] คลาสสาธารณะ StockService : System.Web.Services.WebService { public StockService () { // ไม่แสดงข้อคิดเห็นต่อไปนี้หากใช้ส่วนประกอบที่ออกแบบ //InitializeComponent() } string[,] หุ้น = { {"RELIND", "Reliance Industries", "1,060.15"}, {"ICICI", "ธนาคาร ICICI", "911.55"}, {"JSW", "JSW Steel", "1201.25"}, {"WIPRO", "Wipro Limited", "1194.65"}, {"SATYAM", "Satyam Computers", "91.10"} }; [WebMethod] สาธารณะ string HelloWorld() { return "Hello World"; } [WebMethod] public double GetPrice(สัญลักษณ์สตริง) { //ใช้สัญลักษณ์เป็นพารามิเตอร์และ ส่งคืนราคาสำหรับ (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(สัญลักษณ์, หุ้น[i, 0], จริง) == 0) return Convert.ToDouble(stocks[i , 2]); } ส่งคืน 0; } [WebMethod] GetName สตริงสาธารณะ (สัญลักษณ์สตริง) { // ใช้สัญลักษณ์เป็นพารามิเตอร์และ // ส่งคืนชื่อของหุ้นสำหรับ (int i = 0; i < stocks.GetLength (0); i ++) { if (String.Compare (สัญลักษณ์, หุ้น [i, 0], จริง) == 0) คืนหุ้น [i, 1];
ขั้นตอนที่ (7) : การเรียกใช้แอปพลิเคชันบริการเว็บจะให้หน้าทดสอบบริการเว็บซึ่งเราสามารถทดสอบวิธีการบริการได้
ขั้นตอนที่ (8) : คลิกที่ชื่อวิธีการเพื่อยืนยันว่าทำงานถูกต้องหรือไม่
ขั้นตอนที่ (9) : เพื่อตรวจหาวิธีการ GetName ให้ระบุหนึ่งในแท็กหุ้นที่กำหนดไว้แล้ว หากถูกต้อง ชื่อของหุ้นที่เกี่ยวข้องจะถูกส่งกลับ
ในการใช้บริการเว็บนี้เราสร้างเว็บไซต์ภายใต้โซลูชันเดียวกัน (โซลูชัน) เพียงคลิกขวาที่ชื่อโซลูชันในตัวจัดการโซลูชันหน้าเว็บที่เรียกโดยบริการเว็บควรมีการจัดการควบคุมเพื่อแสดงผลลัพธ์และสอง ปุ่มควบคุมหนึ่งปุ่มสำหรับส่งคืนและอีกปุ่มหนึ่งสำหรับเริ่มการโทรไปยังบริการ
เนื้อหาไฟล์ของเว็บแอปพลิเคชันมีดังนี้:
<%@ ภาษาเพจ = "C#" AutoEventWireup = "true" CodeBehind = "Default.aspx.cs" สืบทอด = "wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// TH" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> หน้าที่ไม่มีชื่อ </title> </head> <body> <form id="form1 " runat="server"> <div> <h3>การใช้บริการสต็อก</h3> <br /> <br /> <asp:Label ID="lblmessage" runat="server"></asp:Label> <br /> <br /> <asp:Button ID="btnpostback" runat="server" onclick="Button1_Click" Text="Post Back" /> <asp:Button ID="btnservice" runat="server" onclick="btnservice_Click" Text = "รับ หุ้น" /> </div> </form> </body> </html>
รหัสสำหรับแอปพลิเคชันเว็บมีดังนี้:
การใช้ System.Collections การใช้ System.Web.UI ; การใช้ System.Web.UI.WebControls; การใช้ System.Web.UI.WebControls.WebParts; { public some class _Default : System.Web.UI.Page { protected void Page_Load(ผู้ส่งอ็อบเจ็กต์, EventArgs e) { if (!IsPostBack) { lblmessage.Text = "เวลาในการโหลดครั้งแรก: " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "PostBack at: " + DateTime.Now.ToLongTimeString(); } } ได้รับการป้องกันเป็นโมฆะ btnservice_Click(ผู้ส่งวัตถุ EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("Current SATYAM Price:{0}", proxy.GetPrice("SATYAM").ToString() } } }
พร็อกซีเซิร์ฟเวอร์หมายถึงการแทนที่รหัสบริการเว็บ ก่อนที่จะใช้บริการเว็บ เราต้องสร้างพร็อกซีเซิร์ฟเวอร์ก่อน พร็อกซีเซิร์ฟเวอร์นี้ลงทะเบียนโดยแอปพลิเคชันไคลเอนต์ แอปพลิเคชันไคลเอนต์จะดำเนินการเรียกไปยังบริการเว็บราวกับว่ากำลังใช้วิธีการดั้งเดิม
พร็อกซีเซิร์ฟเวอร์จะทำการโทรและส่งการโทรไปยังเซิร์ฟเวอร์ในรูปแบบที่เหมาะสมเป็นคำขอ SOAP SOAP รองรับ Simple Object Access Protocol โปรโตคอลนี้เหมาะสำหรับการแลกเปลี่ยนข้อมูลบริการบนเว็บ
เมื่อเซิร์ฟเวอร์ตอบสนองและส่งแพ็กเก็ต SOAP กลับไปยังไคลเอนต์ พร็อกซีเซิร์ฟเวอร์จะแสดงทุกอย่างให้กับแอปพลิเคชันไคลเอนต์
ก่อนที่จะเรียกใช้บริการเว็บโดยใช้ btnservice_click ควรเพิ่มเว็บแอปพลิเคชันลงในแอปพลิเคชัน สิ่งนี้จะสร้างคลาสพร็อกซีที่เหตุการณ์ btnservice_click สามารถใช้ได้อย่างโปร่งใส
ป้องกันเป็นโมฆะ btnservice_Click (ผู้ส่งวัตถุ EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format ("ราคา SATYAM ปัจจุบัน: {0}", proxy.GetPrice ("SATYAM").ToString()) ; }
ทำตามขั้นตอนต่อไปนี้เพื่อสร้างพร็อกซี:
ขั้นตอนที่ (1) : คลิกขวาที่รายการแอปพลิเคชันเว็บใน Solution Explorer และเลือก 'เพิ่มการอ้างอิงเว็บ'
ขั้นตอนที่ (2) : เลือก 'บริการทางเว็บในโซลูชันนี้' และการอ้างอิงบริการสต็อกที่เราเขียนไว้จะถูกส่งคืน
ขั้นตอนที่ (3) : คลิกที่บริการเพื่อเปิดหน้าทดสอบ เมื่อสร้างพร็อกซี จะมีค่าเริ่มต้นเป็น 'localhost' คุณสามารถเปลี่ยนชื่อได้ คลิก 'เพิ่มการอ้างอิง' เพื่อเพิ่มพร็อกซีให้กับแอปพลิเคชันไคลเอนต์
เพิ่มคำสั่งต่อไปนี้ลงในโค้ดของคุณเพื่อรวมตัวแทน:
ใช้โลคอลโฮสต์;