<marquee width=358>欢迎来到月影社区,希望这里可以成为您美丽的梦幻花园,如果你觉得这里好请分享给您的朋友!- wf66.com</marquee> 将月影社区设置为您的首页将月影社区地址加入到您的收藏栏
月影社区时尚音乐音乐查询IP手机许愿之瓶最新更新文件加密访客留言爱音乐
欢迎您,首页 >> 信息中心 >> 一个简单的Web Service案例

请输入您关键字:


一个简单的Web Service案例

推荐查看本文HTML版本

在这个例子中,我们将定义一个mathservice类,来对两个数字分别进行加,减,乘,除。当然这个类需要从基类web service中继承。请先看该程序的源代码:
源文件:webservice\math.asmx

<%@ WebService Language="VB" Class="MathService" %>
Imports System[月影社区 http://wf66.com/]
Imports System.Web.Services
Public Class MathService : Inherits WebService[月影读书频道 http://wf66.com/]
   Public Function <WebMethod()> Add(A As Integer, B As Integer) As Integer
       Return A + B
   End Function
   Public Function <WebMethod()> Subtract(A As Integer, B As Integer) As Integer

       Return A - B
   End Function
   Public Function <WebMethod()> Multiply(A As Integer, B As Integer) As Integer
       Return A * B
   End Function
   Public Function <WebMethod()> Divide(A As Integer, B As Integer) As Integer
       If B = 0
          Return -1
       End If
       Return CInt(A / B)
   End Function


我们还是举“加”,“减”,“乘”,“除”的例子。

我们先创建一个文件用于客户端的用户浏览:
<%@ Import Namespace="MathServiceSpace" %>
<html>
<script language="VB" runat="server">
  Dim Op1 As Integer = 0
  Dim Op2 As Integer = 0
  Public Sub Submit_Click(Sender As Object, E As EventArgs)
      Try
        Op1 = Int32.Parse(Operand1.Text)
        Op2 = Int32.Parse(Operand2.Text)
      Catch Exp As Exception
          ' Ignored
      End Try

      Dim Service As MathService = New MathService()
      Select (CType(sender,Control).ID)
        Case "Add" :
            Result.Text = "<b>Result</b> = " & Service.Add(Op1, Op2).ToString()
        Case "Subtract" :
            Result.Text = "<b>Result</b> = " & Service.Subtract(Op1, Op2).ToString()
        Case "Multiply" :
            Result.Text = "<b>Result</b> = " & Service.Multiply(Op1, Op2).ToString()
        Case "Divide" :
            Result.Text = "<b>Result</b> = " & Service.Divide(Op1, Op2).ToString()
      End Select
  End Sub
</script>
<body style="font: 10pt verdana">
  <h4>Using a Simple Math Service </h4>
  <form runat="server"> 
  <div style="padding:15,15,15,15;background-color:beige;width:300;border-color:black;border-width:1;border-style:solid">
    Operand 1: <br><asp:TextBox id="Operand1" Text="15" runat="server"/><br>
    Operand 2: <br><asp:TextBox id="Operand2" Text="5" runat="server"/><p>
    <input type="submit" id="Add" value="Add" OnServerClick="Submit_Click" runat="server">
    <input type="submit" id="Subtract" value="Subtract" OnServerClick="Submit_Click" runat="server">
    <input type="submit" id="Multiply" value="Multiply" OnServerClick="Submit_Click" runat="server">
    <input type="submit" id="Divide" value="Divide" OnServerClick="Submit_Click" runat="server">
    <p>
    <asp:Label id="Result" runat="server"/>
  </div>
  </form>
</body>
</html>
我们还需要一个sdl文件,当然这个文件不用手工输入,我们在浏览一个.asmx的时候,在后缀名后直接加上?sdl可以自动生成sdl文件。
然后我们在一个.vb文件里,将定义一个名字空间,.vb文件的内容:
Imports System.Xml.Serialization
Imports System.Web.Services.Protocols
Imports System.Web.Services

Namespace MathServiceSpace
    Public Class  MathService
        Inherits System.Web.Services.Protocols.SoapClientProtocol
       
        Public Sub New()
            MyBase.New
            Me.Url = "http://localhost/QuickStart/aspplus/samples/services/MathService/VB/MathService.a"& _
"smx"
        End Sub
       Public Function <System.Web.Services.Protocols.SoapMethodAttribute("http://tempuri.org/Add")> Add(ByVal <System.Xml.Serialization.XmlElementAttribute("A", IsNullable:=false)> a As Integer, ByVal <System.Xml.Serialization.XmlElementAttribute("B", IsNullable:=false)> b As Integer) As Integer
            Dim results() As Object = Me.Invoke("Add", New Object() {a, b})
            Return CType(results(0),Integer)
        End Function
        Public Function BeginAdd(ByVal a As Integer, ByVal b As Integer, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
            Return Me.BeginInvoke("Add", New Object() {a, b}, callback, asyncState)
        End Function
        Public Function EndAdd(ByVal asyncResult As System.IAsyncResult) As Integer
            Dim results() As Object = Me.EndInvoke(asyncResult)
            Return CType(results(0),Integer)
        End Function
        Public Function <System.Web.Services.Protocols.SoapMethodAttribute("http://tempuri.org/Subtract")> Subtract(ByVal <System.Xml.Serialization.XmlElementAttribute("A", IsNullable:=false)> a As Integer, ByVal <System.Xml.Serialization.XmlElementAttribute("B", IsNullable:=false)> b As Integer) As Integer
            Dim results() As Object = Me.Invoke("Subtract", New Object() {a, b})
            Return CType(results(0),Integer)
        End Function
        Public Function BeginSubtract(ByVal a As Integer, ByVal b As Integer, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
            Return Me.BeginInvoke("Subtract", New Object() {a, b}, callback, asyncState)
        End Function
        Public Function EndSubtract(ByVal asyncResult As System.IAsyncResult) As Integer
            Dim results() As Object = Me.EndInvoke(asyncResult)
            Return CType(results(0),Integer)
        End Function
        Public Function <System.Web.Services.Protocols.SoapMethodAttribute("http://tempuri.org/Multiply")> Multiply(ByVal <System.Xml.Serialization.XmlElementAttribute("A", IsNullable:=false)> a As Integer, ByVal <System.Xml.Serialization.XmlElementAttribute("B", IsNullable:=false)> b As Integer) As Integer
            Dim results() As Object = Me.Invoke("Multiply", New Object() {a, b})
            Return CType(results(0),Integer)
        End Function
        Public Function BeginMultiply(ByVal a As Integer, ByVal b As Integer, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
            Return Me.BeginInvoke("Multiply", New Object() {a, b}, callback, asyncState)
        End Function
        Public Function EndMultiply(ByVal asyncResult As System.IAsyncResult) As Integer
            Dim results() As Object = Me.EndInvoke(asyncResult)
            Return CType(results(0),Integer)
        End Function
        Public Function <System.Web.Services.Protocols.SoapMethodAttribute("http://tempuri.org/Divide")> Divide(ByVal <System.Xml.Serialization.XmlElementAttribute("A", IsNullable:=false)> a As Integer, ByVal <System.Xml.Serialization.XmlElementAttribute("B", IsNullable:=false)> b As Integer) As Integer
            Dim results() As Object = Me.Invoke("Divide", New Object() {a, b})
            Return CType(results(0),Integer)
        End Function
        Public Function BeginDivide(ByVal a As Integer, ByVal b As Integer, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
            Return Me.BeginInvoke("Divide", New Object() {a, b}, callback, asyncState)
        End Function
        Public Function EndDivide(ByVal asyncResult As System.IAsyncResult) As Integer
            Dim results() As Object = Me.EndInvoke(asyncResult)
            Return CType(results(0),Integer)
        End Function
       
    End Class
End Namespace
有了这四个文件,我们可以编辑一个批处理文件,执行如下的语句:
    webserviceutil -c:proxy /pa:MathService.sdl /l:VB /n:MathServiceSpace
这样,我们就可以在客户端执行了。

5.2.1 小结
在这一章中,我们以提供计算加、减、乘、除的网络应用为例,详细的介绍了如何建立起一个完整的web service服务的步骤和注意事项,虽然这个例子和实际使用的应用环境有较大的差异,但基本方法应该是一致的。
第三章 数据交换[月影社区 http://wf66.com/]
 我们的这个例子说明了DataSet-----一个基于XML技术的强大的数据分离技术,能够用Web Service方法返回。DataSet能够在一个智能化的结构中存储复杂的信息和关系,这是Web Service的一个非常有用的方法。
 
 通过DataSets的显示,你能够限制通过连接你的数据库服务器的测试。
 
 GetTitleAuthors方法连接一个数据库并且运行两个SQL语句,第一个返回颜色的列表,另外一个返回字体大小的列表。方法把两个结果用一个DataSet来存储,并返回一个DataSet。
 
 PutTitleAuthors说明一个Web Service方法把DataSet当作一个参数并返回一个整数,这个整数就是在DataSet中的“Table“表的行数。虽然这个方法执行起来有点简单,但是这个方法也能够与数据库服务器把过剩的数据聪明的合并在一起。
 
 我们来看看这个例子,首先:
 
 <%@ WebService Language="VB" Class="DataService" %>
 
这句话应该包括。我们还要引入这个名字空间:
 
 Imports System.Web.Services
 
第一我们两个方法,Getcolor():
 
    Public Function <WebMethod()> Getcolor() As DataSet
        Dim MyConnection As SQLConnection = New
SQLConnection("server=localhost;uid=sa;pwd=;database=howff")
        Dim MyCommand1 As SQLDataSetCommand = New
SQLDataSetCommand("select * from color", MyConnection)
        Dim MyCommand2 As SQLDataSetCommand = New
SQLDataSetCommand("select * from size", MyConnection)
  '数据的填充
        Dim DS As New DataSet
        MyCommand1.FillDataSet(DS, "color")
        MyCommand2.FillDataSet(DS, "size")
        Return DS
   End Function
 
Putcolor()方法:
 Public Function <WebMethod()> Putcolor(DS As DataSet) As Integer
        '返回行数 
        Return DS.Tables(0).Rows.Count
   End Function

文件保存为webservice.asmx,放在虚拟目录下,具体代码如下:
源文件:webservice\webservice.asmx

<%@ WebService Language="VB" Class="DataService" %>

Imports System
Imports System.Data
Imports System.Data.SQL

'引入System.Web.Services名字空间
Imports System.Web.Services

Public Class DataService

   Public Function <WebMethod()> Getcolor() As DataSet
 '创建数据库连接和命令集
        Dim MyConnection As SQLConnection = New
SQLConnection("server=localhost;uid=sa;pwd=;database=howff")
        Dim MyCommand1 As SQLDataSetCommand = New
SQLDataSetCommand("select * from color", MyConnection)
        Dim MyCommand2 As SQLDataSetCommand = New
SQLDataSetCommand("select * from size", MyConnection)
 '数据的填充
        Dim DS As New DataSet
        MyCommand1.FillDataSet(DS, "color")
        MyCommand2.FillDataSet(DS, "size")
        Return DS
   End Function
   '
   Public Function <WebMethod()> Putcolor(DS As DataSet) As Integer
        '返回行数 
        Return DS.Tables(0).Rows.Count
   End Function

End Class


一个简单的Web Service案例 2006-9-20
转到本主题第:[ 1 ]
相关评论

暂无评论

总计0页 [ ]上一页 下一页
发表评论(揪错)
呢称: * 您尚未登陆,请登录
来自: *
内容:
 

(为防止非法信息,您的言论提交后需要审核才能正常显示)

文学
精品文萃 情感天地 言情小说
网络小说 玄幻小说 悬疑恐怖
武侠小说 古典品谈 外国名著
儿童文学 会员原创 学习园地
杂谈其它
娱乐
爆笑网文 星座占卜 影音动漫
娱乐新闻 影视剧情
诗词
青竹诗歌 个人诗集 宋词雅赏
全唐诗录
新闻
国际新闻 国内新闻 科技新闻
体育新闻
图片
图文专区 艺术长廊 桌面壁纸
精品素材 像素图片
漫画
单幅漫画 爆笑四格 连环漫画
电脑
电脑入门 图形图像 编程开发
游戏
我爱Q宠 最新攻略 最新秘籍
游戏新闻 技巧心得
经济
帕格节电 财经资讯 股市证券
生活
百科知识 外语学院 潮流时尚
健康医疗 宠物花卉 汽车地带
行走天下
美食
面食甜点 家常菜品 药膳食疗
美食天下 烹饪技巧 松辽风味
燕京风味 巴蜀风味 滇黔风味
赣江风味 徽皖风味 闽台风味
齐鲁风味 中州风味 岭南风味
荆楚风味 三晋风味 淞沪风味
苏扬风味 潇湘风味 钱塘风味
民族风味 素斋仿荤
营销
管理杂谈 谈经论道 培训激励
经营战略 职场生涯 公关交际
关于我们版权声明本站导航友情连结作品演示 TOP↑
本论坛言论纯属发表者个人意见,与£月影社区£立场无关。 皖ICP备16024038号-1
禁止发布任何色情/政治/反动相关信息让我们共同来营造一个属于我们的梦幻家园
Copyright ©2001-2006 MoonShadow. All rights reserved.  Version 4.0  Licence 2006.4.2
建站天数:7186天 本站基于ASP+JS构建,完全自主开发,版权归属月影社区 管理员QQ:23165062 Time:62ms