這次我是在基礎系統中,考試系統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方法的注釋。