Tenho escrito diversos hosts de serviços WCF para artigos que tenho escrito bem como para alguns testes que estamos fazendo na empresa onde trabalho. Como a idéia é apenas criar um projeto, na maioria das vezes, do tipo Console para servir de host, tenho que a todo momento instanciar a classe ServiceHost, especificar o tipo do serviço, o endereço, contrato, bindings, endpoints, description, etc.
Isso me levou a criar alguns code snippets (neste momento somente para C#) para automatizar essas tarefas mais comuns, evitando escrever o mesmo código toda vez que preciso criar um host. Neste momento tenho apenas nove snippets que estão me ajudando muito, poupando grande parte do trabalho que antes eu tinha para a criação um serviço/host dummy. Com isso, eu decidi compartilhar esses recursos. Abaixo estão listados cada um deles e suas respectivas utilidades e, entre paranteses, está o atalho que utilizamos dentro do Visual Studio:
-
asyncContract.snippet (asyncContract): estrutura para gerar um contrato assíncrono (BeginXXX/EndXXX).
-
basicServiceHost.snippet (bsh): estrutura do ServiceHost altamente customizável (endereço, bindings, etc.).
-
basicServiceImplementation.snippet (basicServiceImplementation): implementação padrão para uma classe que representa o serviço, podendo definir o contrato, gerenciamento de instancia e concorrencia.
-
callback.snippet (wcfCallback): estrutura para invocar um método de callback.
-
httpDuplexServiceHost.snippet (wsduplexsh): ServiceHost customizado para WSDuplexBinding.
-
httpServiceHost.snippet (httpsh): ServiceHost customizado para BasicHttpBinding.
-
tcpServiceHost.snippet (tcpsh): ServiceHost customizado para NetTcpBinding.
-
webServiceHost.snippet (websh): ServiceHost customizado para WebHttpBinding (Ajax).
-
wsServiceHost.snippet (wssh): ServiceHost customizado para WSHttpBinding.
Para utilizá-los, basta extrair e colocá-los no seguinte endereço: UsuarioCorrenteDocumentsVisual Studio 2008Code SnippetsVisual C#My CodeSnippets. Gostaria muito de utilizar os elementos Reference e Imports dentro dos arquivos de snippets para automatizar a referencia ao assembly System.ServiceMode.dll e adicinar a diretiva using para o namespace System.ServiceModel mas, infelizmente, isso é uma funcionalidade que está apenas disponível para snippets escritos para Visual Basic.