Several reasons. This approach hides the potentially unsafe SQL interface, hides direct access, authentication, and so on… More importantly, if hides the access to unwanted functionality, and more generally creates a
façade abstracting out database functionality. This façade can be very different from the usual SQL interface (or other database models), both general and specific to a particular database project. First of all, it can be totally
semantic, or
domain-oriented (meaning: application-field domain). During the evolution of the product/service, the database can be completely replaced which still will be completely not noticeable for the WCF interface users. Please see:
Facade pattern — Wikipedia, the free encyclopedia[
^].
Database layer and WCF layer become different
tiers. In other words, the benefits of this solution comes as the general benefits of
multitier architecture. Please see:
Multitier architecture — Wikipedia, the free encyclopedia[
^].
—SA