Em um projeto web, quando adicionamos um WCF Service, além do arquivo .SVC é adicionado um arquivo .cs para a interface do serviço e um arquivo .cs para a implementação do serviço como code-behind do arquivo .svc.
Porém misturar a implementação do serviço dentro de um projeto web não é necessariamente uma boa idéia, poderia ser melhor ter a implementação do serviço devidamente separada em uma class library. A separação de imediato já criaria uma maior versatilidade para o serviço poder ser utilizado em qualquer host, mas essa é apenas uma das vantagens, manter a implementação fora da camada de interface é benéfica.
Então vamos ver um passo a passo para a criação de um serviço em uma class library, usando o arquivo .SVC apenas para hospedar o serviço em um site :
Passo a passo
1) Crie uma nova class library chamada libCalculo
2) Adicione no projeto uma referência para o assembly System.ServiceModel
3) No projeto libCalculo crie uma interface chamada ICalculo, conforme o código abaixo :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace libCalculo
{
[ServiceContract]
public interface ICalculo
{
[OperationContract]
decimal Calcular();
}
}
4) No projeto libCalculo crie uma classe ServicoCalculo conforme o código abaixo :
public class ServicoCalculo : ICalculo
{
public decimal Calcular()
{
return 10 * 20;
}
}
5) Adicione na solução uma nova Empty Web Application chamada calculoHost

6) No projeto calculoHost adicione uma referência para o projeto Calculo
‘
O host precisa de uma referência para o projeto do serviço, pois irá hospeda-lo.
7) Nesta aplicação, adicione um novo WCF Service chamado srvCalculo
Adicionamos um serviço, mas na verdade não o utilizaremos. Usaremos apenas o arquivo .svc apontando para o serviço já existente no projeto libCalculo
8) Apague a interface IsrvCalculo que foi adicionada ao projeto web.
9) Apague o arquivo de code-behind chamado srvCalculo.svc.cs
10) Abra o arquivo srvCalculo.svc, apague o atributo codeBehind e altere o atributo Service para que a tag fique igual abaixo :
<%@ ServiceHost Language="C#" Debug="true" Service="libCalculo.ServicoCalculo" %>
10) Defina o projeto calculoHost como startup project.
11) Defina o arquivo srvCalculo.svc como start page.
12) Rode a aplicação.
