粗糙的Web Services学习笔记

1,什么是Web Services
由于异构系统间存在互相整合和交流数据的需要,但目前各自为政的语言之间存在不同的运行平台和通讯方式,以及不同的数据类型,这就Web services出现历史背景

Web Services的定义:Web services是建立可互操作的分布式应用程序的新平台,它主要由一下核心组成:
XML(可拓展标识语言):是平台厂商无关的标准语言,用于解决异构系统的统一数据表示问题
XSD(XML Schema) : 是WEB SERVICE的数据类型系统,解决异构系统数据的统一类型识别
SOAP(简单对象访问协议):基于主流(HTTP,SMTP,TCP/IP)协议的数据通讯协议,提供统一普遍适用的数据通讯方式
WSDL(Web service描述语言):同时面向机器和人的WEBSERVICE描述语言,用于描述您提供的WEB服务,定义了服务的位置,以及使用什么通信协议与服务进行通信
UDDI:通用发现、说明和集成 (UDDI) 是 Web 服务的黄页,提供Web服务的注册,搜索

拓展模块:由于soap在数据传递过程中需要安全保证,下面的两个规范用于解决安全问题
WS-Security 规范 :定义了一套完整的加密系统
WS-License 规范 :定义了相应的技术,以保证调用者的身份标识,并确保只有授权用户才可以使用 Web 服务
XML Web Service 定义为:通过 SOAP 在 Web 上提供的软件服务,使用 WSDL 文件进行说明,并通过 UDDI 进行注册。

http://blog.csdn.net/AppleBBS/archive/2005/03/10/316306.aspx
http://www.microsoft.com/china/MSDN/library/archives/library/dnWebsrv/html/WebserVBAsics.asp

http://www.cnblogs.com/bjzhanghao/category/7421.html

Visual Studio .NET 中的 XML Web services 入门
http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/createWebServicebyVSNET.mspx

2,基础语法
==@ WebService 指令的两种实现[指令级]
 2.1声明 XML Web services,该服务的实现驻留在同一个文件中 ,e,g
下面的代码示例将 @ WebService 指令的 Language 属性设置为 C#,并将驻留在同一个文件中的 Class 属性设置为 MyMath
<%@ WebService Language="C#" Class="MyMath" %>
using System.Web.Services;
public class MyMath {
     [ WebMethod ]
     public int Add(int num1, int num2) {
          return num1+num2;
     }
}
 2.2声明 XML Web services,该服务的实现驻留在一个程序集中
<%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>

无论那种类型,最终的程序集必须存在于WEB services /bin目录下

==应用 WebService 属性[类级]:
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbtskUsingWebServiceAttribute.htm
有两个Description,Namespace
强烈建议在使 XML Web services 可被公共使用之前修改此默认命名空间
[WebService(Namespace="http://www.contoso.com/",Description="test Math")]
public class Math {
     [ WebMethod ]
     public int Add(int num1, int num2) {
         return num1+num2;
         }
 }

使用 WebMethod 属性[方法级]
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbtskUsingWebMethodAttribute.htm
WebMethod属性提供一下属性:
BufferResponse :缓冲设置,当设置为 true(默认设置)时,ASP.NET 在将响应向下发送到客户端之前对整个响应进行缓冲,当设置为 false 时,ASP.NET 以 16KB 的块区缓冲响应。通常,只有在不想将响应的全部内容一次缓冲到内存时,才将该属性设置为 false

CacheDuration :该属性的值指定 ASP.NET 应该对结果进行多少秒的缓存处理。值为零,则禁用对结果进行缓存,默认为0

Description :方法的说明,该说明将显示在服务帮助页上,默认为空

EnableSession : 是否启用 XML Web services 方法的会话状态,默认为false,一旦启用,XML Web services 就可以从 HttpContext.Current.Session 中直接访问会话状态集合

MessageName : 以别名替代真实方法名

TransactionOption :WebMethod 特性的 TransactionOption 属性使 XML Web services 方法可以作为事务的根对象参与。虽然可以将 TransactionOption 属性设置为 TransactionOption 枚举的任意值,但 XML Web services 方法仅有两个可能的行为:它不参与事务(Disabled、NotSupported、Supported)或它创建一个新事务(Required、RequiresNew)。除非另外指定,默认值为 TransactionOption.Disabled

3,Web Services类:System.Web.Services 命名空间
为 XML Web services 定义可选的基类,该基类提供对公共 ASP.NET 对象(如应用程序和会话状态)的直接访问。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemwebserviceswebserviceclasstopic.htm

4,同步和异步的web services
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconcreatingasynchronousxmlwebservicemethod.htm
5,状态管理
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconstatemanagementinaspnetwebservices.htm
当实现 XML Web services 的类是从 WebService 类派生而来时,XML Web services 可以访问与其他 ASP.NET 应用程序相同的状态管理选项。WebService 类包含许多公共 ASP.NET 对象,包括 Session 和 Application 对象。如果客户端支持Cookies,也可以访问cookies;只有当 WebMethod 特性的 EnableSession 属性设置为 true 时,存储在 Session 对象中的数据才可用

6,安全性
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconsecuringaspnetwebservices.htm
有两种方式特别需要关注,并比较差异:
将客户端凭据传递到使用 Windows 身份验证的 XML Web services SOAPHeader
7,部署
web服务引用URL行为设置为动态,这样服务的URL可以从配置文件获取
配置文件设置
<appSettings>
   <add key="myApplication.myServer.Service1"
        value="http://myServer/myXmlWebService/Service1.asmx"/>
</appSettings>

posted @   kwklover  阅读(861)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示