服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

VB.NET与WEB服务器通讯过程详解


发布日期:2020年09月11日
 
VB.NET与WEB服务器通讯过程详解

WebRequest 和 WebResponse是两种我们访问Internet常用的类严格说WebRequest是一个抽象基类我们一般用它的衍生类HttpWebRequest 以及 FileWebRequestFTP的访问需要手动注册具体看后面的插入协议

从逻辑角度上讲Net classes 包含三个层请求/响应层应用协议层和传输层依次展开从应用程序到网络WebRequest 和 WebResponse 类代表请求/响应层HTTPTCP 和 UDP 类组成了应用协议层而套接字存在于传输层中WebRequest/WebResponse 和 HTTP 可以在 SystemNet 名称空间中找到而 TCP/UDP 和套接字则处在 SystemNetSockets 名称空间中包括也常用的UDPClientTCPCLient

WebRequest 和 WebResponse(请求/响应模型)

请求/响应模型位于顶部提供一种简单的方式访问 Web 上的资源WebRequest 是 NET 框架的用于访问 Internet 数据的请求/响应模型的抽象基类使用该请求/响应模型的应用程序可以用协议不可知的方式从 Internet 请求数据什么意思?就是协议不具体

这两种类提供了一种访问网上资源的一般方式WebRequest 表示一个网络请求包含诸如 RequestURIHeadersCredentials 和 ContentType 等属性WebRequest 上的主要方法有 GetRequestStreamGetResponse 以及它们的异步方法Begin/EndGetRequestStream 和 Begin/EndGetResponse GetRequestStream 用于获取流以便将数据上载到服务器GetResponse 用于获取服务器返回的响应对象WebResponse 表示从处理该请求的服务器接收回的响应其关键属性有 ContentLengthContentTypeheadersResponseURI 和 StatusWebResponse 上最常用的方法是 GetResponseStream它用于从服务器读取(下载)数据

当对 WebRequestGetResponse 进行调用时通常发出实际的网络请求

这个示例显示如何获取一个 Web 页并将其内容输出

Dim url As New Uri()定义一个URI

Dim Req As WebRequest

Req = WebRequestCreate(url)

Dim Resp As WebResponse

Try

Resp = ReqGetResponse 获得一个响应

Catch exc As Exception

MsgBox(excMessage)

End Try

Dim netStream As StreamReader

netStream = New StreamReader(RespGetResponseStream)

DebugWriteLine(netStreamReadToEnd)

当然上面的例子只是一个简单的操作可以返回一个流式的数据下面充分挖掘一下它们的优势(与WebClient相比)

可插入协议

当某个应用程序仅仅使用 WebRequest 和 WebResponse 类时无需修改应用程序的任何代码就可以插入和使用新的协议注册一个带 WebRequestFactory 的 URI 模式在程序的持续时间内插入协议支持注册是通过调用 WebRequestFactoryRegister() 方法完成的对于 HTTP 协议这种方法是从内部调用的因此它被默认注册尽管如此在将来可以实现和注册任意数目的其他协议当然由于 Internet 上的协议数量巨大这种模型并不是对所有的情况都理想那些饶舌的或另外排斥请求/响应模型的协议可能会在 TCP 或 UDP 类中更好地执行或者在某些情况下会在 Sockets 类中更好地执行有关HTTP方面的操作我们可以使用HttpWebRequest

下面说明几个具体问题

. 程序分块

当应用程序需要发送或接收数据而数据的准确大小在下载/上载开始时还未知时程序分块是有用的当基于其他应用程序或服务器逻辑正在创建所讨论的数据时使用程序分块技术是最普遍的要发送分块的数据应该将 WebRequest 转换为 HttpWebRequest 并且将 HttpWebRequestSendChunked 的属性设置为TRUE如果直接用HttpWebRequest自然就免了

.HTTP 管道技术

管道技术是 HTTP 的一项功能它允许 Net classes 通过持久性连接向后端服务器发送多个 HTTP 请求而无需在发出下次请求之前等待来自服务器的响应这会显着影响性能因为从服务器请求多个资源的应用程序不会被阻塞而等待某个特定资源(可能是服务器上一个非常耗时的操作如数据库查找)

身份验证

Net classes 支持各种客户机身份验证机制包括摘要基本KerberosNTLM 和定制身份验证是通过在作出请求前对 WebRequestCredentials 对象进行设置来达到的摘要基本情况下会指定用户名和口令对于 NTLM 或 Kerberos则使用 Windows 安全机制并且 Credential 对象或者可以被设置为用户名口令和域的结合或者可以请求使用系统默认值

代理支持

在 Net classes 中的 HTTP 代理支持可以在每个请求的基础上进行控制或者可以一次全局性地设置它用于应用程序的生存期这样似乎就可以验证Proxy是不是免费;)

上一篇:HTML服务器推送技术简介

下一篇:ASP.NET在服务器端控制网页