Un servicio web es una función basada en red que las aplicaciones web pueden obtener a través de protocolos de red web. El desarrollo de servicios web incluye principalmente los siguientes tres aspectos:
Crear servicio web
Crear servidor proxy
Utilice servicios web
Un servicio web es una aplicación web. Su forma básica es una clase que contiene múltiples métodos que pueden ser llamados por otras aplicaciones. También utiliza una estructura de código oculta, como una página web ASP.NET, pero no tiene una interfaz de usuario.
Para comprender mejor este concepto, creemos un servicio web que proporcione información sobre el precio de las acciones. Los clientes del servicio pueden buscar nombres y precios relacionados a través de la etiqueta de una acción. Para simplificar este ejemplo, establecemos el precio de las acciones en un valor fijo y lo guardamos en una lista bidimensional. Este servicio web contiene tres métodos:
Un método predeterminado de HelloWorld
Un método GetName
Un método GetPrice
Realice los siguientes pasos para crear el servicio:
Paso (1) : seleccione Archivo -> Nuevo -> Sitio web en Visual Studio y luego seleccione Servicio web ASP.NET.
Paso (2) : un archivo de servicio web llamado Service.asmx y su código están ocultos, y se creará Service.cs en la ruta App_Code de este proyecto.
Paso (3) : cambie los nombres de los archivos a StockService.asmx y StockService.cs.
Paso (4) : el archivo .asmx simplifica una instrucción de servicio web de la siguiente manera:
<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" %>
Paso (5) : abra el archivo StockService.cs. El código generado en este archivo es el código básico del servicio Hello World. El código de servicio web predeterminado es el siguiente:
usando System.Collections; usando System.Web.Services; usando System.Web.Services.Protocols; ; espacio de nombres StockService { // <resumen> // Descripción resumida del Servicio1 // <resumen> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // Para permitir que este servicio web se llame desde un script, // usando ASP.NET AJAX, descomente la siguiente línea // [System.Web.Script.Services.ScriptService] clase pública Servicio1: System.Web.Services.WebService { [Método Web] cadena pública HolaMundo() { return "Hola Mundo";
Paso (6) : Modifique el código en el archivo para agregar un puntero bidimensional que almacene la cadena de la etiqueta, el nombre y el precio de cada acción, y escriba dos métodos web para obtener información sobre las acciones de la siguiente manera;
usando System; usando System.Web; usando System.Web.Services; usando System.Web.Services.Protocols; usando System.Xml.Linq; ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // Para permitir que este servicio web se llame desde un script, // usando ASP.NET AJAX, descomente el comentario la siguiente línea. // [System.Web.Script.Services.ScriptService] public class StockService: System.Web.Services.WebService { public StockService () { //Descomenta lo siguiente si utilizas componentes diseñados //InitializeComponent(); cadena[,] acciones = { {"RELIND", "Reliance Industries", "1060.15"}, {"ICICI", "ICICI Bank", "911.55"}, {"JSW", "JSW Steel", "1201.25"}, {"WIPRO", "Wipro Limited", "1194.65"}, {"SATYAM", "Satyam Computers", "91.10"} }; string HolaMundo() { return "Hola Mundo" } [WebMethod] public double GetPrice(símbolo de cadena) { //toma el símbolo como parámetro y devuelve el precio de (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 símbolo) { // Toma el símbolo como parámetro y // devuelve el nombre de la acción para (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return stocks[i, 1] } return "Stock no encontrado";
Paso (7) : Al ejecutar la aplicación de servicio web, aparece una página de prueba del servicio web donde podemos probar los métodos del servicio.
Paso (8) : haga clic en el nombre de un método para confirmar si se está ejecutando correctamente.
Paso (9) : para detectar el método GetName, proporcione una de las etiquetas de acciones definidas. Si es correcta, se devolverá el nombre de la acción relevante.
Para utilizar este servicio web, creamos un sitio web bajo la misma solución (Solución). Simplemente haga clic derecho en el nombre de la solución en el administrador de soluciones. La página web llamada por el servicio web debe tener una administración de control para mostrar el resultado devuelto y dos. Botones de control, uno para regresar y otro para iniciar la llamada al servicio.
El contenido del archivo de la aplicación web es el siguiente:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transicional// ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> Página sin título </title> </head> <body> <form id="form1 " runat="server"> <div> <h3>Uso del servicio Stock</h3> <br /> <br /> <asp:Label ID="lblmessage" runat="server"></asp:Label> <br /> <br /> <asp:Button ID="btnpostback" runat="server" onclick="Button1_Click" Text="Volver a publicar" /> <asp:Button ID="btnservice" runat="server" onclick="btnservice_Click" Text="Obtener Valores" /> </div> </form> </body> </html>
El código de la aplicación web es el siguiente:
usando System.Collections; usando System.Configuration; usando System.Web.UI.HtmlControls; ; usando System.Web.UI.WebControls; usando System.Web.UI.WebControls.WebParts; usando System.Xml.Linq; // este es el proxy que usa el espacio de nombres wsclient; {clase parcial pública _Default: System.Web.UI.Page {protegido void Page_Load(objeto remitente, EventArgs e) { if (!IsPostBack) { lblmessage.Text = "Primera hora de carga: " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "PostBack en: " + DateTime.Now.ToLongTimeString(); btnservice_Click(remitente del objeto, EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("Precio actual de SATYAM:{0}", proxy.GetPrice("SATYAM").ToString() } } }
Un servidor proxy se refiere a un reemplazo del código de servicio web. Antes de utilizar el servicio web, debemos crear un servidor proxy. Este servidor proxy está registrado por la aplicación cliente. Luego, la aplicación cliente implementa la llamada al servicio web como si estuviera usando un método nativo.
El servidor proxy realizará la llamada y la enviará al servidor en el formato apropiado como una solicitud SOAP. SOAP admite el protocolo simple de acceso a objetos. Este protocolo es adecuado para el intercambio de datos de servicios web.
Cuando el servidor responde y devuelve un paquete SOAP al cliente, el servidor proxy presenta todo a la aplicación cliente.
Antes de llamar al servicio web usando btnservice_click, la aplicación web debe agregarse a la aplicación. Esto creará de forma transparente una clase de proxy que puede ser utilizada por el evento btnservice_click.
protected void btnservice_Click(remitente del objeto, EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("Precio actual de SATYAM: {0}", proxy.GetPrice("SATYAM").ToString()) ; }
Realice los siguientes pasos para crear un proxy:
Paso (1) : haga clic derecho en la entrada de la aplicación web en el Explorador de soluciones y seleccione "Agregar referencia web".
Paso (2) : seleccione 'Servicios web en esta solución' y se devolverá la referencia del servicio de stock que escribimos.
Paso (3) : Haga clic en el servicio para abrir la página de prueba. Al crear el proxy, el valor predeterminado es 'localhost'. Por supuesto, también puede cambiarle el nombre. Haga clic en 'Agregar referencia' para agregar un proxy a la aplicación cliente.
Agregue la siguiente declaración a su código para incluir al agente:
usando localhost;