

New routing framework for .NET - visualcsharp
http://projects.nathanalden.com/JuniorRoute/

======
vyrotek
Nice work! I'm literally sitting here working on some routes for my MVC4
project right now. Are you familiar with the AttributeRouting project? I'm
curious to learn about what makes yours special.

<http://attributerouting.net>

<https://github.com/mccalltd/AttributeRouting>

~~~
visualcsharp
Thanks for making me aware of the AttributeRouting project; I had not heard of
it before.

From quickly reading about AttributeRouting, the biggest difference between it
and JuniorRoute is that AttributeRouting apparently sits on top of the ASP.NET
MVC framework and Web API--both of those technologies are flawed, in my
opinion. JuniorRoute does not; instead, JuniorRoute hooks directly into the
ASP.net pipeline and does not reference a single ASP.NET MVC binary.

When I set out building this, I was determined to provide a solution that
implemented routing in an HTTP-centric way, not the controller-centric way
that ASP.NET MVC does. I think I've managed to accomplish this but I'm only
one man and my opinion is, of course, biased. :)

The AttributeRouting project has it right with regards to attributes, but the
project's foundation--ASP.NET MVC--is still flawed.

Some developers scoff at the use of attributes because they view attributes as
magic. In my experience, attributes are a great way to implement the
convention-over-configuration paradigm, but purists may choose to rely on
other mechanisms for generating routes. I was sure to design the framework
such that both camps--the pragmatists and the purists--could be made happy.

JuniorRoute provides built-in conventions that use endpoint namespaces, class
names and method names to generate routes (this is similar to FubuMVC). The
great thing is, developers can very easily extend JuniorRoute and create their
own convention implementations if the built-in ones are insufficient.

Another way JuniorRoute differs from AttributeRouting is much of JuniorRoute's
source code implements the HTTP 1.1 specification directly. For example,
JuniorRoute's CacheableResponseHandler class handles prevalidation headers
(the If-* headers). Obviously, JuniorRoute is open-source so anyone can look
at the class and determine how it does that or implement their own response
handler that follows the specification in a different way. ASP.NET MVC tends
to hide things like that. I wanted developers to be able to choose from a
stock of built-in conventions providing implementations of the most common
scenarios but still have the extensibility just in case JuniorRoute doesn't
cover something they need.

There are very few classes in JuniorRoute that do not implement interfaces. I
designed the framework to be nearly completely extensible while still keeping
bootstrapping code and configuration to a minimum. One of my biggest goals is
to keep the amount of time between bootstrapping and writing endpoint methods
to a minimum. I will be releasing Visual Studio project templates to make
initial bootstrapping even simpler; right now, there are a lot of manual steps
because one must begin with the ASP.NET Empty Web Application template.

------
visualcsharp
Just now, I finished creating Visual Studio project templates to streamline
the bootstrapping process. It's now down to just three steps! Microsoft's done
a great job with the Extensions gallery. There were a couple of snags with
VSIX but no big problems.

The updated quick-start can be viewed at
[http://projects.nathanalden.com/JuniorRoute/documentation/1....](http://projects.nathanalden.com/JuniorRoute/documentation/1.0/quick_start.html).

------
visualcsharp
Hi, folks, author here. I'd love to answer any questions you may have about
JuniorRoute. Even though I just released it yesterday, I believe it could go
pretty far to solve some of the challenges the .NET community is facing right
now with regards to good Web frameworks.

