Caro(a) Leitor(a), gostaria de falar hoje sobre como e porque trabalhar com vários projetos dentro de uma mesma solução. Lembrando que  alguns gostam de trabalhar e outros não. 
Vou falar e dar as minhas razões para trabalhar com vários projetos dentro da mesma solução mantendo o desacoplamento de regras e acesso a dados.
Tag: Projeto, Visual Studio 11, C#, Programação, Camadas

Hoje se você pega um projeto de qualquer pessoa ou da Microsoft, você vai notar que existem vários projetos dentro da mesma solução e cada um com o seu objetivo organização. 
Na verdade a organização é um ponto comum para colocar o seu projeto em várias soluções. Se você gosta do projeto organizado, tanto no código quanto nas classes, então esta é a primeira razão para utilizar vários projetos dentro da mesma solução.
Passando para o próximo ponto, todo código de regra de negócios fica desacoplado da camada de interface, ou seja, qualquer camada de interface pode chamar a regra de negócio e tudo estará funcionando.
Esse desacoplamento possibilita desenvolver software para vários tipos de interfaces diferentes, mantendo a mesma base de dados, classes de regra de negócio, tratamento de erro e envio de e-mail. 
O primeiro passo para criar um novo projeto dentro da solução web, form ou qualquer outra plataforma, basta clicar no menu File >> Add >> New Project. Figura 1.

Figura 1: Adicionando um novo projeto.


Depois de escolher a opção de novo projeto, é necessário escolher o tipo de projeto. Se esse projeto for exclusivo de classes de negócios e classes de acesso a dados, o tipo que deve ser escolhido é o Class Library.

A figura 2 mostra que, primeiro escolhe a linguagem de programação ao lado esquerdo e depois o tipo Class Library.
Figura 2 – Escolhendo o tipo Class Library.

Colocar o nome é necessário antes de clicar no botão OK. O nome dado foi Projeto.Business (responsável por acesso a dados e regra de negócio). Depois de clicar OK, o projeto foi adicionado sem qualquer problema. Figura 3.

Figura 3 – Projeto novo adicionado.



Note que existem dois projetos dentro da Solution chamada WebApplication3. O projeto chamado Projeto.Business e o outro WebApplication3. Um projeto será responsável pela regra de negócio e acesso a dados e o outro a interface.
Se houver outro projeto do tipo Windows Forms  utilize o mesmo caminho falado anteriormente, basta adicionar mais um projeto dentro da solução usando os mesmos passos anteriores.
Só que agora o tipo do projeto é diferente, isto é, agora é Windows Forms Application.

Figura 4 – Adicionando outro projeto.

Não se esqueça de colocar um nome do projeto. 

Agora a nossa solution possui 3 projetos adicionados. Um para regra de negócio e acesso a dados, outro para interface web e outro para Windows Forms. Figura 5.

Figura 5 – Solution com três projetos.

Comunicação

Como é feita a comunicação entre os projetos dentro da mesma solução? Bom, isso é mais fácil que “andar para trás”. A ferramenta Visual Studio 11 nos ajuda de forma surpreendente. 
Criei em primeiro lugar uma classe dentro do projeto Projeto.Business chamado ClassTeste. Listagem 1.

Listagem 1 – Classe criada
[CODE]
namespace Projeto.Business
{
    public class ClassTeste
    {
        public String fazendoComunicacao()
        {
            return "Comunicou";
        }
    }
}
[/CODE]

Dentro dessa classe criei um método público chamado fazendoComunicacao() que retorna uma string de parâmetro falando que comunicou. O próximo passo é referenciar o um projeto dentro do outro.
Dentro do projeto web, cliquei com o botão direito em cima de References e escolhi a opção Add Reference... Figura 6.

Figura 6 – Add Reference.

Apareceu outra tela que, posso escolher os projetos dentro da Solution. Basta apenas marcar o projeto e clicar OK. Figura 7.

Figura 7 – Adicionando um projeto.

O projeto Business foi adicionado dentro do projeto Web. Veja na figura 8 o projeto dentro do outro. 

Figura 8 – Projeto adicionado.

Basta agora digitar o código e chamar o método. Listagem 2.

Listagem 2 – Chamando o método.
[CODE]
using projeto = Projeto.Business;

        protected void Page_Load(object sender, EventArgs e)
        {
            projeto.ClassTeste classeTeste = new projeto.ClassTeste();
            Response.Write(classeTeste.fazendoComunicacao());
        }
[/CODE]

Aproveitei para mostrar uma maneira diferente de usar o projeto. Coloquei primeiro o using atribuindo a uma variável e depois usando a variável.
Veja o resultado da chamada. Figura 9.
Figura 9 – Retornando o valor.

Peço para que você faça a mesma coisa no projeto Windows Forms. O resultado foi o mesmo.  Listagem 3.

Listagem 3 – Código Windows Forms.
[CODE]
        private void Form1_Load(object sender, EventArgs e)
        {
            projeto.ClassTeste classeTeste = new projeto.ClassTeste();
            MessageBox.Show(classeTeste.fazendoComunicacao());
        }
[/CODE]

A figura 10 mostra o que o método retornou. 

Figura 10 – Resultado Windows Forms.


Isso mostra que tendo um projeto de negócios e as interfaces acessam esse projeto sem qualquer problema. Bom eu fico por aqui e qualquer dúvida pode entrar em contato pelo site pessoal www.mauriciojunior.org.