Examinei algumas perguntas, tecnologias para criar uma boa camada de serviço, mas tenho algumas perguntas sobre isso com as quais preciso de ajuda.
Primeiro, algumas informações do que tenho para os requisitos. Atualmente, temos um número de aplicativos da Web que se comunicam de maneira semelhante a uma teia de aranha (todos conversando de maneira confusa por meio de serviços da Web e dados do banco de dados).
- Queremos mudar isso para que todos os aplicativos passem por uma camada de serviço onde possamos trabalhar mais com o cache e encapsular funcionalidades comuns e muito mais.
- Queremos que essa camada também tenha uma API da Web para que clientes de terceiros possam consumir informações do serviço.
O problema que vejo é que, se construirmos a camada de serviço com a MVC4 Web API, não precisaremos nos comunicar entre o aplicativo usando a webAPI, o que significa que precisamos construir URLs e consumir JSON / Xml. Isso não parece muito eficaz. Presumo que um método melhor seria trabalhar com entidades e WCF para se comunicar entre o aplicativo, mas podemos perder a mágica da API da Web?
Portanto, a questão é se existe uma maneira de consumir uma camada de serviço como uma API da Web (JSON / XML) e como uma camada de serviço de back-end com entidades. Se formos forçados a usar duas camadas de serviço diferentes, talvez tenhamos que duplicar algumas funcionalidades e outras coisas ruins.
Espero que a pergunta seja clara o suficiente e pergunte se você precisa de mais informações.
Respostas:
Para um conjunto de aplicativos hospedados na intranet e possivelmente em uma LAN, o melhor pode ser uma conexão TCP para serviços.
Nesse sentido, sugerirei a criação de um aplicativo de serviço que exponha um conjunto de terminais e interfaces de serviço que possam funcionar no TCP. Estes podem ser consumidos pelos aplicativos cultivados em casa ou confiáveis.
O aplicativo de serviço deve ter outro conjunto de terminais e interfaces de serviço expostos ao consumo pela Web (API da Web).
Portanto, o aplicativo de serviço pode ser hospedado usando o WCF e os pontos de extremidade / interfaces devem ser adicionados de acordo com a necessidade.
fonte