正文
vb.netweb例子 vbnet web编程
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
vbnet 用webrequest post/get 发送获取消息的例子
httpwebrequest和webrequest差不多。
Public Sub MakeSearch()
Try
Dim Http As Net.HttpWebRequest
Http = DirectCast(System.Net.HttpWebRequest.Create(“网络地址vb.netweb例子?get参数”), Net.HttpWebRequest)
Http.Method = "GET"
Http.KeepAlive = True
Using Rev As New IO.StreamReader(Http.GetResponse.GetResponseStream, System.Text.Encoding.Default)
MakeSearchHtml = Rev.ReadToEnd
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Sub ShowResult()
Try
Dim Http As Net.HttpWebRequest
Http = DirectCast(System.Net.HttpWebRequest.Create(“post服务器地址”), Net.HttpWebRequest)
Http.Method = "POST"
Http.ContentType = "application/x-www-form-urlencoded"
Http.KeepAlive = True
Using Send As New IO.StreamWriter(Http.GetRequestStream, System.Text.Encoding.Default)
Send.Write(CommandLine)'跟服务器通讯vb.netweb例子的命令。
Send.Flush()
End Using
Using Rev As New IO.StreamReader(Http.GetResponse.GetResponseStream, System.Text.Encoding.Default)
ShowResultHtml = Rev.ReadToEnd‘返回结果。
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
如何写一个简单的Web Service
在开始下面这个例子之前,你的系统需要:
1、WIN2000 + IIS;
2、VS.Net;
3、SQL Server(我这里用的是SQL数据库);
这个Web Service的例子用的是MS大吹的C#写的,如果你喜欢VB,那么用VB也是一样的哦,只不过语法上一些小的差别而已,道理都是一样的,不过即然MS都鼓吹C#,如果你能够用C#写还是用这为好哦。
下面是写的步骤:
一、打开VS。NET的集成开发环境,FILE菜单上选择New,新建一个C#的ASP.NET Web Service工程,工程名为WebServiceDemo(完整的是)。这是VS就在你的Web系统目录下生成了相应的文件,我的服务目录是默认的c:\Inetpub\wwwroot,生成的文件就在c:\Inetpub\wwwroot\webserviceDemo下,就不多说了。
二、打开与生成工程对应的C#源文件,这里是Service1.asmx.cs,VS.Net集成环境已经为你生成了相应的代码如下:
// =============================================================================
// 文件: Service1.asmx.cs
// 描述: 架构一个Web Service来对数据库进行互访
//
//
// ============================================================================
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
// 系统生成了与工程名相同的命名空间
namespace WebServiceDemo
{
/// summary
/// Summary description for Service1.
/// /summary
// 所有的WEB服务都是派生于System.Web.Services.WebService的。
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: This call is required by the ASP.NET Web Services Designer
InitializeComponent();
}
}
}
里面我添加了文件说明和相应的注释,接下来就是在里面编写相应的服务代码了。这里我想先把对数据库的操作封装在同一命名空间的单独的一个类里,下面编写WEB方法时只用接调用这个类中的相应方法就可以了。下面是我写的这个类的代码:
// -------------------------------------------------------------------------
// 构建一个新类,用于对数据的访问
// -------------------------------------------------------------------------
public class DataAccess
{
// 连接字符串成员变量
private string m_szConn = "";
private SqlConnection m_sqlConn;
private SqlDataAdapter m_sqlDa;
// 构造函数
public DataAccess(string szConnectionString)
{
m_szConn = szConnectionString;
}
// 返回一个记录集
public DataSet GetDataset(string szCommandText)
{
DataSet sqlDs;
try
{
m_sqlConn = new SqlConnection(m_szConn);
m_sqlConn.Open();
m_sqlDa = new SqlDataAdapter(szCommandText,m_sqlConn);
sqlDs = new DataSet();
m_sqlDa.Fill(sqlDs);
m_sqlConn.Close();
return sqlDs;
}
catch
{
return null;
}
}
// 重载上述方法
public DataSet GetDataset(string szCommandText, string szTableName)
{
DataSet sqlDs;
try
{
m_sqlConn = new SqlConnection(m_szConn);
m_sqlConn.Open();
m_sqlDa = new SqlDataAdapter(szCommandText,m_sqlConn);
sqlDs = new DataSet();
m_sqlDa.Fill(sqlDs,szTableName);
m_sqlConn.Close();
return sqlDs;
}
catch
{
return null;
}
}
}
这些就不多说了,与创建一般的C#类是一样的。类中有三个函数,其中一个为构造函数,调用时传入连接字符串。另外两个函数都是一样的作用,返回用户需要的记录集,只不是调用时传的参数不一样,实质都是一样的。
下面就是在Service1类中添加真正用于WEB调用的代码了,这部分才是给WEB应用程序调用的东西。在编写这个类的代码之前,应该先申请一个服务命令空间,设置相应的属性,这一句可万万不能少哦,呵呵~,它告诉了WEB服务存放的路径等相关的信息。如下:
// 声明一个服务空间
[WebService(
Namespace = "", //其实这个才是最重要的啦~,其它的都可以不要哦
Name = "Web Service Demo",
Description = "Web Service Demo"
)]
下面是Service1的代码:
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: This call is required by the ASP.NET Web Services Designer
InitializeComponent();
}
#region Component Designer generated code
//Required by the Web Services Designer
private IContainer components = null;
/// summary
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// /summary
private void InitializeComponent()
{
}
/// summary
/// Clean up any resources being used.
/// /summary
protected override void Dispose( bool disposing )
{
if(disposing components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
// 连接字符串常量
const string szConn = "server=(local)\\taoyi;uid=sa;pwd=;"
+ "initial catalog=mydata;data source=taoyi";
[WebMethod]
public String About()
{
return "这是一个C#编写的Web Service演示程序!";
}
// 返回其中一个WebServiceDemo表
[WebMethod]
public DataSet GetServiceDemoTable()
{
DataSet sqlDs = new DataSet();
DataAccess dataAcc = new DataAccess(szConn);
string szSql = "Select * From WebServiceDemo";
sqlDs = dataAcc.GetDataset(szSql,"Demo");
return sqlDs;
}
// 返回由用户指定的查询
[WebMethod]
public DataSet GetByUser(string szCommandText)
{
DataSet sqlDs = new DataSet();
DataAccess dataAcc = new DataAccess(szConn);
sqlDs = dataAcc.GetDataset(szCommandText);
return sqlDs;
}
}
是不是很简单哦,就只这么点,呵呵~,不过也可以说明问题的了。这个类中声明了三个WEB方法,有没有发觉呢?每个方法的前面都加了[WebMethod],表示该方法为WEB方法。呵呵,如果你想要你写的函数可以让WEB应用程序调用的话,这个可不能少的啦~,不然WEB应用程序就无法调用的。
到此一个WEB服务就完成了,点击运行看看,如果没什么错的话,就会出现如下的WEB页面服务描述:
Service1
The following operations are supported. For a formal definition, please review the Service Description.
* GetByUser
* GetServiceDemoTable
* About
.....(下面还有很多)
其中代星号的就是先前在函数前加了[WebMethod]的函数。在出现在页面中你可以单击相应的函数,然后就会跳到调用页面,你可以在相应的文本框中(如果函数有参数的话)输入相应的参数,点而调用按钮,那么就可以看到函数返回的结果了(前提是函数调用无错的话),不过全是XML格式的文本。比如我的GetServiceDemoTable函数调用的结果如下:
?xml version="1.0" encoding="utf-8" ?
- DataSet xmlns=""
- xs:schema id="NewDataSet" xmlns="" xmlns:xs="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
- xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN"
- xs:complexType
- xs:choice maxOccurs="unbounded"
- xs:element name="Demo"
- xs:complexType
- xs:sequence
xs:element name="ID" type="xs:int" minOccurs="0" /
xs:element name="szUser" type="xs:string" minOccurs="0" /
xs:element name="szSex" type="xs:string" minOccurs="0" /
xs:element name="szAddr" type="xs:string" minOccurs="0" /
/xs:sequence
/xs:complexType
/xs:element
/xs:choice
/xs:complexType
/xs:element
/xs:schema
- diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
- NewDataSet xmlns=""
- Demo diffgr:id="Demo1" msdata:rowOrder="0"
ID1/ID
szUsertaoyi/szUser
szSex男/szSex
szAddr四川泸州/szAddr
/Demo
- Demo diffgr:id="Demo2" msdata:rowOrder="1"
ID2/ID
szUserxiner/szUser
szSex女/szSex
szAddr四川宜宾/szAddr
/Demo
/NewDataSet
/diffgr:diffgram
/DataSet
到此为至,Web Service程序就已经算是完成了。
下面要做的是写一个WEB应用程序来测试我写的这个Web Service了,看看能不能达到想要的结果。建立Web应用程序的步骤如下:
一、新建一个ASP.Net Web Application工程,与创建Web Service的第一步一样,只是工程类型不一样罢了。我这里工程名为WebServiceDemoTest,完整的为,系统就在相应的目录(c:\Inetpub\wwwroot\WebserviceDemoTest)下生成了所需文件。
二、在设计视图下打开WebForm1.aspx文件,在里面放置一个panel容器,为了达到测试的目的,我们需要三个服务端按钮和一个服务端文本框,分别调用我们在Web Service中写的三个函数,另外,为了展示调用方法所得达的数据,还需要一个服务端标签控件和一个DataGrid控件。页面的布置就随便你了,想怎么放置就怎么放置,只要能达到演示的目的就行。
三、引用先前写的Web Service程序,菜单步骤如下project-add web reference...,然后输入我们Web Service的路径,这里是,点击添加就OK了。这时你将在类视图中看到localhost命名空间了。
四、编写测试代码。
为了便于后面少写些代码,如(xxxx.xxxx.xx xx = new xxxx.xxx.xx()这种),那么首先你得引用localhost命名空间的service1类,以后直接写xxxx xx = new xxxx()就可以了。
下面是几个按钮的代码:
// 测试GetServiceDemoTable()
private void Button2_Click(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
Service1 oService = new localhost.Service1();
// 返回记录集
ds = oService.GetServiceDemoTable();
if (ds != null)
{
// 显示记录集的记录
DataGrid1.DataSource = ds.Tables["Demo"];
DataGrid1.DataBind();
}
else
{
this.Response.Write("加载数据错误!");
}
}
// 测试GetByUser()
private void Button1_Click(object sender, System.EventArgs e)
{
DataSet ds = new DataSet();
Service1 oService = new localhost.Service1();
String szCommand = TextBox1.Text;
ds = oService.GetByUser(szCommand);
if (ds != null)
{
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
}
else
Response.Write("错误!有可能是SQL命令有问题!");
}
// 测试About()
private void Button3_Click(object sender, System.EventArgs e)
{
Service1 oService = new localhost.Service1();
Label1.Text = oService.About();
}
OK,最后就是运行了,如果一切OK,点击第一个按钮得到的将是在一个包函用户执行的SQL命令的表结果。第二个按钮得到的就是上面运行Web Service时的GetServiceDemoTable得到的XML描述,即
ID szUser szSex szAddr
1 taoyi 男 四川泸州
2 xiner 女 四川宜宾
点击第三个按钮,则在Label1中显示"这是一个C#编写的Web Service演示程序!”的字符串。
怎么配置web.config
web.config
Web配置文件(*.config)编辑本段认识Web.config文件
Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的 Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。 在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。编辑本段web.config配置文件
(默认的配置设置)以下所有的代码都应该位于 <configuration> <system.web> 和 </system.web> </configuration> 之间,出于学习的目的下面的示例都省略了这段XML标记 1、<authentication> 节 作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。<authentication> 元素必需与</autherization> 节配合使用。 示例: 以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。 <authentication mode="Forms" > <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/> </authentication> 其中元素loginUrl表示登陆网页的名称,name表示Cookie名称 2、<authorization> 节 作用:控制对 URL 资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与</authentication> 节配合使用。 示例:以下示例禁止匿名用户的访问 <authorization> <deny users="?"/> </authorization> 注:你可以使用user.identity.name来获取已经过验证的当前的用户名;可以使用 web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的实例请参考: Forms验证: 3、<compilation>节 作用:配置 ASP.NET 使用的所有编译设置。默认的debug属性为“False”.在程序编译完成交付使用之后应将其设为"True"(Web.config文件中有详细说明,此处省略示例) 4、<customErrors> 作用:为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。 示例:当发生错误时,将网页跳转到自定义的错误页面。 <customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly"> </customErrors> 其中元素defaultRedirect表示自定义的错误网页的名称。mode元素表示:对不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。 5、<httpRuntime>节 作用:配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。 示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100 <httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/> 6、 <pages> 作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。<pages>可以在计算机、站点、应用程序和子目录级别声明。 示例:不检测用户在浏览器输入的内容中是否存在潜在的危险数据(注:该项默认是检测,如果你使用了不检测,一要对用户的输入进行编码或验证),在从客户端回发页时将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。(注:该项默认是不验证) <pages buffer="true" enableViewStateMac="true" validateRequest="false"/> 7、<sessionState> 作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。 示例: <sessionState mode="InProc" cookieless="true" timeout="20"/> </sessionState> 注: mode="InProc"表示:在本地储存会话状态(你也可以选择储存在远程服务器或SAL服务器中或不启用会话状态) cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False) timeout="20"表示:会话可以处于空闲状态的分钟数 8、<trace> 作用:配置 ASP.NET 跟踪服务,主要用来程序测试判断哪里出错。 示例:以下为Web.config中的默认配置: <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" /> 注: enabled="false"表示不启用跟踪;requestLimit="10"表示指定在服务器上存储的跟踪请求的数目 pageOutput="false"表示只能通过跟踪实用工具访问跟踪输出; traceMode="SortByTime"表示以处理跟踪的顺序来显示跟踪信息 localOnly="true" 表示跟踪查看器 (trace.axd) 只用于宿主 Web 服务器编辑本段自定义Web.config文件配置节
自定义Web.config文件配置节过程分为两步。 一是在在配置文件顶部 <configSections> 和 </configSections>标记之间声明配置节的名称和处理该节中配置数据的 .NET Framework 类的名称。 二是在 <configSections> 区域之后为声明的节做实际的配置设置。 示例:创建一个节存储数据库连接字符串 <configuration> <configSections> <section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> </configSections> <appSettings> <add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/> </appSettings> <system.web> ...... </system.web> </configuration>编辑本段访问Web.config文件
你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。 vb.net Dim sconstr As String = System.Configuration.ConfigurationManager.AppSettings("ConnectionString") c# ConnectionString string=System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];编辑本段创建Web.config文件
1.在“解决方案资源管理器”中,单击“刷新”图标以确认应用程序还没有 Web.config 文件。 如果已使用网站管理工具或某些其他方式来配置应用程序,则可能已自动创建了 Web.config 文件。单击“刷新”更新文件列表。 2.在“解决方案资源管理器”中,右击网站名称,然后单击“添加新项”。 3.在“模板”窗口中,单击“Web 配置文件”。 “名称”文本框中的文件名应为 Web.config。可以为该文件提供其他名称,不过这是默认名称。.config 文件扩展名可防止 ASP.NET 下载相应文件。 4.单击“添加”创建该文件,然后将其打开进行编辑。 该文件包含本主题后面“示例”部分中显示的代码,并具有一些初始默认值。应用程序从 %SystemRoot%\Microsoft.NET\Framework\版本\CONFIG 目录下的 Machine.config 和 Web.config 文件继承所有配置设置,但在此处看不到这些默认设置。如果要重写继承的默认设置或添加 httpHandlers 元素(ASP.NET 设置架构) 等集合元素,则只需创建应用程序级别和目录级别的 Web.config 文件。 若要查看当前应用程序的所有配置设置,可以运行主题如何:以编程方式查看继承的配置设置和本地配置设置中包含的代码。也可以查看 %SystemRoot%\Microsoft.NET\Framework\版本\CONFIG 目录下的 Machine.config.comments 或 Web.config.comments 文件(这两个文件也包含有用的注释),但这两个文件将不会包含所有运行时设置,请参见如何:以编程方式查看继承的配置设置和本地配置设置。 5.如果更改了 Web.config 文件,则保存该文件。 保存 Web.config 文件会重新启动应用程序。也可以选择使用单个节元素的 configSource 属性指向某个辅助配置文件,更改辅助配置文件不会导致应用程序重新启动。有关更多信息,请参见节元素所继承的常规属性中的 configSource。
用VB webbrowse控件浏览网页,如何取得网页上 的数据 ?
使用WebBrowser控件进行DOM分析网页比较方便.
此外也可以用正则表达式以的方法分析字符
方法:
1.使用WebBrowser控件浏览
2.从WebBrowser获得document进行DOM处理.
(WebBrowse的document也可以直接进行DOM处理,只是功能少点)
代码示例:
WebBrowser1.Silent = True
WebBrowser1.Navigate "网页的网址"
Do Until WebBrowser1.ReadyState = 4 '等待加载完毕
DoEvents
Loop
'以下的语句需要引用mshtml 才能使用
dim doc as HTMLDocument '也可以使用iHTMLDocument2 ,功能略有不同
set doc=WebBrowser1.document '获得document
'获得document后,就可以使用以下这些方法来取出网页中的对象
dim obj
set obj = doc.getElementByID("id号") '返回的是对象
set obj = doc.getElementByTagName("div") '返回的是对象集合
set obj = doc.links() '返回的是对象集合
还有.images .body 等很多方法
'再取出对象的内容
dim result as string
result = obj.value '例如文本框的数值
result = obj.innerText '例如链接文件
result = obj.outerHTML '对象的html代码
还有name class innerHTML 等很多属性
注意:页面如有script,iframe,object等,WebBrowser会弹出对话框,
建议不要用WebBrowser控件浏览,而是先下载代码,处理后再放到WebBrowser控件
有关vb中webbrowser.document的使用
参考参考这个:
----------
主题:用户名,密码提交到网页上的登录页:
首先在程序中加入Webbrowser控件
假设你的HTML页面表单代码如下:
form method="POST" action=""
p请填写下面表单注册(*项为必添项)/p
p*姓名input type="text" name="Name" size="20"/p
p*昵称input type="text" name="NickName" size="20"/p
p电子邮件input type="text" name="EMail" size="20"/p
p*密码input type="text" name="Password" size="20"/p
pinput type="submit" value="提交" name="B1"input type="reset" value="全部重写" name="B2"/p
/form
注意其中元素的type、Name、value属性。然后VB中的代码如下:
Private Sub Command1_Click()
WebBrowser1.Navigate ""
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim vDoc, vTag
Dim i As Integer
Set vDoc = WebBrowser1.Document
List1.Clear
For i = 0 To vDoc.All.length - 1
If UCase(vDoc.All(i).tagName) = "INPUT" Then
Set vTag = vDoc.All(i)
If vTag.Type = "text" Or vTag.Type = "password" Then
List1.AddItem vTag.Name
Select Case vTag.Name
Case "Name"
vTag.Value = "IMGod"
Case "NickName"
vTag.Value = "IMGod"
Case "Password"
vTag.Value = "IMGodpass"
Case "EMail"
vTag.Value = "IMGod@paradise.com"
End Select
ElseIf vTag.Type = "submit" Then
vTag.Click
End If
End If
Next i
End Sub
点击Command1就可以自动填表并提交。
-------------
这里还有一种获得页面元素的方式:
{{
WebBrowser1.Document.getElementsByName("页面元素名")
}}
页面元素名包括按钮,连接等,一个例子:
Web应用技巧(一)如何调用WebService?
从表面上看vb.netweb例子,Web service 就是一个应用程序vb.netweb例子,它向外界暴露出一个能够通过Web进行调用的API。这就是说vb.netweb例子,你能够用编程的方法通过Web来调用这个应用程序。 对Web service 更精确的解释: Web services是建立可互操作的分布式应用程序的新平台。作为一个Windows程序员,你可能已经用COM或DCOM建立过基于组件的分布式应用程序。COM是一个非常好的组件技术,但是我们也很容易举出COM并不能满足要求的情况。Web service平台是一套标准,它定义vb.netweb例子了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。 不管你的Web service是用什么工具,什么语言写出来的,只要你用SOAP协议通过HTTP来调用它,总体结构都一致。通常,你用你自己喜欢的语言(如VB 6或者VB.NET)来构建你的Web service,然后用SOAP Toolkit或者.NET的内建支持来把它暴露给Web客户。于是,任何语言,任何平台上的客户都可以阅读其WSDL文档,以调用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器 (如IIS) 后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。对VB 6程序来说,Web service请求处理器是一个与SOAP Toolkit组件协同工作的ASP页面或ISAPI extension。而对VB.NET程序来说,Web service请求处理器则是一个.NET Framework自带的ISAPI extension。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。 2. 基本概念SOAPWeb service建好以后,其vb.netweb例子他人就会去调用它。简单对象访问协议(SOAP)提供了标准的远程过程调用( RPC)方法来调用Web service。SOAP规范定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。客户端和服务端之间的方法调用请求和结果返回值都放在这些消息里。 XML和XSD可扩展的标记语言(XML)是Web service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的。XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位,32位,还是 64位?这些细节对实现互操作性都是很重要的。W3C制定的XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。Web service平台就是用XSD来作为其数据类型系统的。当用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合Web service标准,所有使用的数据类型都必须被转换为XSD类型。 WSDL(Web Services Description Language) 用于描述服务端所提供服务的XML格式。WSDL文件里,描述了服务端提供的服务,提供的调用方法,以及调用时所要遵循的格式,比如调用参数和返回值的格式等等。WSDL 很像COM编程里的IDL(Interface Description Language),是服务器与客户端之间的契约,双方必须按契约严格行事才能实现功能。 WSML(Web Services Meta Language) 用于描述WSDL里提供的方法与实现该方法的COM对象之间的映射关系。该文件是Microsoft的实现中特有的,不是SOAP标准的一部分。一般情况下,该文件只在服务端存在。 3.Webservice的技术特点 长项一: 跨防火墙的通信 如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。在这种情况下,使用DCOM就不是那么简单,通常也不便于把客户端程序发布到数量如此庞大的每一个用户手中。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。 举个例子,在应用程序里加入一个新页面,必须先建立好用户界面(Web页面),并在这个页面后面,包含相应商业逻辑的中间层组件,还要再建立至少一个ASP页面,用来接受用户输入的信息,调用中间层组件,把结果格式化为HTML形式,最后还要把“结果页”送回浏览器。要是客户端代码不再如此依赖于HTML表单,客户端的编程就简单多了。 如果中间层组件换成Web Service的话,就可以从用户界面直接调用中间层组件,从而省掉建立ASP页面的那一步。要调用Web Service,可以直接使用Microsoft SOAP Toolkit或.NET这样的SOAP客户端,也可以使用自己开发的SOAP客户端,然后把它和应用程序连接起来。不仅缩短了开发周期,还减少了代码复杂度,并能够增强应用程序的可维护性。同时,应用程序也不再需要在每次调用中间层组件时,都跳转到相应的“结果页”。 从经验来看,在一个用户界面和中间层有较多交互的应用程序中,使用Web Service这种结构,可以节省花在用户界面编程上20%的开发时间。另外,这样一个由Web Service组成的中间层,完全可以在应用程序集成或其它场合下重用。最后,通过Web Service把应用程序的逻辑和数据“暴露”出来,还可以让其它平台上的客户重用这些应用程序。 长项二: 应用程序集成 企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行在IBM主机上的程序中获取数据;或者把数据发送到主机或UNIX应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。通过Web Service,应用程序可以用标准的方法把功能和数据“暴露”出来,供其它应用程序使用。 例如,有一个订单登录程序,用于登录从客户来的新订单,包括客户信息、发货地址、数量、价格和付款方式等内容;还有一个订单执行程序,用于实际货物发送的管理。这两个程序来自不同软件厂商。一份新订单进来之后,订单登录程序需要通知订单执行程序发送货物。通过在订单执行程序上面增加一层Web Service,订单执行程序可以把“Add Order”函数“暴露”出来。这样,每当有新订单到来时,订单登录程序就可以调用这个函数来发送货物了。 Web Service是B2B集成成功的关键。通过Web Service,公司可以把关键的商务应用“暴露”给指定的供应商和客户。例如,把电子下单系统和电子发票系统“暴露”出来,客户就可以以电子的方式发送订单,供应商则可以以电子的方式发送原料采购发票。当然,这并不是一个新的概念, EDI(电子文档交换)早就是这样了。但是,Web Service的实现要比EDI简单得多,而且Web Service运行在Internet上,在世界任何地方都可轻易实现,其运行成本就相对较低。不过,Web Service并不像EDI那样,是文档交换或B2B集成的完整解决方案。Web Service只是B2B集成的一个关键部分,还需要许多其它的部分才能实现集成。 长项四: 软件和数据重用 软件重用是一个很大的主题,重用的形式很多,重用的程度有大有小。最基本的形式是源代码模块或者类一级的重用,另一种形式是二进制形式的组件重用。 当前,像表格控件或用户界面控件这样的可重用软件组件,在市场上都占有很大的份额。但这类软件的重用有一个很大的限制,就是重用仅限于代码,数据不能重用。原因在于,发布组件甚至源代码都比较容易,但要发布数据就没那么容易,除非是不会经常变化的静态数据。 Web Service在允许重用代码的同时,可以重用代码背后的数据。使用Web Service,再也不必像以前那样,要先从第三方购买、安装软件组件,再从应用程序中调用这些组件;只需要直接调用远端的Web Service就可以了。举个例子,要在应用程序中确认用户输入的地址,只需把这个地址直接发送给相应的Web Service,这个Web Service 就会帮你查阅街道地址、城市、省区和邮政编码等信息,确认这个地址是否在相应的邮政编码区域。Web Service 的提供商可以按时间或使用次数来对这项服务进行收费。这样的服务要通过组件重用来实现是不可能的,那样的话你必须下载并安装好包含街道地址、城市、省区和邮政编码等信息的数据库,而且这个数据库还是不能实时更新的。 另一种软件重用的情况是,把好几个应用程序的功能集成起来。例如,要建立一个局域网上的门户站点应用,让用户既可以查询联邦快递包裹,查看股市行情,又可以管理自己的日程安排,还可以在线购买电影票。现在Web上有很多应用程序供应商,都在其应用中实现了这些功能。一旦他们把这些功能都通过Web Service “暴露”出来,就可以非常容易地把所有这些功能都集成到你的门户站点中,为用户提供一个统一的、友好的界面。 将来,许多应用程序都会利用Web Service,把当前基于组件的应用程序结构扩展为组件/Web Service 的混合结构,可以在应用程序中使用第三方的Web Service 提供的功能,也可以把自己的应用程序功能通过Web Service 提供给别人。两种情况下,都可以重用代码和代码背后的数据。
vb.netweb例子的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vbnet web编程、vb.netweb例子的信息别忘了在本站进行查找喔。