Qual é a diferença entre um aplicativo de serviço WCF e uma biblioteca de serviço WCF?

118

Estou desenvolvendo um serviço web WCF e usei o modelo de aplicativo de serviço WCF para fazer isso.

A criação de um "Aplicativo de serviço WCF" atende a esse requisito? Quais são as vantagens de criar uma biblioteca de serviço WCF em vez de um aplicativo de serviço WCF?

Ashish Ashu
fonte

Respostas:

148

Um aplicativo de serviço inclui um host de site já configurado para você. Uma biblioteca de serviço é uma biblioteca de serviços que um host pode fazer referência e inicializar.

Se você começar com uma biblioteca de serviço (recomendado), poderá escolher qualquer host que desejar (um serviço do Windows, IIS / ASP.NET ou mesmo um aplicativo de console) e apenas referenciar sua biblioteca a partir de seu novo host. A escolha de um aplicativo de serviço limita seu host apenas a IIS / ASP.NET (embora isso possa ser adequado para seus propósitos, mas limitará os protocolos que você pode usar).

Editar : as alterações no IIS desde que escrevi isso permitem uma ampla variedade de protocolos em serviços ativados pelo ASP.NET, portanto, escolher um aplicativo de serviço é muito menos limitante do que antes.

Anderson Imes
fonte
1
Alguém tem informações sobre os novos protocolos / ligações disponíveis ao hospedar no IIS?
Allen Rice,
@AndersonImes Eu sei que este é um post antigo, mas espero que você possa ajudar. Estive procurando em todos os lugares e não consigo encontrar se o serviço WCF se destina ou não a substituir o serviço da Web no .NET 3.5 e, portanto, por que o modelo foi removido no .NET 4? Obrigado. :)
Chiramisu
2
@Chiramisu WCF oferece muito mais vantagens e flexibilidade ... Achei muito úteis: Exemplo de projeto de código , questão Stackoverflow
StoriKnow
@Sam Obrigado Sam, muito útil. Então, basicamente, o WCF pode fazer tudo que um serviço da Web pode e mais? Quaisquer limitações, eu me pergunto ... :)
Chiramisu
1
@Chiramisu feliz em ajudar! Sempre há limitações, mas o WCF tem muito menos limitações do que um serviço da Web típico, eu imagino.
StoriKnow
10

Se tudo o que você tem é o único projeto, vejo complexidade adicional apenas se você separar por completo. Usei uma biblioteca quando tive alguns casos de uso específicos em que tive que hospedar em um serviço do Windows e no IIS.

Para o IIS, você pode mover as classes e interfaces para uma biblioteca, mas manter seus arquivos .SVC no projeto da web. Você deve editar os arquivos .SVC para apontar para as classes devidamente qualificadas.

Gary
fonte