I have a small and quick question regarding EPiServer: does exist any built-in logging mechanism to know what user has done what action in either the administration or the front web? Or I have to implement these mechanisms myself?
I have not tried it for edit and admin, but I think you might be after something like this.
For logged in users doing changes to content you can check out the change log. It's housed in the admin mode of the CMS and you can also access it programatically.
For the website itself I recommend using log4net to do logging and put it in your service layer.
Bonus point for extracting auditing/logging to a separate decorator which would be the cleanest solution. If you are feeling really fancy and have pretty high lvl of knowledge in your company, you might actually use aspect oriented programming and create an interceptor class to handle this. Then it would be possible to solve logging / auditing for the entire solution with just a few lines of code. AOP is really good for solving cross cutting concerns like auditing on a website.