通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

用ASP.NET开发Web服务的五则技巧

http://www.iyit.net  日期:2006-6-2 15:07:45  来源:  点击:
参加讨论】一、禁用HTTP POST/GET协议

  除非另外指定,否则,.NET将试图把Web服务绑定到三种协议:HTTP/POST、HTTP/GET和SOAP。之所以说“试图”,是因为依赖于服务的参数和返回类型,HTTP/GET协议可能不可用。.NET生成的WSDL文件将自动包含绑定这三种协议的指令,客户程序可以自由选择使用哪种协议与服务通信。

  只要在Web.config文件中加入下列内容,就可以方便地删除对HTTP/POST和HTTP/GET协议的绑定:










  为什么要避免通过HTTP/POST和HTTP/GET协议引出Web服务呢?主要的两个原因是安全和互操作性。HTTP/GET的安全性不如SOAP,而且由于HTTP/GET常见于Web链接,怀有恶意的人可能利用它实施欺骗,使别人在不知不觉中用自己的安全标识调用Web服务,却还以为自己在点击Web链接。

  就互操作性而言,SOAP是广泛应用的Web服务通信标准,而HTTP/GET和HTTP/POST不是。因此,对于.NET生成的WSDL文档中默认包含的HTTP/GET和HTTP/POST绑定,许多自动生成代理服务器的工具不会理解。因此,如果你的Web服务不是非绑定到HTTP/GET和HTTP/POST协议不可,最好取消这两种绑定。



二、用tcpTrace查看SOAP请求/应答消息

  对于开发Web服务应用的人来说,调试可能是件异乎寻常的难事,因为无论是.NET SDK还是VS.NET,都没有提供工具来查看客户端和服务器之间的SOAP消息。

  如果.NET和非.NET的客户端、服务器端的交互过程出现了问题,要想找出问题的根源,拥有查看SOAP消息的能力就尤为重要,因为这类问题往往与SOAP消息的格式有关(例如,“消息中包含了SOAPAction 吗?”)。

  tcpTrace(www.pocketsoap.com/tcptrace)是一个查看这类消息交换过程的优秀工具,它通过设置一个客户端和服务器端之间的隧道工作。启动tcpTrace时,它会要求输入目标URL和端口号,以及tcpTrace监听的本地端口号。这样,你就可以通过设置代理stub的Url属性,把stub指向这个本地端口(例如,localhost:8080)。tcpTrace能够记录所有的请求和应答HTTP消息。

  tcpTrace的一个局限是,它在消息流程中所处的位置决定了它不能用来查看通过SSL发送的消息。如果你要查看通过SSL发送的SOAP消息,只能编写一个定制的ISAPI过滤器。



三、简化接口设计

  在众多有关n-层应用设计的论述中,简化接口设计这一设计要诀可以说是随处可见。但是,对于Web服务这样的分布式计算环境,简化接口设计的重要性更加突出。

  在设计分布式应用时,出于性能和可伸缩性的考虑,应当保证客户端和服务器端之间的调用尽可能地少。减少网络调用不仅有利于减少通信开销(如果只用一个SOAP消息可以达到目标,就绝对不要发三个消息),降低网络流量,而且提高了应用的性能。显然,这一切都是开发者梦寐以求的目标。那么简化的接口到底有何特征呢?

  首先来看一个复杂接口的例子:

namespace ChattyService {
public class ChattyService : WebService {
private string username;
private string password;

public string Username {
[WebMethod]
set {
username = Username;
} }

public string Password {
[WebMethod]
set {
password = Password;
} }

[WebMethod]
public bool Logon() {
// 验证身份
return true;
}
}
}



  在这个例子中,username和password是两个属性,调用logon()方法之前首先必须设置这两个属性。有一个问题光看这段代码不太容易注意到,这就是username和password都作为Web方法引出。这就是说,每次对属性的get/set操作都会导致一个对服务的调用。

  按照简化接口设计的要求,改进后的代码如下:

namespace ChattyService {
public class ChattyService : WebService {
[WebMethod]
public bool Logon(string Username, string Password) {
// 验证身份
return true;
}
}
}



  现在,username和password成了logon()方法的参数。修改之后的代码的优点在于,它把登录操作对服务器的三次调用降低到了一次。另一方面,如果参数的个数太多,这个方法可能看起来很不像样。这时,可能要把方法的参数整理成几个复杂类型,例如,把username和password两个参数封装到一个credential(证书)对象里面。

本新闻共2页,当前在第1页  1  2  


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:ASP.NET中Cookie编程的基础知识(1)
下一篇:ASP.NET 2.0 中的异步页功能应用
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
在ASP.NET中自动给URL加上超链接 ASP.NET Atlas ListView显示列表数据 ASP.NET编程入门随想之信客
用VS2005实现ASP.NET2.0移动开发 在ASP.NET Atlas中创建自定义Behavior ASP.NET 2.0中轻松实现网站换肤
ASP.NET 2.0 中的代码隐藏和编译 ASP.NET入门随想之服务器控件模型 ASP.NET页面中标题单点解决方案
在ASP.NET中防止注入攻击 ASP.NET 2.0站点登录、导航与权限管理 asp.net面试试题收集
ASP.NET服务器控件编程之热身运动 ASP.NET 2.0 中的异步页功能应用 ASP.NET中Cookie编程的基础知识(1)
ASP.NET中Cookie编程的基础知识(2) ASP.NET中Cookie编程的基础知识(3) ASP.NET中Cookie编程的基础知识(4)
ASP.NET中Cookie编程的基础知识(5) ASP.NET中Cookie编程的基础知识(6) ASP.NET 2.0移动开发入门之基础
ASP.NET中文件上传下载方法集合 ASP.NET服务器控件之RenderContents ASP.NET2.0服务器控件之Render方法
最新更新 热点排行 推荐新闻
在ASP.NET中自动给URL加上超链接
ASP.NET Atlas ListView显示列表数据
ASP.NET编程入门随想之信客
用VS2005实现ASP.NET2.0移动开发
在ASP.NET Atlas中创建自定义Behavior
在ASP.NET中自动给URL加上超链接
ASP.NET Atlas ListView显示列表数据
ASP.NET编程入门随想之信客
用VS2005实现ASP.NET2.0移动开发
在ASP.NET Atlas中创建自定义Behavior
ASP.NET 2.0中轻松实现网站换肤
ASP.NET 2.0 中的代码隐藏和编译
ASP.NET入门随想之服务器控件模型
ASP.NET页面中标题单点解决方案
在ASP.NET中防止注入攻击
为ASP.NET 2.0菜单控件增加target属性
ASP.NET 2.0 中的异步页功能应用
将Asp.net页面输出为HTML
HTML简介
设定Cookie 变量的生命周期
优秀公益广告作品欣赏(8)
java数据类型转换
QQ最新版下载 2006 beta2 体验新感受 
Windows XP专业版IIS连接数的更改
优秀公益广告作品欣赏(7)
Office2007简体中文版浮出水面 美图抢
优秀公益广告作品欣赏(6)
WEB服务器配置全攻略(三)
优秀公益广告作品欣赏(4)
优秀公益广告作品欣赏(1)
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
ASP.NET 2.0 中的异步页功能应用
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
Linux操作系统12则经典应用技巧
浅谈Linux优化及安全配置的个人体会
解决局域网不能互相访问之全攻略
WIN 2000简单的入侵常识
用Win 2003架设邮件服务器
硬盘分区消失,解决方法!
传统计算机病毒传播能力破坏性在提高
内存为何有“两面性”
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息