1) Microframeworks are lightweight frameworks that only handle core tasks like routing and sessions, giving developers freedom over components, patterns, and conventions.
2) In contrast, full-stack frameworks like Rails are more rigid since they enforce certain development philosophies and replacing core components requires more work.
3) For small projects, microframeworks keep code small since only necessary components are included, whereas full-stack frameworks start at a larger size and grow from there.
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Why you should consider a microframework for your next web project
1. Why you should
consider a microframework
for your next web project
by Joaquín Muñoz, age 24 and two thirds.
@Chekosoft | github.com/Chekosoft
2. A good web framework
is a good companion
because it speeds up development (a lot)
How?
They implement and/or simplify most of the tedious tasks and boilerplate.
● Data manipulation
● Templating
● Security
● Session management
● {insert a tedious but necessary task to do}
6. Why are they rigid?
● Strict adherence to a set of development
patterns/philosophies/principles.
● If you want to replace one core component, additional work
must be done.
● When a core component is replaced, some “magic” is gone with
it. And replacement magic isn’t as good as the default one.
● Implementing your own magic/extensions/etc require from little
modification to mashing your head on the table.
(the previous statements may not apply to some frameworks)
7. But they’re rigid
because they need to be
All those cool features are built on top of a rigid, stable base.
(Comfortable, too)
So, it begs the question:
Should I remove the cool things for
customization?
9. “But I really want to do {x} on {y}”
You have two ways:
● Roll Your Own
○ If it doesn’t remove core features:
■ Awesome!
○ If something else breaks in the process:
■ Welcome to Stack Overflow.
● Use a microframework
10. A microframework like
only deals with a reduced set of tasks
(mostly routing and session handling)
Giving you freedom over the
components/patterns/conventions you want/need to use.
12. So, you can use anything
you want to develop different
aspects of your project
●
●
●
●
●
NoSQL databases
Custom templating engines
ViewModel paradigm
Custom user management
or nothing at all
with little or no additional work.
13. Think of a microframework as a
nice foundation to stack the components
of your future solution.
14. Another advantage of microframeworks
If your project is small
the code will be small.
(most of the time)
With an MVC framework, your project starts at almost medium size
and then it grows from there (big projects won’t even notice).
15. An example
Contoso wants to do a “Hello” public API.
Which answers with “Hello!”.
Let’s pretend this is a very interesting project.
16. If we use Rails, we should do something like:
$ gem install rails
$rails new hello-app
$rails generate controller hello index
$vim app/controllers/hello.rb
(write the code)
$emacs routes.rb
(write the route file)
$rails s
#Success
17. It works...
...but all the additional components will only be using extra space.
And it will require time to remove them (or you must remember to not
include them in first place).
18. If we use Sinatra, this could be done as:
$gem install sinatra
$touch hello.rb
$subl hello.rb
require ‘sinatra’
get ‘/hello’ do
‘Hello!’
end
$rails hello.rb
== Sinatra has taken the stage …
>> Listening on 0.0.0.0:4567
19. The same happens with Django and Flask
With Django you need to create a project, then an application, then
edit the controllers, add the created application to…
(it keeps going on)
With Flask, you need to do this after getting
it using pip or easy_install (maybe not easy_install).
from flask import Flask
app = Flask(__name__)
@app.route(‘/hello’)
def hello():
return u’Hello!’
if__name__ == ‘__main__’:
app.run()
20. With ASP.NET MVC, use Visual Studio.
With Nancy, it’s like this:
1.
2.
3.
Create a project with your favorite IDE.
Get Nancy from NuGet
Create a new file (C#) with the following.
namespace Hello {
public class HelloModule: Nancy.NancyModule {
public HelloModule(){
Get[“/hello”] = _ => “Hello!”
}
}
}
Press F5, get bacon.
21. Thank you for your attention.
And, if you want to use a microframework:
Be Tidy
(Or you’ll really regret it)