这次我是在基础系统中,考试系统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方法的注释。