|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我有个同学,他是搞net网页编程的,他给我说“net网页编程不是效率低,而是速度慢。”,我不是搞net网页编程的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了?用ASP.NET开辟Web服务的五则技能:
1、禁用HTTPPOST/GET协定
除非别的指定,不然,.NET将试图把Web服务绑定到三种协定:HTTP/POST、HTTP/GET和SOAP。之以是说“试图”,是由于依附于服务的参数和前往范例,HTTP/GET协定大概不成用。.NET天生的WSDL文件将主动包括绑定这三种协定的指令,客户程序能够自在选择利用哪一种协定与服务通讯。
只需在Web.config文件中到场以下内容,就能够便利地删除对HTTP/POST和HTTP/GET协定的绑定:
<webservices>
<protocols>
<removename="HttpPost"/>
<removename="HttpGet"/>
</protocols>
</webservices>
为何要制止经由过程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协定不成,最好作废这两种绑定。
2、用tcpTrace检察SOAP哀求/应对动静
关于开辟Web服务使用的人来讲,调试多是件与众不同的难事,由于不管是.NETSDK仍是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过滤器。
3、简化接口计划
在浩瀚有关n-层使用计划的叙述中,简化接口计划这一计划要诀能够说是到处可见。可是,关于Web服务如许的散布式盘算情况,简化接口计划的主要性加倍凸起。
在计划散布式使用时,出于功能和可伸缩性的思索,应该包管客户端和服务器端之间的挪用尽量地少。削减收集挪用不但有益于削减通讯开支(假如只用一个SOAP动静能够到达方针,就相对不要发三个动静),下降收集流量,并且进步了使用的功能。明显,这统统都是开辟者朝思暮想的方针。那末简化的接口究竟有何特性呢?
起首来看一个庞大接口的例子:
namespaceChattyService{
publicclassChattyService:WebService{
privatestringusername;
privatestringpassword;
publicstringUsername{
[WebMethod]
set{
username=Username;
}}
publicstringPassword{
[WebMethod]
set{
password=Password;
}}
[WebMethod]
publicboolLogon(){
//考证身份
returntrue;
}
}
}
在这个例子中,username和password是两个属性,挪用logon()办法之前起首必需设置这两个属性。有一个成绩光看这段代码不太简单注重到,这就是username和password都作为Web办法引出。这就是说,每次对属性的get/set操纵城市招致一个对服务的挪用。
依照简化接口计划的请求,改善后的代码以下:
namespaceChattyService{
publicclassChattyService:WebService{
[WebMethod]
publicboolLogon(stringUsername,stringPassword){
//考证身份
returntrue;
}
}
}
在,username和password成了logon()办法的参数。修正以后的代码的长处在于,它把登录操纵对服务器的三次挪用下降到了一次。另外一方面,假如参数的个数太多,这个办法大概看起来很不像样。这时候,大概要把办法的参数收拾成几个庞大范例,比方,把username和password两个参数封装到一个credential(证书)对象内里。
4、在Web.Config中保留使用公有的数据
用ASP.NET开辟的Web服务可以发扬出.aspx使用的一切专长,包含用web.config文件保留使用公有数据的才能(比方,数据库毗连字符串、文件路径等)。用Web.config而不是global.asax文件的优点在于修正设置以后不用从头机关使用。
5、制止利用ASP.NET会话形态
.NET完成的会话形态办理功效办理了它的先辈ASP3.0存在的很多成绩,比方哀求串行化等,但仍存在一些范围。应该熟悉到,.NET的会话形态办理功效不是专门为Web服务情况中的会话形态而计划,而是为了在局限更普遍的ASP.NET使用中办理会话形态而计划,它依附于HTTPCookie(有一种经由过程改写URL完成的不必要Cookie的形式,但不合用于Web服务)。
Cookie是HTTP独占的。在Web上,一切的扫瞄器都撑持HTTP,以是Cookie十分合适在Web使用中利用。可是,在Web服务中使用Cookie却把服务限制到了HTTP协定上。另外一方面,SOAP协定的运转是自力于传输协定的,因而假如把Web服务使用限定到HTTP协定上,使用的天真性也遭到了限定,一旦要经由过程非HTTP的传输协定(比方SMTP)供应服务,事变会变得很贫苦。
net网页编程的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。 |
|