日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

一些Web Service的经验

發(fā)布時(shí)間:2025/3/8 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一些Web Service的经验 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用Web服務(wù)也有半年多了,雖然時(shí)間不長(zhǎng),但還是遇到了不少難題,在這里把我的一些經(jīng)驗(yàn)?zāi)贸鰜?lái)給大家共同分享。

剛開(kāi)始做Web服務(wù)的時(shí)候還覺(jué)得很輕松,感覺(jué)就跟寫(xiě)一般的組件沒(méi)什么區(qū)別,而使用時(shí)跟引用普通的程序集一樣的簡(jiǎn)單,這是因?yàn)閂isual Studio替我們完成了許多不必要的繁瑣的工作。雖然如此,但是很容易造成我們的過(guò)分依賴,而忽略了Web服務(wù)發(fā)布和消費(fèi)的內(nèi)部工作機(jī)制。但隨著開(kāi)發(fā)的深入,越來(lái)越多的問(wèn)題擺到了我的面前,大概有以下幾個(gè):

1.? 動(dòng)態(tài)url地址的配置

在消費(fèi)Web服務(wù)時(shí),最初都是直接引用靜態(tài)Url地址,后來(lái)發(fā)現(xiàn)當(dāng)Web服務(wù)生產(chǎn)方的地址有所變化時(shí),我的客戶端消費(fèi)程序(此程序也可能是消費(fèi)Web服務(wù)的Web應(yīng)用程序服務(wù)端)必須要重新更新Web服務(wù),這樣就會(huì)增大程序部署的難度。為了使消費(fèi)程序更加靈活,于是我就在web.config中加入了一段appSettings的配置信息,將需要修改的Url放入此段配置中,然后打開(kāi)在asp.net1.1工程中引用最初的靜態(tài)Web服務(wù)地址時(shí)自動(dòng)生成的代理類文件(通常是/Web References/’web服務(wù)名’/Reference.cs),將this.URL屬性修改為從配置文件中讀取剛配好的Url信息,如:

web.config :

<appSettings><add key="URL_AccountVerifyForWebservice" value="http://eai.ibss:9001/VerifyWebService//xxx.jws"/></appSettings>

Reference.cs :

public class AccountVerifyForWebservice : System.Web.Services.Protocols.SoapHttpClientProtocol {public AccountVerifyForWebservice() {this.Url = ConfigurationSettings.AppSettings["URL_AccountVerifyForWebservice"];}.}

這樣就降低了部署難度,因?yàn)樵?span lang="en-us">Web服務(wù)地址改變后,你不需要在開(kāi)發(fā)環(huán)境中更新消費(fèi)程序然后再重新部署到客戶端,而只需修改客戶端的web.config文件內(nèi)容就可以了,你甚至還可以自己配置一個(gè)xml文件來(lái)列舉所有可能的url地址,然后在代理類中枚舉這些地址列表即可。

?

2.? DNS解析問(wèn)題

在一個(gè)項(xiàng)目中與Weblogic打交道,需要我的aspnet應(yīng)用程序消費(fèi)對(duì)方提供的web服務(wù),雖然我很順利的完成了Web引用,即通過(guò)disco發(fā)現(xiàn)了Web服務(wù),自動(dòng)下載了wsdl文件,并生成了代理類文件,也正常通過(guò)了編譯,但是在運(yùn)行時(shí)一旦開(kāi)始invoke此web服務(wù)就會(huì)報(bào)錯(cuò),仔細(xì)檢查了代理類一切正常,很納悶搞不懂為什么。后來(lái)有同事告訴我可能是DNS的原因,我這才知道Web服務(wù)的生產(chǎn)環(huán)境上建立了負(fù)載平衡,而其提供的DNS服務(wù)器負(fù)責(zé)將http://eai.ibss:9001/VerifyWebService/.../xxx?.jws這樣的以域名地址動(dòng)態(tài)的解析到所有提供Web服務(wù)的負(fù)載平衡服務(wù)器上,部署環(huán)境中的機(jī)器都可以通過(guò)此DNS訪問(wèn)web服務(wù)。一開(kāi)始,服務(wù)發(fā)布方提供給我的只是其中一臺(tái)固定Web服務(wù)器的靜態(tài)ip地址(如http://192.168.0.1:9001/VerifyWebService/.../xxx?.jws),而wsdl文檔中描述的soap調(diào)用地址是域名地址,引用時(shí)自動(dòng)生成的代理類的Url屬性自然就是域名地址了,而我的開(kāi)發(fā)環(huán)境不能夠訪問(wèn)DNS服務(wù)器,也就不能解析域名地址,所以在運(yùn)行時(shí)會(huì)抱錯(cuò),因?yàn)閟oap信息根本就沒(méi)有發(fā)送到正確的Web服務(wù)器上去。這種開(kāi)發(fā),生產(chǎn)和部署環(huán)境的不同有時(shí)是非常令人頭痛的~~

后來(lái)通過(guò)采用第一個(gè)問(wèn)題中介紹的配置文件的解決方案就很有效地解決了目前這個(gè)問(wèn)題,開(kāi)發(fā)調(diào)試時(shí)使用靜態(tài)地址,部署時(shí)更換為域名地址即可。

?

3.? Web服務(wù)和Web應(yīng)用程序的分離

最好不要在同一臺(tái)生產(chǎn)服務(wù)器上同時(shí)部署web服務(wù)和消費(fèi)此web服務(wù)的web應(yīng)用程序,這樣會(huì)造成不必要的性能瓶頸。當(dāng)客戶端請(qǐng)求一個(gè)web應(yīng)用程序的某個(gè)頁(yè)面時(shí),服務(wù)器將占用一個(gè)http連接,同時(shí)當(dāng)該頁(yè)的生成或某個(gè)事件被觸發(fā)時(shí)需要同步調(diào)用一個(gè)web服務(wù),那么此時(shí)該服務(wù)器將增加一個(gè)http連接的占用,也就是說(shuō)用戶請(qǐng)求一次頁(yè)面有可能會(huì)在服務(wù)器上同時(shí)造成兩個(gè)http連接,若服務(wù)器本身的http連接數(shù)為1000個(gè)的話那么可能的實(shí)際用戶連接數(shù)只有500個(gè)。

?

4.? 避免使用非string型數(shù)據(jù)

盡量避免在Web服務(wù)中使用非string型的數(shù)據(jù)作為Web方法的參數(shù)或返回值,因?yàn)镴ava或者別的消費(fèi)客戶端可能并不能夠正常解析int或arraylist這樣的數(shù)據(jù)類型,而string型幾乎是最通用的數(shù)據(jù)類型,至少與java能夠正常交互。盡量不要提供DataSet這樣的復(fù)雜數(shù)據(jù)類型,盡管網(wǎng)上已有許多解決方案,但我感覺(jué)都挺麻煩的,還不如將DataSet直接輸出到一個(gè)二維string型數(shù)組中。

轉(zhuǎn)載于:https://www.cnblogs.com/zengsong-restService/archive/2013/01/04/2843725.html

總結(jié)

以上是生活随笔為你收集整理的一些Web Service的经验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。