MVC sem Controller
http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch
Chamado.find(3).tramites
Chamado.find(3).tramites.to_sql
"SELECT `tramites`.* FROM `tramites` WHERE `tramites`.`chamado_id` = 3"
Engine vs Framework
class TramitesController < ApplicationController
 respond_to :html, :json
 def create
   @tramite = Tramite.create params[:tramite]
   respond_with @chamado, @tramite
 end

end
Tramite.should_receive(:create).once
post :create
@Resource
public class IndicacaoController {
  @Post
  @Consumes
  public void indicarOportunidade() {
     List oportunidades =
             new IndicacaoService()
     this.result.use(json()).
        WithoutRoot().
        from(oportunidades).
        serialize();
  }
}
@Resource
public class IndicacaoController {
  @Post
  @Consumes
  public void indicarOportunidade(Indicacao) {
     List oportunidades =
             new IndicacaoService(Indicacao)
     this.result.use(json()).
        WithoutRoot().
        from(oportunidades).
        serialize();
  }
}
@Resource
public class IndicacaoService {
  @Post
  @Consumes
  public void indicarOportunidade() {
     List oportunidades = fazAlgo()
     this.result.use(json()).
        WithoutRoot().
        from(oportunidades).
        serialize();
  }
}
@Resource
public class IndicacaoService {
  @Post
  @Consumes
  public void indicarOportunidade() {
     List oportunidades = fazAlgo()
     this.result.use(json()).
        WithoutRoot().
        from(oportunidades).
        serialize();
  }
}
@Resource
public class IndicacaoService {
  @Post
  @Consumes
  public List<Oportunidade>
           indicarOportunidade() {
     return fazAlgo();
  }
}
#QCON 2013:
Services sem o nome Service

Mvc sem Controller