บริการบนเว็บ - ตัวอย่าง

ตามสถาปัตยกรรมบริการเว็บเราสร้างองค์ประกอบสองส่วนต่อไปนี้เพื่อเป็นส่วนหนึ่งของการใช้บริการเว็บ -

ผู้ให้บริการหรือผู้จัดพิมพ์

นี่คือผู้ให้บริการเว็บ ผู้ให้บริการใช้บริการและทำให้พร้อมใช้งานบนอินเทอร์เน็ตหรืออินทราเน็ต

เราจะเขียนและเผยแพร่บริการเว็บง่ายๆโดยใช้. NET SDK

ผู้ร้องขอบริการหรือผู้บริโภค

นี่คือผู้ใช้บริการเว็บใด ๆ ผู้ร้องขอใช้บริการเว็บที่มีอยู่โดยเปิดการเชื่อมต่อเครือข่ายและส่งคำขอ XML

นอกจากนี้เราจะเขียนผู้ร้องขอบริการเว็บสองราย: ผู้ใช้บนเว็บหนึ่งราย (แอปพลิเคชัน ASP.NET) และผู้ใช้แอปพลิเคชัน Windows รายอื่น

ด้านล่างนี้เป็นตัวอย่างบริการเว็บแรกของเราซึ่งทำงานในฐานะผู้ให้บริการและแสดงวิธีการสองวิธี (เพิ่มและ SayHello) เป็นบริการเว็บที่แอปพลิเคชันใช้ นี่คือเทมเพลตมาตรฐานสำหรับบริการบนเว็บ บริการเว็บ. NET ใช้นามสกุล. asx โปรดทราบว่าวิธีการที่แสดงเป็นบริการบนเว็บมีแอตทริบิวต์ WebMethod บันทึกไฟล์นี้เป็น FirstService.asmx ในไดเร็กทอรีเสมือน IIS (ตามที่อธิบายไว้ในการกำหนดค่า IIS ตัวอย่างเช่น c: \ MyWebSerces)

FirstService.asmx
<%@ WebService language = "C#" class = "FirstService" %>

using System;
using System.Web.Services;
using System.Xml.Serialization;

[WebService(Namespace = "http://localhost/MyWebServices/")]
public class FirstService : WebService{
   [WebMethod]
   public int Add(int a, int b) {
      return a + b;
   }

   [WebMethod]
   public String SayHello() {
      return "Hello World";
   }
}

ในการทดสอบบริการบนเว็บต้องมีการเผยแพร่ บริการเว็บสามารถเผยแพร่บนอินทราเน็ตหรืออินเทอร์เน็ต เราจะเผยแพร่บริการเว็บนี้บน IIS ที่ทำงานบนเครื่องท้องถิ่น เริ่มต้นด้วยการกำหนดค่า IIS

  • เปิดเริ่ม→การตั้งค่า→แผงควบคุม→เครื่องมือการดูแลระบบ→ตัวจัดการบริการอินเทอร์เน็ต

  • ขยายและคลิกขวาที่เว็บไซต์เริ่มต้น เลือกใหม่ & # rarr; ไดเรกทอรีเสมือน วิซาร์ดการสร้างไดเรกทอรีเสมือนจะเปิดขึ้น คลิกถัดไป

  • หน้าจอ "Virtual Directory Alias" จะเปิดขึ้น พิมพ์ชื่อไดเร็กทอรีเสมือน ตัวอย่างเช่น MyWebServices คลิกถัดไป

  • หน้าจอ "Web Site Content Directory" จะเปิดขึ้น

  • ป้อนชื่อพา ธ ไดเร็กทอรีสำหรับไดเร็กทอรีเสมือน ตัวอย่างเช่น c: \ MyWebServices คลิกถัดไป

  • หน้าจอ "สิทธิ์การเข้าถึง" จะเปิดขึ้น เปลี่ยนการตั้งค่าตามความต้องการของคุณ ให้เรารักษาการตั้งค่าเริ่มต้นสำหรับแบบฝึกหัดนี้

  • คลิกปุ่มถัดไป เสร็จสิ้นการกำหนดค่า IIS

  • คลิกเสร็จสิ้นเพื่อเสร็จสิ้นการกำหนดค่า

