Slide 1

Slide 1 text

Nancy FX web development framework for the rest of us

Slide 2

Slide 2 text

Hi Hi, my name is , my name is @alexbeletsky @alexbeletsky

Slide 3

Slide 3 text

Who is Nancy?

Slide 4

Slide 4 text

require 'sinatra' get '/hi' do "Hi Frank!" end

Slide 5

Slide 5 text

“ Sinatra is DSL for quickly creating web applications in Ruby with minimal effort “

Slide 6

Slide 6 text

using Nancy; public class Module : NancyModule { public Module() { Get[“/”] = “Hi Nancy”; } }

Slide 7

Slide 7 text

Created by: thecodejunkie (Andreas Håkansson) grumpydev (Steven Robbins) and community..

Slide 8

Slide 8 text

“ Nancy is a lightweight, low- ceremony, framework for building HTTP based services on .Net and Mono. The goal of the framework is to stay out of the way as much as possible and provide a super-duper-happy- path to all interactions. “

Slide 9

Slide 9 text

Micro Micro Framework Framework Minimum functionality Minimum functionality Minumum dependenices Minumum dependenices Minumum configurations Minumum configurations

Slide 10

Slide 10 text

NuGet Driven NuGet Driven Development Development Core is almost “useless” Core is almost “useless” Features by NuGet packages Features by NuGet packages Adopting ruby Gem's approach Adopting ruby Gem's approach

Slide 11

Slide 11 text

Super-duper- Super-duper- happy-path happy-path Kind of philosofy behind the Nancy FX Kind of philosofy behind the Nancy FX “ “It just works”, “It is easy”, “Low friction” It just works”, “It is easy”, “Low friction” You have pleasure and fun You have pleasure and fun

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Modules primary Nancy concept ● Inherited from NancyModule ● Root to the root ● HTTP handlers in constructor

Slide 14

Slide 14 text

Routes method + pattern ● GET, POST, PUT, DELETE ● Literal, Capture, RegExp ● Built in runtime

Slide 15

Slide 15 text

Actions do something.. ● Lambda expression ● Receives “parameters” dynamic ● Creates the response

Slide 16

Slide 16 text

Views renders the model ● Different view engines ● HTML, Razor, Spark, SuperSimple ● Selected on runtime

Slide 17

Slide 17 text

Model Binding bind model :) ● Nancy.ModelBinding ● Query string, request body.. ● XML, JSON

Slide 18

Slide 18 text

Bootstrapper DSL on top of IoC ● Mythical unicorn ● TinyIoC default container ● Ninject, AutoFac, Windsor

Slide 19

Slide 19 text

Responses ● JSON, XML ● Redirect, Image ● Response by convention

Slide 20

Slide 20 text

Everything is very simple

Slide 21

Slide 21 text

Other side of the Moon

Slide 22

Slide 22 text

Pre-mature Pre-mature ● version 0.9 version 0.9 ● lack of commutity “knowledge lack of commutity “knowledge base” base” ● documentation documentation

Slide 23

Slide 23 text

Development Development ● not “really” TDD oriented not “really” TDD oriented ● testing is possible, but hard testing is possible, but hard ● lack of infrastrucure lack of infrastrucure

Slide 24

Slide 24 text

Performance? Performance? (I might be wrong here) (I might be wrong here) ● everything is so “dynamic” everything is so “dynamic” ● custom pipeline custom pipeline ● views rendering views rendering

Slide 25

Slide 25 text

Well, why should I learn it?

Slide 26

Slide 26 text

To prototype fast (er) To prototype fast (er) To enjoy super-duper- To enjoy super-duper- happy path happy path To be better developer To be better developer

Slide 27

Slide 27 text

Thank you. http://beletsky.net @alexbeletsky