在.NET Framework中,web服务可以用于各类应用程序(winform,wpf,silverlight,asp.net等等)
Web服务利用soap协议,主要优点在于平台独立性,服务描述使用wsdl文档定义的,该文档包含信息:web服务支持什么方法,如何调用这些方法,给服务传送的参数类型,以及从服务返回的参数类型。在.asmx文件的最后加上字符串?wsdl,返回一个wsdl文档
这个文档是用webmethod特性动态生成的,这个文档用来创建带有相同方法和参数的客户代理程序。而利用这个代理程序,客户应用程序就只需在服务器中执行时调用方法,因为代理程序会把它们转换为soap调用,通过网络进行调用
Web服务交互操作组织用WS-I Basic Profile规范定义了web服务的需求
System.web.services 名称空间中的类用于创建web服务
System.web.services.description,可以通过wsdl描述web服务
System.web.services.protocols,可以创建soap请求和响应
可以使用ASP.NET 或WCF创建web服务,WCF更灵活,ASP.NET 更简单
Webservice类提供了对ASP.NET application和session对象的访问,常用属性有:application,context,server,session,user,soapversion
用webservice特性来标记webservice的子类
Webserviceattribute 类有下述属性:description,name,namespace
Web服务中可供使用的所有方法都必须用webmethod特性来标记,当然,服务还可以有未标记的,但这些不能在客户机上调用,使用特性类webmethodattribute就可以在远程客户机上调用方法。
特性webservicebinding用于把web服务标记为可交互操作的一致性级别
要调用一个方法,客户机必须创建一个与web服务所在的服务器之间的http链接,并发送一个请求,以便传送soap消息,方法调用必须转换为soap消息,这些都是由客户代理程序实现的,实现代码在soaphttpclientprotocol类中,invoke方法转换参数,建立一个soap消息,发送给web服务,调用哪个web服务由url属性确定。
在system.xml.serialization名称空间中定义的特性类可以用于定制序列化的xml结果