WCF 的使用與經(jīng)驗(yàn)總結(jié)
發(fā)表時(shí)間:2023-09-12 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在項(xiàng)目設(shè)計(jì)之初沒有考慮到網(wǎng)絡(luò)安全因素,因?yàn)樵趶V達(dá)都是基于內(nèi)網(wǎng)開發(fā)所以不用考慮網(wǎng)絡(luò)安全,但現(xiàn)在我們的服務(wù)器都放在公網(wǎng)上,數(shù)據(jù)庫和網(wǎng)站是在不同的server上,而且數(shù)據(jù)庫只能由網(wǎng)站一臺server能夠訪問,這樣我寫的一些客戶端程序就不能使用了(客戶端是直連數(shù)據(jù)庫的),為了適應(yīng)這種變化不得不改寫之前的程...
在項(xiàng)目設(shè)計(jì)之初沒有考慮到網(wǎng)絡(luò)安全因素,因?yàn)樵趶V達(dá)都是基于內(nèi)網(wǎng)開發(fā)所以不用考慮網(wǎng)絡(luò)安全,但現(xiàn)在我們的服務(wù)器都放在公網(wǎng)上,數(shù)據(jù)庫和網(wǎng)站是在不同的server上,而且數(shù)據(jù)庫只能由網(wǎng)站一臺server能夠訪問,這樣我寫的一些客戶端程序就不能使用了(客戶端是直連數(shù)據(jù)庫的),為了適應(yīng)這種變化不得不改寫之前的程式,值得慶幸的是我的程序時(shí)采用三層架構(gòu),所以只需要再寫一個server 端專門來處理數(shù)據(jù)得讀寫就可以了,也就是把數(shù)據(jù)層拿出來作為服務(wù)器端。
開始有想過用web service,但是發(fā)現(xiàn)web service 效率太低,現(xiàn)在微軟大力推薦用WCF,我測試了一下發(fā)現(xiàn)效率確實(shí)很高,正好也可以學(xué)習(xí)一下,服務(wù)器端就采用wcf通信,試用window service 來提供服務(wù),作為宿主,當(dāng)然你也可以選擇其它的宿主。在設(shè)計(jì)的時(shí)候遇到很多問題,現(xiàn)做一個簡單的總結(jié),希望能給你們帶來點(diǎn)幫助。
1. 在服務(wù)器與客戶端進(jìn)行數(shù)據(jù)交換,我個人喜歡用DataTable,發(fā)現(xiàn)在傳送的發(fā)現(xiàn)不能使用,提示不能序列化,在網(wǎng)上找好多才發(fā)現(xiàn),一定要給DataTable賦一個名字。
2. DataTable數(shù)據(jù)量比較大的時(shí)候發(fā)現(xiàn)會報(bào)錯,提示timeout,查找資料發(fā)現(xiàn)可以修改客戶端配置文件來修改接收的數(shù)據(jù)大小
maxReceivedMessageSize="6553600", <serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />
3. 我采用的是TCP通信,所以如果防火墻開啟就會阻止其通信,可以在防火墻中添加例外,或是添加端口例外。
4. WCF可以傳送對象,這一點(diǎn)非常好,但不是所有的對象都能傳輸,只有能夠序列化的對象才能夠傳輸,至于怎么序列化可以參照我上次發(fā)的文檔,里面有詳細(xì)的介紹。
5. 在客戶端引用該服務(wù)的時(shí)候盡量不要去改服務(wù)的IP,可以在配置文件里修改,開始引用的是什么就什么可以現(xiàn)在本地測試好,就可以直接部署到服務(wù)器上,如果不夠熟練的話會發(fā)生許多奇怪的問題。
常見的網(wǎng)絡(luò)操作系統(tǒng)有UNIX、Netware、Windows NT、Linux等,網(wǎng)絡(luò)軟件的漏洞及缺陷被利用,使網(wǎng)絡(luò)遭到入侵和破壞。