摘要:使用單一界面的WebService做各種功能
做專案的時候遇到這樣的需求,希望WebService端只公開一個方法,然後用類似EJB的方式來運作,
以自己的想法來思考這樣的問題,
會希望這個方法接收一個Bean物件,並回傳一個Bean物件當作結果,
設計上,做了一個參數Bean類別和一個回傳Bean類別,
然後讓每個功能去繼承這兩個類別做出屬於自己的參數及回傳值,
這樣的話,使用WebService的程式需要知道該傳出的參數Bean定義及回傳的Bean定義,
這一點可以利用XmlIncludeAttribute來達成公開到WSDL中,
這樣產生的WSDL就會包含所需的Bean定義,
因為是單一個方法需要處理各種不同的需求,
所以將參數Bean定義成像Command Pattern的模式,
這樣就能讓執行的程式碼簡單許多,
不過使用端就辛苦多了,必須知道參數的定義,回傳值也需要做轉型,
實際上來說,我感覺EJB所簡化的是介面上的定義,使得介面可以單一化、容易定義而節省花費在介面定義上的時間,
如果WebService的Proxy需要手工制作的話,這樣的架構還真的蠻方便的,不用一直去修改proxy的程式碼,
不過,在.NET中,WebService的Proxy可以輕易產生,
不知道這樣做還有沒有其他的效益…