14.7 自定义Web Service

  在创建Web Service应用程序后,系统会自动创建Web Service应用程序并生成相关代码,通过修改自动生成的代码,能够快速创建和自定义Web Service应用程序,自定义Web Service应用程序能够让不同的应用程序引用Web Service提供的框架进行逻辑编程。

14.7.1 创建自定义的Web Service
  通过创建自定义Web Service能够进行应用程序开发,Web Service同样支持带参数传递的方法,并能够在Web Service中进行数据查询等操作,保证了代码的安全性。创建一个Web Service,并编写相应的查询方法,示例代码如下所示。
+展开
-C#
        [WebMethod]
        public string Search(string title)
        {
            try
            {
                SqlConnection 
                con = new SqlConnection("server='(local)';database='mytable';uid='sa';pwd='sa'");
                con.Open();//打开数据库连接
                string strsql = "select * from mynews where title like '%" + title + "%'";//查询语句
                SqlDataAdapter da = new SqlDataAdapter(strsql, con);//创建适配器
                DataSet ds = new DataSet();//创建数据集
                int i = da.Fill(ds, "mytable");//填充数据集
                string result = "";//初始化空字符串
                for (int j = 0; j < i; j++)//遍历循环数据集
                {
                    result += ds.Tables["mytable"].Rows[j]["title"].ToString() + "\n";//输出结果,生成字符串
                }
                return result;//返回结果
            }
            catch
            {
                string result = "没有任何结果";
                return result;
            }
        }

  上述代码通过创建了一个Web Service方法进行新闻查询,通过新闻的标题title字段查询数据库中索引类似信息,运行Web Service应用程序后,其界面如图14-16所示。
自定义Web Service应用程序
图14-16 自定义Web Service应用程序
  单击Search按钮进行Web Service应用程序测试,对于需要传递参数的方法,测试过程中可以输入方法进行测试,如图14-17所示。
输入参数
图14-17 输入参数
  在文本框中输入title,单击【调用】按钮,则会向方法中传递参数并执行方法,执行方法后将会返回string类型的值,如图14-18所示。
查询结果
图14-18 查询结果
  在使用Web Service应用程序返回数据集时,可以直接返回DataSet对象,Web Service应用程序执行后将会将DataSet对象转换为XML格式并返回XML格式的执行结果,Search代码更改如下所示。
+展开
-C#
       [WebMethod]
        public DataSet Search(string title)
        {
            SqlConnection con = new SqlConnection("server='(local)';database='mytable';uid='sa';pwd='sa'");
            con.Open(); //打开数据连接
            string strsql = "select * from mynews where title like '%" + title + "%'";
            SqlDataAdapter da = new SqlDataAdapter(strsql, con);
            DataSet ds = new DataSet();
            int i = da.Fill(ds, "mytable");
            return ds;
        }

  上述代码查询后直接返回ds记录集,当输入查询字串“t”后,运行结果如图14-19所示。
返回DataSet记录集
图14-19 返回DataSet记录集

14.7.2 使用自定义的Web Service
  当Web应用程序需要使用Web Service应用程序并调用其方法时,只需要添加服务引用即可。右击Web应用程序,选择【添加服务引用】选项,在弹出的添加服务引用窗口中单击【发现】按钮查找服务,如图14-20所示。
选择相应的服务引用后并更改命名空间,再单击【确定】按钮确认添加,则服务引用添加成功,在解决方案管理器中则会出现相应的服务引用,如图14-21所示。
添加服务引用
图14-20 添加服务引用
服务引用添加完成
图14-21 服务引用添加完成
  添加了服务引用之后,可以通过Web窗体使用和调用Web Service应用程序中的方法,Web窗体中HTML代码如下所示。
+展开
-HTML
<body>
    <form id="form1" runat="server">
    <div>   
        Search :
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="开始搜索" onclick="Button1_Click"/>
        <br >
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>   
    </div>
    </form>
</body>

 创建了Web应用后则需要为按钮单击事件编写代码,示例代码如下所示。
+展开
-C#
        protected void Button1_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1SoapClient 
            cs = new MyWeb.ServiceReference1.Service1SoapClient();//使用服务引用
            DataSet ds = new DataSet();//创建数据集
            ds=cs.Search(TextBox1.Text);//执行Web Service方法
            GridView1.DataSource = ds.Tables[0].DefaultView;//绑定控件
            GridView1.DataBind(); //填充数据
        }

  上述代码使用了服务引用,通过服务引用进行方法的实现,运行后如图14-22和图14-23所示。
使用服务引用
图14-22 使用服务引用
执行搜索
图14-23 执行搜索
  通过使用Web Service应用程序,从本地代码来看,隐藏了对数据的连接字串和查询操作代码,从应用程序角度来看,Web Service应用程序保证了应用程序的封闭性和安全性。

加支付宝好友偷能量挖...


评论(0)网络
阅读(108)喜欢(0)Asp.Net/C#/WCF