หากต้องการทดสอบว่า IIS ได้รับการกำหนดค่าอย่างถูกต้องหรือไม่ให้คัดลอกไฟล์ HTML (ตัวอย่างเช่น x.html) ในไดเรกทอรีเสมือน (C: \ MyWebServices) ที่สร้างขึ้นด้านบน ตอนนี้เปิด Internet Explorer แล้วพิมพ์http://localhost/MyWebServices/x.html. ควรเปิดไฟล์ x.html

Note- หากไม่ได้ผลให้ลองแทนที่ localhost ด้วยที่อยู่ IP ของเครื่องของคุณ หากยังไม่ได้ผลให้ตรวจสอบว่า IIS กำลังทำงานอยู่หรือไม่ คุณอาจต้องกำหนดค่า IIS และ Virtual Directory ใหม่

ในการทดสอบบริการบนเว็บนี้ให้คัดลอก FirstService.asmx ในไดเร็กทอรีเสมือน IIS ที่สร้างขึ้นด้านบน (C: \ MyWebServices) เปิดบริการเว็บใน Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx) ควรเปิดหน้าเว็บบริการของคุณ หน้านี้ควรมีลิงก์ไปยังสองวิธีที่แสดงเป็นบริการบนเว็บโดยแอปพลิเคชันของเรา ยินดีด้วย! คุณได้เขียนบริการเว็บแรกของคุณแล้ว!

การทดสอบบริการเว็บ

อย่างที่เราเพิ่งเห็นการเขียนเว็บเซอร์วิสเป็นเรื่องง่ายใน. NET Framework การเขียนผู้ใช้บริการเว็บก็ทำได้ง่ายในกรอบ. NET อย่างไรก็ตามมันมีส่วนเกี่ยวข้องมากกว่าเล็กน้อย ดังที่ได้กล่าวไว้ก่อนหน้านี้เราจะเขียนผู้ใช้บริการสองประเภทหนึ่งทางเว็บและผู้บริโภคที่ใช้แอปพลิเคชัน Windows อื่น ให้เราเขียนผู้ใช้บริการเว็บรายแรกของเรา

ผู้ใช้บริการบนเว็บ

เขียนผู้บริโภคบนเว็บตามที่ระบุด้านล่าง เรียกว่า WebApp.aspx โปรดทราบว่าเป็นแอปพลิเคชัน ASP.NET บันทึกสิ่งนี้ในไดเร็กทอรีเสมือนของบริการเว็บ (c: \ MyWebServices \ WebApp.axpx)

แอปพลิเคชันนี้มีช่องข้อความสองช่องที่ใช้เพื่อรับหมายเลขจากผู้ใช้ที่จะเพิ่ม มันมีปุ่มเดียวคือ Execute ซึ่งเมื่อคลิกจะได้รับบริการเว็บ Add และ SayHello

WebApp.aspx
<%@ Page Language = "C#" %>
<script runat = "server">
   void runSrvice_Click(Object sender, EventArgs e) {
      FirstService mySvc = new FirstService();
      Label1.Text = mySvc.SayHello();
      Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text),  Int32.Parse(txtNum2.Text)).ToString();
   }
</script>

<html>
   <head> </head>
   
   <body>
      <form runat = "server">
         <p>
            <em>First Number to Add </em>:
            <asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4<  /asp:TextBox>
         </p>
			
         <p>
            <em>Second Number To Add </em>:
            <asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox>
         </p>
			
         <p>
            <strong><u>Web Service Result -</u></strong>
         </p>
			
         <p>
            <em>Hello world Service</em> :
            <asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label< /asp:Label>
         </p>

         <p>
            <em>Add Service</em> :
            & <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label>
         </p>
			
         <p align = "left">
            <asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button>
         </p>
      </form>
   </body>
</html>

