Presentation is loading. Please wait.

Presentation is loading. Please wait.

Brian Noyes Chief Architect IDesign Inc (www.idesign.net)www.idesign.net Session Code: SOA 305.

Similar presentations


Presentation on theme: "Brian Noyes Chief Architect IDesign Inc (www.idesign.net)www.idesign.net Session Code: SOA 305."— Presentation transcript:

1

2 Brian Noyes Chief Architect IDesign Inc (www.idesign.net)www.idesign.net Session Code: SOA 305

3 Chief Architect IDesign Inc. (www.idesign.net) Microsoft Regional Director MVP Microsoft MVP Connected Systems About Brian Publishing Developing Applications with Windows Workflow Foundation, LiveLessons training DVD, June 2007 Smart Client Deployment with ClickOnce, Addison Wesley, January 2007 Data Binding in Windows Forms 2.0, Addison Wesley, January 2006 MSDN Magazine, MSDN Online, CoDe Magazine, The Server Side.NET, asp.netPRO, Visual Studio Magazine Speaking Microsoft TechEd US, Europe, Malaysia, Visual Studio Connections, DevTeach, INETA Speakers Bureau, MSDN Webcasts E-mail:brian.noyes@idesign.netbrian.noyes@idesign.net Blog:http://briannoyes.nethttp://briannoyes.net

4 Agenda Service Best Practices Client Best Practices Data Contracts SOAP vs REST

5 Service Definition Separate contract from implementation Contract (interface) first Define services in a class library, not directly in a host project Layering Separate Service Layer? Instance model Change to Per Call as default Session / Singleton when?

6 Instance Model Brian Noyes Chief Architect IDesign Inc

7 Service Exception Handling For operation specific exceptions Try/catch, throw FaultException Favor using FaultException FaultException can be ambiguous to the client because unhandled exceptions arrive as a FaultException Include FaultContract in service contract definition if you throw FaultExceptions Part of the API you are exposing For global exception handling from services Use an error handler Include exception details in debug builds only

8 Exceptions Brian Noyes Chief Architect IDesign Inc

9 Service Security Intranet services Default Windows Auth may be all you need Possibly Hybrid – Windows Creds / Custom Application Roles Extranet / Internet / Custom security needs Use ASP.NET Membership / Role providers ASP.NET providers Really a standard.NET framework security infrastructure Built in providers for Windows or SQL Server – based credentials / roles Easy to implement custom providers Establish principal on the thread Re-usable across ASP.NET, WCF, WPF & Windows Forms (via Client Application Services)

10 Security Brian Noyes Chief Architect IDesign Inc

11 Service Hosting Favor WAS Hosting when Server 2008 is an option Multiple protocol support IIS Hosting model and tools Favor IIS for external HTTP only services Better on-box scalability / availability through worker process model Better management tools Favor self-hosting for stateful services, callbacks,.NET Service Bus, debugging Have a console-based debug self-host for development time Can be a Windows Service project that is used for production self-hosting with a mode switch for debugging Consider Dublin hosting in the future

12 Self Host Code Do not put ServiceHost in a using statement Dispose can throw an exception that masks the real exception thrown from Open call Explicitly call Close in try/catch, log/ deal with exception in catch

13 Self-Host Brian Noyes Chief Architect IDesign Inc

14 Agenda Service Best Practices Client Best Practices Data Contracts SOAP vs REST

15 Client Proxy Classes Favor static proxy class over ChannelFactory Connection caching in the base class in 3.5 Place for encapsulation of common patterns Hand-code or micro-code generate proxy classes for internal services Less bloated code Share service contract and data contracts through libraries Explicit control over config file

16 Client Proxies Brian Noyes Chief Architect IDesign Inc

17 Client Proxy Classes Add Service Reference for external services or when you want an async API on the client Clean up config after it destroys it Make sure to add references to data contract libraries before adding the service reference to avoid duplicate definitions Live with the duplicate service contract definition instead of needing to repeatedly clean up the proxy code

18 Add Service Reference Brian Noyes Chief Architect IDesign Inc

19 Client Proxy Management Cache client proxies if frequent calls to avoid session establishment cost If secure / reliable session enabled Have to deal more cautiously with faulted proxies Check proxy state before using Get rid of proxy after exception Don’t put proxies in a using statement Dispose call might throw exception and mask real exception Explicitly close in a try/catch block, and if Close throws an exception, Abort the proxy to ensure resource clean up

20 Proxy Caching Brian Noyes Chief Architect IDesign Inc

21 Client Exception Management All exceptions thrown from a service call derive from CommunicationException FaultException could be wrapped unhandled exception on the client, or explicit error returned from the service FaultException always an explicit error returned from the service Simple approach: Any exception from a proxy call, safe close the proxy Advanced approach: FaultException - proxy is reusable

22 Client Exceptions Brian Noyes Chief Architect IDesign Inc

23 Agenda Service Best Practices Client Best Practices Data Contracts SOAP vs REST

24 Data Contracts Favor data contracts over serializable types More explicit model, better control over what the client sees Implement IExtensibleDataObject Avoids dropping data that the service / client does not understand Avoid passing complex.NET specific types for interoperable services DataSets and Exception types

25 Data Contracts Avoid XmlSerializer and MessageContracts except for interoperable scenarios and REST services

26 Data Contracts Brian Noyes Chief Architect IDesign Inc

27 Agenda Service Best Practices Client Best Practices Data Contracts SOAP vs REST

28 Favor SOAP services when you are writing a service that only your code will consume Favor REST services for publicly exposed, data oriented services

29 Resources IDesign WCF Master Class IDesign WCF Coding Standard – http://www.idesign.nethttp://www.idesign.net Programming WCF, Juval Lowy, O’Reilly & Associates, 2007 Learning WCF, Michele Leroux Bustamante, O’Reilly & Associates, 2007 Connect Apps with WCF, Brian Noyes, Visual Studio Magazine, Feb 2008, http://visualstudiomagazine.com/articles/2008/02/01/connect-apps-with- wcf.aspx?sc_lang=en http://visualstudiomagazine.com/articles/2008/02/01/connect-apps-with- wcf.aspx?sc_lang=en Wenlong Dong’s Blog: http://blogs.msdn.com/wenlong/default.aspxhttp://blogs.msdn.com/wenlong/default.aspx E-mail: brian.noyes@idesign.netbrian.noyes@idesign.net Blog: http://briannoyes.nethttp://briannoyes.net

30

31 Required Slide Complete a session evaluation and enter to win! 10 pairs of MP3 sunglasses to be won

32 © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. Required Slide


Download ppt "Brian Noyes Chief Architect IDesign Inc (www.idesign.net)www.idesign.net Session Code: SOA 305."

Similar presentations


Ads by Google