웹 서비스는 웹 네트워크 프로토콜을 통해 웹 애플리케이션에서 얻을 수 있는 네트워크 기반 기능입니다. 웹 서비스 개발에는 주로 다음 세 가지 측면이 포함됩니다.
웹 서비스 만들기
프록시 서버 생성
웹 서비스 사용
웹 서비스는 웹 애플리케이션이며, 기본 형태는 다른 애플리케이션에서 호출할 수 있는 여러 메서드를 포함하는 클래스입니다. 또한 ASP.NET 웹 페이지와 같은 숨겨진 코드 구조를 사용하지만 사용자 인터페이스는 없습니다.
이 개념을 더 잘 이해하기 위해 주가 정보를 제공하는 웹 서비스를 만들어 보겠습니다. 서비스 고객은 주식 태그를 통해 관련 이름과 가격을 조회할 수 있습니다. 이 예를 단순화하기 위해 주가를 고정 값으로 설정하고 이를 2차원 목록에 저장합니다. 이 웹 서비스에는 세 가지 방법이 포함되어 있습니다.
기본 HelloWorld 메서드
GetName 메서드
GetPrice 메서드
서비스를 생성하려면 다음 단계를 따르세요.
단계 (1) : Visual Studio에서 파일 -> 새로 만들기 -> 웹 사이트를 선택한 다음 ASP.NET 웹 서비스를 선택합니다.
단계 (2) : Service.asmx라는 웹 서비스 파일과 해당 코드가 숨겨져 있으며, 이 프로젝트의 App_Code 경로에 Service.cs가 생성됩니다.
단계 (3) : 파일 이름을 StockService.asmx 및 StockService.cs로 변경합니다.
단계 (4) : .asmx 파일은 다음과 같이 WebService 지침을 단순화합니다.
<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" 클래스="StockService" %>
5단계 : StockService.cs 파일을 엽니다. 이 파일에서 생성된 코드는 Hello World 서비스의 기본 코드입니다. 기본 웹 서비스 코드는 다음과 같습니다.
System.Collections 사용, System.Linq 사용, System.Web.Services 사용, System.Xml.Linq 사용 ; 네임스페이스 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() { return "Hello World" } } }
단계 (6) : 파일의 코드를 수정하여 각 주식의 라벨, 이름, 가격의 문자열을 저장하는 2차원 포인터를 추가하고 주식 정보를 얻는 두 가지 웹 메소드를 다음과 같이 작성합니다.
System.Linq 사용, System.Web.Services 사용, System.Xml.Linq 사용; ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // 스크립트에서 이 웹 서비스를 호출하려면 // ASP.NET AJAX를 사용하여 주석 처리를 제거합니다. 다음 줄. // [System.Web.Script.Services.ScriptService] public class StockService : System.Web.Services.WebService { public StockService () { //설계된 구성 요소를 사용하는 경우 다음 주석 처리를 취소하십시오. //InitializeComponent() } string[,] 주식 = { {"RELIND", "Reliance Industries", "1060.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(string Symbol) { //기호를 매개변수로 사용하고 (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return Convert.ToDouble(stocks[i)에 대한 가격을 반환합니다. , 2]); } return 0; } [WebMethod] public string GetName(string Symbol) { // 기호를 매개변수로 사용하고 // 주식 이름을 반환합니다. for (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return stocks[i, 1] } return "주식 없음";
단계 (7) : 웹 서비스 애플리케이션을 실행하면 서비스 방법을 테스트할 수 있는 웹 서비스 테스트 페이지가 제공됩니다.
(8)단계 : 메소드 이름을 클릭하여 올바르게 실행되는지 확인합니다.
9단계 : GetName 메소드를 감지하려면 정의된 주식 태그 중 하나를 제공하십시오. 올바른 경우 해당 주식의 이름이 반환됩니다.
이 웹 서비스를 사용하려면 동일한 솔루션(Solution) 아래에 웹사이트를 생성해야 하는데, 솔루션 관리자에서 솔루션 이름을 마우스 오른쪽 버튼으로 클릭하면 됩니다. 제어 버튼(하나는 복귀용이고 다른 하나는 서비스 호출 시작용)입니다.
웹 애플리케이션의 파일 내용은 다음과 같습니다.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// EN" "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="포스트백" /> <asp:Button ID="btnservice" runat="server" onclick="btnservice_Click" Text="Get 재고" /> </div> </form> </body> </html>
웹 애플리케이션의 코드는 다음과 같습니다.
System.Collections 사용, System.Linq 사용, System.Web.UI.HtmlControls 사용 ; System.Web.UI.WebControls 사용; System.Xml.Linq 사용; //이것은 localhost 네임스페이스를 사용하는 것입니다. { 공개 부분 클래스 _Default : System.Web.UI.Page { protected void Page_Load(객체 전송자, EventArgs e) { if (!IsPostBack) { lblmessage.Text = "첫 번째 로드 시간: " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "포스트백 위치: " + DateTime.Now.ToLongTimeString() } } protected void btnservice_Click(개체 발신자, EventArgs e) { StockService 프록시 = new StockService(); lblmessage.Text = String.Format("현재 SATYAM 가격:{0}", Proxy.GetPrice("SATYAM").ToString()); } }
프록시 서버는 웹 서비스 코드를 대체하는 서버를 의미합니다. 웹 서비스를 사용하기 전에 프록시 서버를 생성해야 합니다. 이 프록시 서버는 클라이언트 애플리케이션에 의해 등록됩니다. 그런 다음 클라이언트 애플리케이션은 마치 기본 메서드를 사용하는 것처럼 웹 서비스에 대한 호출을 구현합니다.
프록시 서버는 호출을 수행하고 SOAP 요청으로 적절한 형식으로 서버에 호출을 보냅니다. SOAP는 단순 개체 액세스 프로토콜을 지원합니다. 이 프로토콜은 웹 서비스 데이터 교환에 적합합니다.
서버가 응답하여 SOAP 패킷을 클라이언트에 반환하면 프록시 서버는 모든 것을 클라이언트 애플리케이션에 제공합니다.
btnservice_click을 사용하여 웹 서비스를 호출하기 전에 웹 애플리케이션을 애플리케이션에 추가해야 합니다. 그러면 btnservice_click 이벤트에서 사용할 수 있는 프록시 클래스가 투명하게 생성됩니다.
protected void btnservice_Click(개체 발신자, EventArgs e) { StockService 프록시 = new StockService(); lblmessage.Text = String.Format("현재 SATYAM 가격: {0}", proxy.GetPrice("SATYAM").ToString()) ;
프록시를 만들려면 다음 단계를 따르세요.
1단계 : 솔루션 탐색기에서 웹 애플리케이션 항목을 마우스 오른쪽 버튼으로 클릭하고 '웹 참조 추가'를 선택합니다.
2단계 : '이 솔루션의 웹 서비스'를 선택하면 우리가 작성한 스톡 서비스 참조가 반환됩니다.
단계 (3) : 서비스를 클릭하여 테스트 페이지를 엽니다. 프록시를 생성할 때 기본값은 'localhost'입니다. 물론 이름을 바꿀 수도 있습니다. 클라이언트 애플리케이션에 프록시를 추가하려면 '참조 추가'를 클릭하세요.
에이전트를 포함하려면 코드에 다음 문을 추가하세요.
로컬호스트 사용;