原文请见 http://www.theserverside.net/articles/showarticle.tss?id=Top5WSMistakes
没时间全部翻译,大概就这个意思,有错误请不吝指教!觉得这5条总结的还是很不错的。
1、使用.NET特有的类型
要避免使用.NET特有的类型作为Web Service的参数和返回值。例如ADO.NET DataSet,在.NET下它似乎是一个很受欢迎的对象,但不要使用它。推荐使用基于XML标准的通信,这样J2EE客户端也可以使用该Web Service。
2、没有有效地利用ASP.NET
.NET下开发的Web Servie是部署在ASP.NET上的,所以很多它们有共同的特性,最重要的2个是:Caching 和 SessionState。
Web Service可以使用2种类型的缓存。
一是WebMethod的输出缓存,指定CacheDuration即可,例如:
<WebMethod(CacheDuration:=120)> _
Public Function GetQuote() As Quote
二是应用程序缓存:
指定Web Service的SessionState:
当然也可以在客户端的Cookies记录SessionState
客户为了得到服务首先来请求你,所以要确定你提供的功能对客户是有价值的。
4、使用Web Service做数据访问
以Google提供的搜索服务为例,它给你的是你要的内容,而不是把它的所有数据给你。就是说Web Service的任务是处理客户的业务请求,而不是仅仅给它数据。
5、信任客户端应用程序
不能直接信任接收到的数据。
返回的数据需要保护。
审核客户身份是重要的但又常常被忽略的安全性问题。
没时间全部翻译,大概就这个意思,有错误请不吝指教!觉得这5条总结的还是很不错的。
1、使用.NET特有的类型
要避免使用.NET特有的类型作为Web Service的参数和返回值。例如ADO.NET DataSet,在.NET下它似乎是一个很受欢迎的对象,但不要使用它。推荐使用基于XML标准的通信,这样J2EE客户端也可以使用该Web Service。
2、没有有效地利用ASP.NET
.NET下开发的Web Servie是部署在ASP.NET上的,所以很多它们有共同的特性,最重要的2个是:Caching 和 SessionState。
Web Service可以使用2种类型的缓存。
一是WebMethod的输出缓存,指定CacheDuration即可,例如:
<WebMethod(CacheDuration:=120)> _
Public Function GetQuote() As Quote
二是应用程序缓存:
指定Web Service的SessionState:
当然也可以在客户端的Cookies记录SessionState
myService.CookieContainer = New System.Net.CookieContainer3、没有高效地有效地响应客户请求
客户为了得到服务首先来请求你,所以要确定你提供的功能对客户是有价值的。
4、使用Web Service做数据访问
以Google提供的搜索服务为例,它给你的是你要的内容,而不是把它的所有数据给你。就是说Web Service的任务是处理客户的业务请求,而不是仅仅给它数据。
5、信任客户端应用程序
不能直接信任接收到的数据。
返回的数据需要保护。
审核客户身份是重要的但又常常被忽略的安全性问题。