用C#建立和調用webservice實現不同網站間的訊息傳遞(一)

來源:互聯網
上載者:User

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


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.