andrewlocatelliwoodcock

Thoughts on Software

Shaver Framework API: ShaverViewEngine

with 4 comments


Following on from the last post, let’s start our discussion of the Shaver API with the Shaver View Engine itself:https://github.com/alfamale/Shaver/blob/master/ShaverViewEngine/ShaverViewEngine.cs.

There are a couple of things to note: firstly, ShaverViewEngine inherits from RazorViewEngine so that we can re-use and co-opt all the power of the Razor View Engine without re-inventing the wheel: Shaver is about doing unexpected, unenvisioned things with existing Razor syntax not developing a new syntax!

Secondly, there are only two methods: CreateView and CreateReturnView. CreateView overrides Razor’s implementation of the standard CreateView method and uses it to create an IView object which is then passed, along with the ControllerContext to the virtual method CreateReturnView. Custom View Engines that implement the Shaver framework can perform any custom tasks required within their own implementation of CreateReturnView: it is the output of CreateReturnView that is returned to MVC, not the output of CreateView as might be expected. We are letting Razor do the hard work here – it already does it really well, we just want to make it easy to do something different with the output!

CreateReturnView is the first extension point in our Shaver API.

Note also that Shaver itself provides no code to register custom view extensions: Shaver is an abstract View Engine and as such does not provide complete functionality only an API. As such, it makes no sense to attempt to register custom view extensions within the Shaver View Engine itself, this is a task for each concrete implementation such as LoggingViewEngine.

Shaver cannot in fact be used directly: note that it is an abstract class: we need a concrete implementation of the Shaver framework to instantiate – Shaver cannot and does not do the job on its own. Have a look at Logging View EngineMailer View Engine and PDF View Engine to see examples of how this is done.

Next: the Shaver API: ShaverView

Written by andrewlocatelliwoodcock

November 7, 2011 at 20:54

4 Responses

Subscribe to comments with RSS.

  1. […] let’s have a look at the Shaver API: ShaverViewEngine and ShaverView […]

  2. […] method CreateReturnView. Remember that CreateReturnView is an extension point in the Shaver API: Shaver overrides Razor’s implementation of the standard CreateView method and uses it to create an IView object […]

  3. … [Trackback]…

    […] Read More: andrewlocatelliwoodcock.com/2011/11/07/shaver-api-shaverviewengine/ […]…

    E-bike

    November 18, 2011 at 11:07

  4. Websites You Should Visit…

    […]very few websites that happen to be detailed below, from our point of view are undoubtedly well worth checking out[…]…

    Buy Facebook Fan

    December 20, 2011 at 16:14


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: