none
Duvida webApi(rest) RRS feed

  • Pergunta

  • Pessoal, quais as principais diferenças entre MVC controller e WebApi ?

    quais as vantagens e desvantagens?

    Fiz um teste com os dois, e o MVC foi bem mais rápido, pensei que o WebApi fosse mais rápido, segue imagens dos testes:


    alessandre

    quinta-feira, 27 de agosto de 2015 14:04

Todas as Respostas

  • Com qual versao voce testou? WebAPI no MVC6 deriva do controllerBase, entao teoricamente nao existe mais nenhuma diferença...

    Segue aqui um artigo que eu li hoje:

    http://www.codeproject.com/Articles/1018082/ASP-NET-Web-API-RESTful-CRUDs-and-Windows-native

    Poderia nos mostrar sua implementaçao dos dois codigos?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 27 de agosto de 2015 17:10
    Moderador
  • Willian, obrigado pela resposta:

    aqui esta o codigo da api:

     // GET /api/Bairroapi
            public IEnumerable<BairroModel> GetBairro()
            {
                master = new ClassMaster();
                Repositorios.Repositorios.T0010_Bairro.BairroDTO dto = new Repositorios.Repositorios.T0010_Bairro.BairroDTO();
                return dto.getByFilter("", 1, 1, "100", "a", master.contexto);
            }

    MVC:

    public dynamic  Contact(int id)
            {
                master = new ClassMaster();
                Repositorios.Repositorios.T0010_Bairro.BairroDTO dto = new Repositorios.Repositorios.T0010_Bairro.BairroDTO();
                dynamic XPTO = dto.getByFilter("", 1, 1, "100", "a", master.contexto);            
               
                var json = JsonConvert.SerializeObject(XPTO);            
    
                return json;
            }

    o codigo do backend, é igual para as duas chamadas. Só nao postei aki porque é um pouco extenso. Mas posso te mandar por email se quiser.

    Abraço


    alessandre

    quinta-feira, 27 de agosto de 2015 18:26
  • Bom.. nao é a mesma coisa.

    Enquanto seu controler  devolve um json o seu metodo API devolve uma Lista.

    Um a serializaçao é feita aqui:

     var json = JsonConvert.SerializeObject(XPTO);            

    e no outro é feito no postman. Creio que por padrao os metodos serializem em XML (nao tenho certeza)

    De qualquer forma, é o esforço de serializaçao que esta fazendo a diferença.

    Aqui esta um artigo interessante:

    http://www.strathweb.com/2013/06/supporting-only-json-in-asp-net-web-api-the-right-way/

    Ele mostra como fixar o retorno em Json de uma web api.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    quinta-feira, 27 de agosto de 2015 19:38
    Moderador
  • Willian, por padrão um WebApi retorna um json

    alessandre

    sexta-feira, 28 de agosto de 2015 15:12
  • Willian, por padrão um WebApi retorna um json

    alessandre

    Creio que nao... ele vai retornar o tipo que esta definido no media formater.. consultando a documentaçao:

    http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

    Em particular esse trecho:

    otice that the serializer adds an "$id" property to both objects. Also, it detects that the Employee.Department  property creates a loop, so it replaces the value with an object reference: {"$ref":"1"}.

    Object references are not standard in JSON. Before using this feature, consider whether your clients will be able to parse the results. It might be better simply to remove cycles from the graph. For example, the link from Employee back to Department is not really needed in this example.

    To preserve object references in XML, you have two options. The simpler option is to add[DataContract(IsReference=true)] to your model class. The IsReference parameter enables object references. Remember that DataContract makes serialization opt-in, so you will also need to add DataMember attributes to the properties:

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 28 de agosto de 2015 15:48
    Moderador
  • Exsite uma discussao no git sobre se o json deveria ser o padrao:

    https://github.com/aspnet/Mvc/issues/1765

    mas eu sinceramente nao entendi se foi aceito ou nao.

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 28 de agosto de 2015 15:56
    Moderador