Why I love WSE 3.0

I have been using WSE 3.0 for a while now and I really like it.  I really like the policy mechanism in the WSE, it affords me a kind of AOP (aspect orientated programming) that I am really starting to get into.   For instance I have made a lot of SoapFilters recently, some handy, some just for tests, but each of them allow me to add an aspect of functionality into the webservice that I am creating in a configuration and not a design time.  If I want security, just add a policy line in the XML config, if I want auditing another line, if I want exception shielding another line.   All of these aspects of the system I am creating can be added at deployment time thus leaving my web service code clean and simple.

An example, pseudo code:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->[Webservice]public class OrderService{ [WebMethod] [Policy(ServerPolicy)] public OrderList SubmitOrders(OrderList input) { return OrderListRepository.InsertNewOrders(input); }}

And a policy file (not an actual file that would work in this example) would say:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/

--><Policy> <add type="Security" MustHaveRole="Add"/> <add type="Auditing" /> <add type="ExceptionSheilding" /></Policy>

This service code and policy file model is so much cleaner and simpler than what you would have to write if you didn't have an AOP style policy system:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/

-->[Webservice]public class OrderService{

[WebMethod] [Policy(ServerPolicy)] public OrderList SubmitOrders(OrderList input) { try { if(User.IsInRole("Add") && User.IsAuthenticated) { OrderListRepository.InsertNewOrders(input); Log.Audit(Success); } else { Log.Error(SecurityError); } } catch(RepositoryException ex) { throw SheildedException(ex, "Problem in Repository"); } catch(Exception ex) { throw SheildedException(ex, "Unkown Exception"); } }}

Now tell me which code you would like to maintain! :)

 

About Me: Paul Kinlan

I lead the Chrome Developer Relations team at Google.

We want people to have the best experience possible on the web without having to install a native app or produce content in a walled garden.

Our team tries to make it easier for developers to build on the web by supporting every Chrome release, creating great content to support developers on web.dev, contributing to MDN, helping to improve browser compatibility, and some of the best developer tools like Lighthouse, Workbox, Squoosh to name just a few.