The only real problem I have ever encountered was to expose data through an ASMX-based web service, and came up with all the methods needed to efficiently collect data. It is sometimes difficult to maintain discipline regarding the level between the application and the database.
If you are deploying Intranet with AD, Integrated Windows Authentication is a great way to control who can and cannot interact with the service. It is useful to group service classes by customer role, so permissions can be declaratively managed in Web.config . I try to store read methods in a different service class than implement update and delete methods.
Avoid frequent service calls. Of course, it is good to avoid frequent database calls in a two-tier system, but you will pay the driver for frequent calls when you increase the number of levels. Choose to send large objects. For example, if you have a table with several search queries, sending an object through postings with previously viewed values will often save you a second or third call and should not cause excessive system load.
I hope these ideas help.
kbrimington
source share