作者:孟宪会 出自:【孟宪会之精彩世界】
简介
.net最强大的一个方面之一就是可以利用它创建web服务。一个web服务就是一个网站所提供的供其它网站调用的外部接口。举个例子来说,某个金融公司可以为与它的贸易伙伴通过web服务提供详细的股票报价,这些信息可以是通过web页面进行读取和显示的,也可以是从客户的桌面电脑的应用程序里读取的。
本文就对web服务的其中两个方面进行说明:一是如何创建web服务;二是如何使用web服务。作为例子,我们以来自aspfaqs.com(http://www.aspfaqs.com/aspfaqs/)的FAQS(常见问题解答)的Web服务来解释如何创建一个Web服务。
创建web服务
在你创建一个web服务之前,你首先必须问问自己:“我要向我的用户提供什么服务?”。本文的目标就是创建这样一个web服务:让其它的用户在他们自己的网站上显示来自aspfaqs.com的常见问题解答(faqs)的列表。比较理想的功能是限制其他的网站只能够查看faqs分类和按分类排列的faqs,如果你想查看一个问题的答案,就让用户去访问提供服务的网站http://www.aspfaqs.com。本文例子的Web服务最终向其他网站提供如下的功能:
1,浏览所有faq分类的列表
2,浏览某一分类里的所有FAQS。
3,浏览某一个FAQ的问题,但不包含答案。
创建一个Web服务是很简单的,首先创建一个.asmx文件(你可以用Visual Studio .NET或你自己喜欢的任何文本编辑器,推荐使用Web Matrix,它有创建Web服务的模板),Web服务作为一个普通的类进行创建,在方法的前面有一个宏,表明这个方法是通过Web服务来访问的。
就aspfaqs.com的web服务来说,首先创建三个通过web服务访问的方法,getcategories, GetFAQsInCategory和GetFAQ,分别实现上面提出的任务1,2,3。并创建一个私有方法GetDataSet,按传递过来的SQL查询组装成一个DataSet。下面就是实现的代码:
<%@ WebService Language="VB" Class="ASPFAQs" %>
Imports System.Web.Services
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Public Class ASPFAQs
' 创建私有功能方法GetDataSet
Private Function GetDataSet(strSQL as String) as DataSet
'1. 创建一个SqlConnection连接对象
Dim myConnection as New SqlConnection(ConnectionString)
'2. 创建COMMAND对象,传入SQL参数
Dim myCommand as New SqlCommand(strSQL, myConnection)
myConnection.Open()
'3. 创建DataAdapter对象
Dim myDataAdapter as New SqlDataAdapter()
myDataAdapter.SelectCommand = myCommand
'4. 生成DataSet并关闭连接
Dim myDataSet as New DataSet()
myDataAdapter.Fill(myDataSet)
myConnection.Close()
'返回DataSet
Return myDataSet
End Function
' 创建实现实现三个任务的方法
<WebMethod()> Public Function GetCategories() as DataSet
Return GetDataSet(SQL Query) '这里的参数SQL用来得到所有FAQ分类
End Function
<WebMethod()> Public Function GetFAQsInCategory(catID as Integer) as DataSet
Return GetDataSet(SQL Query) '这里的参数SQL用来得到某分类(catID)的所有FAQ
End Function
<WebMethod()> Public Function GetFAQ(FAQID as Integer) as DataSet
Return GetDataSet(SQL Query) '这里的参数SQL用来得到某FAQ(FAQID)的信息
End Function
End Class