หลังจากสร้างผู้บริโภคแล้วเราจำเป็นต้องสร้างพร็อกซีเพื่อให้บริการเว็บใช้งานได้ งานนี้ทำโดยอัตโนมัติโดย Visual Studio .NET สำหรับเราเมื่ออ้างถึงบริการเว็บที่ถูกเพิ่มเข้ามา นี่คือขั้นตอนที่ต้องปฏิบัติ -

  • สร้างพร็อกซีสำหรับบริการเว็บที่จะใช้ พร็อกซีถูกสร้างขึ้นโดยใช้ยูทิลิตี้ WSDL ที่มาพร้อมกับ. NET SDK ยูทิลิตี้นี้ดึงข้อมูลจาก Web Service และสร้างพร็อกซี พร็อกซีใช้ได้เฉพาะกับบริการเว็บเฉพาะ หากคุณต้องการใช้บริการเว็บอื่นคุณต้องสร้างพร็อกซีสำหรับบริการนี้ด้วย Visual Studio .NET สร้างพร็อกซีโดยอัตโนมัติสำหรับคุณเมื่อมีการเพิ่มการอ้างอิง Web Service สร้างพร็อกซีสำหรับ Web Service โดยใช้ยูทิลิตี้ WSDL ที่มาพร้อมกับ. NET SDK มันจะสร้างไฟล์ FirstSevice.cs ในไดเร็กทอรีปัจจุบัน เราจำเป็นต้องคอมไพล์เพื่อสร้าง FirstService.dll (proxy) สำหรับ Web Service

c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
  • ใส่พร็อกซีที่คอมไพล์แล้วในไดเร็กทอรี bin ของไดเร็กทอรีเสมือนของ Web Service (c: \ MyWebServices \ bin) Internet Information Services (IIS) ค้นหาพร็อกซีในไดเร็กทอรีนี้

  • สร้างผู้บริโภคบริการในแบบเดียวกับที่เราทำไปแล้ว โปรดสังเกตว่าอ็อบเจ็กต์ของพร็อกซีบริการเว็บถูกสร้างอินสแตนซ์ในผู้บริโภค พร็อกซีนี้ดูแลการโต้ตอบกับบริการ

  • พิมพ์ URL ของผู้บริโภคใน IE เพื่อทดสอบ (ตัวอย่างเช่น http: //localhost/MyWebServices/WebApp.aspx)

ผู้ใช้บริการเว็บบนแอปพลิเคชันของ Windows

การเขียนผู้ใช้บริการเว็บที่ใช้แอปพลิเคชัน Windows เหมือนกับการเขียนแอปพลิเคชัน Windows อื่น ๆ คุณต้องสร้างพร็อกซีเท่านั้น (ซึ่งเราได้ทำไปแล้ว) และอ้างอิงพร็อกซีนี้เมื่อคอมไพล์แอปพลิเคชัน ต่อไปนี้เป็นแอปพลิเคชัน Windows ของเราที่ใช้บริการเว็บ แอปพลิเคชันนี้สร้างออบเจ็กต์บริการบนเว็บ (แน่นอนว่าพร็อกซี) และเรียกใช้เมธอด SayHello และเพิ่ม

WinApp.cs

using System;
using System.IO;

namespace SvcConsumer {
   class SvcEater {
      public static void Main(String[] args) {
         FirstService mySvc = new FirstService();
         Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
         Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
      }
   }
}

รวบรวมโดยใช้c:\>csc /r:FirstService.dll WinApp.cs. มันจะสร้าง WinApp.exe เรียกใช้เพื่อทดสอบแอปพลิเคชันและบริการบนเว็บ

ตอนนี้คำถามเกิดขึ้น: คุณแน่ใจได้อย่างไรว่าแอปพลิเคชันนี้เรียกใช้บริการเว็บจริง?

เป็นเรื่องง่ายที่จะทดสอบ หยุดการทำงานของเว็บเซิร์ฟเวอร์ของคุณเพื่อให้ไม่สามารถติดต่อกับบริการเว็บได้ ตอนนี้เรียกใช้แอปพลิเคชัน WinApp มันจะเริ่มข้อยกเว้นรันไทม์ ตอนนี้เริ่มเว็บเซิร์ฟเวอร์อีกครั้ง มันควรจะทำงาน