什麼情況下應該使用Web Service

2021-05-21 23:26:25 字數 2355 閱讀 8444

現在我將列舉三種情況,在這三種情況下,你將會發現使用web service會帶來極大的好處。此後,我還會舉出不應該使用web service的一些情況。

跨越防火牆的通訊

如果你的應用程式有成千上萬的使用者,而且他們都分布在世界各地,那麼客戶端和伺服器之間的通訊將是乙個棘手的問題。那是因為客戶端和伺服器之間通常都會有防火牆或者**伺服器。在這種情況下,你想使用dcom就不是那麼簡單了,而且,通常你也不願意把你的客戶端程式發布到如此龐大數量的每乙個使用者手中。於是,你最終選擇了用瀏覽器作為客戶端,寫下一堆asp頁面,把應用程式的中間層暴露給終端使用者。結果呢?運氣好的話,只是開發難度大了一些,運氣不好的話,就會得到乙個根本無法維護的應用程式。

想象一下你應該怎麼在你的應用程式裡面加入乙個新的頁面:你必須先建立好使用者介面(web頁面),以及在這個頁面後面,包含相應商業邏輯的中間層元件。這還不夠,你還要再建立至少乙個asp頁面,用來接受使用者輸入的資訊,呼叫中間層元件,把結果格式化為html形式,最後還要把"結果頁"送回瀏覽器。要是客戶端**不再如此依賴於html表單,客戶端的程式設計不就簡單多了嗎?還有,建立asp頁面的那一步可以省略掉嗎?

當然。如果你的中間層元件是web service的話,你完全可以從使用者介面直接呼叫中間層元件,從而省掉建立asp頁面的那一步。要呼叫web service,你可以直接使用microsoft soap toolkit或。net這樣的soap客戶端,也可以使用你自己開發的soap客戶端,然後把它和你的應用程式連線起來。這樣做,不僅可以縮短開發周期,還可以減少**的複雜度,並增強整個應用程式的可維護性。同時,你的應用程式也不再需要在每次呼叫中間層元件時,都跳轉到相應的"結果頁"了。

以我的經驗來看,在乙個使用者介面和中間層有較多互動的應用程式中,使用web service這種結構,可以輕鬆的節省花在使用者介面程式設計上的20%的開發時間。這樣做還有另乙個好處,就是你將得到乙個由web service組成的中間層,這一層是完全可以在應用程式整合或其他場合下被重用的。最後,通過web service把你的應用程式的邏輯和資料暴露出來,還可以讓其它平台上的客戶重用你的應用程式。

應用程式整合

企業級的應用程式開發者都知道,企業裡經常都要把用不同語言寫成的在不同平台上執行的各種程式整合起來,而這種整合將花費很大的開發的力量。你的應用程式經常都需要從執行在古老的ibm主機上的程式中獲取資料; 或者再把資料傳送到主機或unix應用程式中去。即使是在同乙個平台上,不同的軟體廠商生產的各種軟體也常常需要整合起來。通過web service,應用程式可以用標準的方法把功能和資料暴露出來,供其它的應用程式使用。

例如,你有乙個訂單登入程式,用於登入從客戶來的新訂單,包括客戶資訊、發貨位址、數量、**和付款方式等資訊。同時,你還有乙個訂單執行程式,用於實際貨物傳送的管理。這兩個程式是來自不同軟體廠商的。乙份新訂單進來之後,訂單登入程式需要通知訂單執行程式傳送貨物。通過在訂單執行程式上面增加一層web service,訂單執行程式可以把"addorder"函式暴露出來。這樣,每當有新訂單到來時,訂單登入程式就可以呼叫這個函式來傳送貨物了。進而通過web service整合應用程式

b2b的整合

用web service整合應用程式,可以使你公司內部的商務處理更加自動化。但當交易跨越了你的**商和客戶,突破了公司的界線時又會怎麼樣呢?跨公司的商務交易整合通常叫做b2b整合。

web service是b2b整合成功的關鍵。通過web service,你的公司可以把關鍵的商務應用暴露給指定的**商和客戶。例如,把你的電子下單系統和電子發票系統暴露出來,你的客戶就可以以電子的方式向你傳送購貨訂單,而你的**商則可以以電子的方式把原料採購的發票傳送給你。當然,這並不是乙個新的概念:電子文件交換(edi)早就是這樣了。web service和edi之間的主要區別在於,web service的實現要比edi簡單得多,而且web service是執行在internet上的,在世界任何地方都可輕易實現,這樣其執行成本就相對較低。不過,web service並不像edi那樣,是文件交換或b2b整合的一套完整的解決方案。web service只是b2b整合的乙個關鍵部分,還需要許多其它的部分才能完成這個整合。

用web service來實現b2b整合的最大好處在於可以輕易實現互操作性。只要把你的商務邏輯暴露出來,成為web service,你就可以讓任何指定的合作夥伴輕鬆的呼叫你的商務邏輯,而不管他們的系統在什麼平台上執行,使用的是什麼開發語言。這樣就大大減少了花在b2b整合的上的時間和成本。這樣的低成本讓許多原本無法承受edi的投資成本的中小企業也能實現b2b整合。

軟體重用

軟體重用是乙個很大的主題,它有很多的形式和程度。最基本的形式是源**模組或者類一級的重用。另一種形式是二進位制形式的元件重用。當前,像**控制項或使用者介面控制項這樣的可重用軟體元件在市場上都占有很大的份額。但這類軟體的重用都有乙個很嚴重的限制:重用僅限於**,而資料不能被重用。原因在於你可以很輕易的發布元件甚至源**,但要發布資料就沒那麼容易了,除非那些資料都是不會經常變化的靜態資料。

什麼情況下用遞迴?

遞迴的特點,可以看出遞迴可以大大縮短程式的 有意識的使用遞迴,可以用較短的 解決一些複雜的問題。甚至有些問題非得使用遞迴解決不可。那麼什麼時候我們該使用遞迴呢?遞迴演算法的 基本思想 是 把規模大的 較難解決的問題變成規模較小的 易解決的同一問題。規模較小的問題又變成規模更小的問題,並且小到一定程度...

layoutSubviews在什麼情況下呼叫

1.在以下情況都會呼叫 注意 當view的size的值為0的時候,addsubview也不會呼叫layoutsubviews。當要給這個view新增子控制項的時候不管他的size有沒有值都會呼叫 2.先來看一下uiview的layoutsubviews在什麼情況下會呼叫 subview view s...

socket什麼情況下可讀

一 下列四個條件中的任何乙個滿足時,socket準備好讀 1.socket接收緩衝區中已經接收的資料的位元組數大於等於socket接收緩衝區低潮限度的當前值 對這樣的socket的讀操作不會阻塞,並返回乙個大於0的值 即 準備好讀入的資料的位元組數 我們可以用socket選項so rcvlowat來...