这次我是在基础系统中,考试系统3.0、评教系统和选课都是直接连接我们基础系统的数据库,这次我们想优化数据库,可是无论我们改变什么,都得和他们好几个子系统交流,看看是否对他们有影响,很是麻烦,所以这次决定我们做一个接口,让他们调用接口访问数据,不让直接访问我们的数据,这样我们再改变什么都和他们没有关系了。webservice就能解决这个问题,我们创建一个webservice,其他系统如果要我们数据,直接调我们的webservice就行,如果我们有什么改变,他们直接更新就OK。
创建webservice
1、在自己的网站里添加一个web服务
2、他会默认有一个helloword实例,注释掉他,写要提供的接口。和平时写方法一样,只是在前面加上[WebMethod]。这里我添加了一个“查询信息”的接口,代码如下:
namespace ceshi1
{
/// <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(Description = "求和的方法")] //webservice方法描述的信息
//public double Add(double i, double j)
//{
// return i + j;
//}
/// <summary>
/// 数据库连接对象
/// </summary>
private SqlConnection sqlConn = null;
/// <summary>
/// 数据库命令(SqlCommand)
/// </summary>
private SqlCommand sqlCmd = null;
#region 连接数据库的方法,如果数据库状态为关闭,打开数据库
/// <summary>
/// 连接数据库的方法,如果数据库状态为关闭,打开数据库
/// </summary>
public SqlConnection GetConn()
{
if (sqlConn.State == ConnectionState.Closed)
{
//如果数据库状态为关闭,打开数据库
sqlConn.Open();
}
return sqlConn;
}
#endregion
[WebMethod(Description = "查询信息")]
public DataSet Select()
{
//定义一个字符串,存放从配置文件读取连接数据库的方式。
string strConn = ConfigurationManager.ConnectionStrings["strConnDB"].ConnectionString;
//实例化数据库连接对象
sqlConn = new SqlConnection(strConn);
sqlCmd = new SqlCommand("select * from SetData", GetConn());
SqlDataReader sdr = null;
DataTable dtResult = new DataTable();
using (sdr = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dtResult.Load(sdr);
//关闭记录集
sdr.Close();
}
//将datatable填充到dataset里.因为datatable不支持序列化
DataSet ds=new DataSet();
ds.Tables.Add(dtResult);
return ds;
}
}
}
3、发布这个网站后,能在浏览器里打开这个服务,发布前浏览器查看界面如下:
总结:
值得注意注意的是:WebMethod的Description最好记得写了,他是webservice方法描述的信息。写了之后调用者就能更清楚的值得你这个方法的作用,Description就是webservice方法的注释。