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();
}
}
}