Business layer as a WCF service?
-
I was recently asked to comment on a design where the architect has proposed that the entire business layer be exposed as a WCF[^] service to the presentation layer (a web app). The motivation apparently, is to make the business layer accessible to 3rd party applications. The idea is to expose a TCP/IP binary end point from the service that will be accessed from the web app and a SOAP end point meant to be used by 3rd party apps. What do you folks think about this approach? Certainly, the WCF service would need to be load balanced[^] as otherwise its just going to be a bottle-neck as the app scales. Secondly, does it make sense to shield the WCF stuff from the web app via a facade layer? Maybe provide a proxy implementation for the business layer interfaces that simply forwards the call to the WCF service and hook it up to the web app using an IoC[^] framework? Thanks!
-- gleat http://blogorama.nerdworks.in[^] --
Once we figured out that taking our shoes and socks off would double our counting ability the technical glitch was quickly rectified.
-- Chris Maunder, from the CP newsletter
-
I was recently asked to comment on a design where the architect has proposed that the entire business layer be exposed as a WCF[^] service to the presentation layer (a web app). The motivation apparently, is to make the business layer accessible to 3rd party applications. The idea is to expose a TCP/IP binary end point from the service that will be accessed from the web app and a SOAP end point meant to be used by 3rd party apps. What do you folks think about this approach? Certainly, the WCF service would need to be load balanced[^] as otherwise its just going to be a bottle-neck as the app scales. Secondly, does it make sense to shield the WCF stuff from the web app via a facade layer? Maybe provide a proxy implementation for the business layer interfaces that simply forwards the call to the WCF service and hook it up to the web app using an IoC[^] framework? Thanks!
-- gleat http://blogorama.nerdworks.in[^] --
Once we figured out that taking our shoes and socks off would double our counting ability the technical glitch was quickly rectified.
-- Chris Maunder, from the CP newsletter
A large reason for using WCF is to enforce and enable your applications to offer services via SOA. If it makes sense for the whole of your application to be exposed as a service, then this is a good idea. I find that people typically go OTT with WCF (and Web Services), by exposing absolutely everything or by needlessly making their code run as a service where it makes more sense to run the code in-process.
Deja View - the feeling that you've seen this post before.
-
I was recently asked to comment on a design where the architect has proposed that the entire business layer be exposed as a WCF[^] service to the presentation layer (a web app). The motivation apparently, is to make the business layer accessible to 3rd party applications. The idea is to expose a TCP/IP binary end point from the service that will be accessed from the web app and a SOAP end point meant to be used by 3rd party apps. What do you folks think about this approach? Certainly, the WCF service would need to be load balanced[^] as otherwise its just going to be a bottle-neck as the app scales. Secondly, does it make sense to shield the WCF stuff from the web app via a facade layer? Maybe provide a proxy implementation for the business layer interfaces that simply forwards the call to the WCF service and hook it up to the web app using an IoC[^] framework? Thanks!
-- gleat http://blogorama.nerdworks.in[^] --
Once we figured out that taking our shoes and socks off would double our counting ability the technical glitch was quickly rectified.
-- Chris Maunder, from the CP newsletter
gleat wrote:
does it make sense to shield the WCF stuff from the web app via a facade layer?
Absolutely, imho. The web app (or any client) shouldn't need to use WCF semantics or any other service implementation dependencies. This allows (1) easier construction of mock objects for client side testing and (2) replacement of the backend API (if needed) without having your clients retool their code. /ravi
My new year resolution: 2048 x 1536 Home | Music | Articles | Freeware ravib(at)ravib(dot)com