From a fronted development perspective, Bifrost is taking on this latter part. Traditionally one would compose the resulting web page that is handed over to the client on the server. Multiple solutions exist out there for doing so, and specifically in the .net space, ASP.net and its derivatives are the most popular ones. Rendering, as this is often referred to, adds an extra load onto the server – not only is the server responsible for dealing with the request from the user, wether it is getting data or performing an action, but it also has to transform the result into something the client can show. On top of all this, it has to deal with security. This pattern is a very proven pattern, but in my opinion not the pattern we want to be doing moving forward, and therefor Bifrost will focus on a different pattern. Sure, Bifrost will not only be compatible, but also support out of the box the traditional route – but for now in an opinionated fashion by only supporting ASP.net MVC. The technique that Bifrost will be focusing in on is the Single Page Applications, were you basically hand over the “rendering” to the client and let the client compose the page by swapping in and out elements at runtime. This is in fact nothing new, ever since AJAX became the big thing, we’ve pretty much been doing this – but only for parts at a time and even letting parts of our page be swapped out for new versions being rendered by the server dynamically.
Bifrost will have a composition technique that is based on, as most things in the framework, conventions. The focus will be on Features and one can point to a feature simply by adding a <div/> tag and give it the attribute data-feature=”[name of feature]”. Based on the configurable convention, Bifrost will find the necessary files representing the feature. Looking at the page from Geekrider as it is at the time of writing this post, we’ll have the following.
Summarizing, Geekrider will be the proof of concept for features added to Balder and Bifrost – driving forward with new thoughts and ideas. I will try to blog about the progress as much as my schedule can permit. This means I should keep myself from playing around or doing unnecessary stuff.
4 thoughts on “GeekRider – the goal, technical perspective”
Exciting times. Moving away from the traditional server-side rendering of websites is still somewhat new to .net devs, yet it’s been "the way" of doing things for other platforms.
Just have a look at what ruby and php developers have been doing the past few years.
Looking forward to the continuation.. 🙂
Interesting thoughts, Einar, you are inspiring! And you push forward constantly, while others grow contented 🙂 A single page web application made with Bifrost would make for a great native phone app with a little PhoneGap magic.
Just one concern, how would you handle user specific features with the "data-feature" tagged DIVs approach? Where are authorization/customization rules enforced?
Thanks a lot. My head is not built for status quo 🙂
Anywho. The security aspect of it needs to be enforced on the server side when it comes to executing behavior or displaying data. As for the pages on the client side, I’m not sure its worth doing anything to them in terms of security, as they really are useless without the data and/or behavior part living on the server.
What I like about the model is the simplicity, very little dependencies – in fact, I can sit and create my application without anything running on the server side and just work with a mock server living only on the client. If one formalizes the mock part for the client, you could easily have generic handlers and rapidly let one create mockups that are interactive.
These are indeed very exciting times, and there is a lot happening in the Web space these days. A lot of the success that the Ruby platform has had is something that I see as something we can easily do in the .net space, its just about embracing certain mindsets. Conventions are truly big in the Ruby space, and are to some extend being adopted in the .net world. This is in my opinion one of the biggest advantages that Bifrost has – its extreme focus on this point. But there is still much to be desired and I think we’ve scratched the surface of what we can do.
Synergy FTW! 🙂