用C#创建和调用webservice实现不同网站间的消息传递(一)

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


  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 34
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值