WebService(笔记)
通过SOAP在web上提供的软件服务(基于XML协议)
使用WSDL文件进行说明(基于XML语言,描述webservice及其函数/参数/返回值)
通过UDDI进行注册(通用发现/说明和集成,相当于web服务的黄页,包含一组使企业将自身提供的web service注册时的别的企业能够发现的访问协议)
中间件平台的缺陷:无法扩展到互联网上,它们要求服务的客户端与系统提供的服务本身之间必须进行紧密耦合,即要求一个同类基本结构
Web service不能到处滥用,有时它会降低程序性能,而没任何好处。例如一台机器或同个局域网里运行的同构应用程序不应该用webservice通信
Web Service属性介绍
Description
Name
Namespace
【WebService(Namespace="xxx",
Description="asdfa",
Name="ddddd")】
Description:对web service方法的描述信息
EnableSession:指示web service是否启动Session标志,主要通过Cookie完成
MessageName:实现方法重载后的重命名
TransactionOption:只是web service方法的事务支持
CacheDuration:设置相应应在缓存中保留的秒数
添加web service 引用:最终目标都是在URL处输入相应地址进行加载。然后会自动生成代理类(项目->显示所有文件才会显示)
js调用webservice
利用webbehavior.htc调用(需要下载)
<body>
<div id="addserivice" style="behavior:url(webservice.htc)"></div>
</body>
为了保证能正确调用webservice,必须在body的onload时间里马上加载处理webservice调用的js
通过Mrcrosoft.XMLDOM调用webservice
XMLHTTP POST调用webservice
SOAP调用Webservice
winForm调用webservice
代理类方式
手动发送HTTP请求方式
POST和GET方式区别:Post参数经过URL编码并在获得请求之前传送,而Get把参数用URL编码后直接附加到请求的URL后面
实现异步调用Web Service
使用Backgroundworker对象实现
调用Web Service的WebMethod的Async 方法实现(生成的代理类中有一个和原webservice方法名字相同而后缀是Async的方法)
保证Web Service的安全
通过SoapHeader
采用SSL实现加密传输
访问IP限制(维护IP地址表,进行检测)
注意事项:
接口自说明
服务接口力度要合适
接口参数尽量简单
提供接口参数和返回值的校验
接口返回值应该简单并且语言无关
谨慎的抛出异常
接口尽量采用更新标准
注意标准的通用性
禁用HTTP POST/GET协议(默认绑定到三种协议:HTTP/POST,HTTP/GET和SOAP)<webServices><protocols><remove name="HttpPost"/>。。。删除对HTTP/POST的绑定
用TCPTrace查看SOAP请求/应答消息
简化接口设计
避免使用ASP.NET会话状态