ASP WebService(跨平台跨机器交换数据)

本文介绍了如何使用ASP.NET创建和引用WebService,实现跨平台、跨机器的数据交换。通过新建WebService.asmx文件并添加服务引用,实现不同应用程序间的函数调用。讲解了SOA(面向服务架构)的概念,以及它如何促进业务层和表现层的分布式部署,通过服务层进行通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WebService,可以允许其他平台其他应用程序的程序调用.net下的函数。

新建WebService.asmx:  项目文件--右击--Web--Web服务。

引用WebService: 项目文件中--引用--右击--添加服务引用--(http://127.0.0.1:3839/WebService1.asmx)[发现(解决方案)]--确定。

SOA:面向服务。  表现层--服务层(面向服务,一个应用程序只提供服务,另一个程序(表现层)调用服务)--业务层--会话层--数据层。 实现业务层和表现层的分布式部署(中间通过服务连接通信)。

WebService1.asmx.cs(服务提供端):

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace MyWeb.WebApp
{
    /// <summary>
    /// WebService1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]   //特性标签,表示可以被其他平台其他应用程序调用该函数。
        public string HelloWorld()
        {
            return "Hello World";
        }
         [WebMethod]
        public int Add(int a, int b)
        {
            return a + b;
        }
        [WebMethod]
         public string LoadUserInfoList()
         {
             IBLL.IUserInfoService UserInfoService = new BLL.UserInfoService();
             List<Model.UserInfo> list = UserInfoService.LoadEntities(u => true).ToList();  //不能直接返回List<Model.UserInfo>类型,需要序列化成String类型。
             return JsonConvert.SerializeObject(list);   //序列化成String类型(Json字符串)。
             //SOA:面向服务。  表现层--服务层(面向服务,一个应用程序只提供服务,另一个程序(表现层)调用服务)--业务层--会话层--数据层
         }
    }
}
Index.aspx.cs(服务调用者):
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MyWeb.WebAppClient
{
    public partial class Index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient();  //SoapClient(客户端)表示调用者。调用服务端的函数。ServiceReference1是引用服务时,写的命名空间。WebService1是外部服务的名称。
            //int sum= client.Add(3, 6);  //Add是服务端(外部)的函数。
            //Response.Write(client.LoadUserInfoList());

            //调用外部服务,调用天气服务(有的方法收费)
            ServiceReference2.WeatherWSSoapClient client = new ServiceReference2.WeatherWSSoapClient();  //ServiceReference2是添加引用服务时,定义的命名空间。
            DataSet ds = client.getRegionDataset();  //调用天气服务的getRegionDataset()方法。
            this.GridView1.DataSource = ds.Tables[0];
            this.GridView1.DataBind();
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值