Façade与Service的区别

 

对于调用者(比如Controller层)来说,FaçadeService没什么区别,都是业务逻辑的调用入口。但实现机制上来说,FaçadeService是有差别的。

Façade是很“薄”的一层,它本身并不实现业务逻辑,它只是负责根据外界的请求调用对应的业务逻辑类。

相对FaçadeService是很“厚”的一层。如果是事务脚本模式,它就完全实现了业务逻辑;如果使用领域模型,那么它负责组织跨领域模型的调用。但即使业务逻辑是由领域模型实现,Service本身也必然会使用事务脚本模式——因为Service的身份是“组织”业务逻辑的调用,而不是实现业务逻辑。Service会调用事务,这也是与Façade的区别之一。

 

有了Service层,还需要Façade层吗?

这个问题相当于:有了Domain Model还需要Service吗?从开发效率上考虑,Façade层是多余的。但在某些情况下Façade还是能起一些作用,比如WebService开发,需要在每个方法上标记WebMethod。如果直接在Service层的方法上使用WebMethod之类的专用Attribute,这意味着WebService框架对Service有侵入性(还好,Attribute的侵入性比继承要轻得多)。这个时候Façade就派上用场了。

posted @ 2009-09-10 00:36  深圳大漠  阅读(1494)  评论(0编辑  收藏  举报