使用單一界面的WebService做各種功能

摘要:使用單一界面的WebService做各種功能

做專案的時候遇到這樣的需求,希望WebService端只公開一個方法,然後用類似EJB的方式來運作,

以自己的想法來思考這樣的問題,

會希望這個方法接收一個Bean物件,並回傳一個Bean物件當作結果,

設計上,做了一個參數Bean類別和一個回傳Bean類別,

然後讓每個功能去繼承這兩個類別做出屬於自己的參數及回傳值,

這樣的話,使用WebService的程式需要知道該傳出的參數Bean定義及回傳的Bean定義,

這一點可以利用XmlIncludeAttribute來達成公開到WSDL中,

這樣產生的WSDL就會包含所需的Bean定義,

因為是單一個方法需要處理各種不同的需求,

所以將參數Bean定義成像Command Pattern的模式,

這樣就能讓執行的程式碼簡單許多,

不過使用端就辛苦多了,必須知道參數的定義,回傳值也需要做轉型,

實際上來說,我感覺EJB所簡化的是介面上的定義,使得介面可以單一化、容易定義而節省花費在介面定義上的時間,

如果WebService的Proxy需要手工制作的話,這樣的架構還真的蠻方便的,不用一直去修改proxy的程式碼,

不過,在.NET中,WebService的Proxy可以輕易產生,

不知道這樣做還有沒有其他的效益…