====== Adicionando as dependências da arquitetura ====== No repositório de soluções e controle de versões do TCE (//Team Foundation Server - TFS//) existe uma solução nomeada de **TCE Compartilhado**, este projeto corresponde a parte funcional da arquitetura, entre suas responsabilidades esta a abstração de funcionalidades, entre varias a de maior relevância é a **//Fabrica Generica//**. "//Essa camada é responsável por definir os contratos de operações dos serviços - interfaces de serviço, os objetos de transito (DTOs) e as fábricas de objetos e de operações (DAS, Item 3.2.2)//." Para a Solução proposta neste artigo existe outra funcionalidade de grande relevância, a abstração e modelagem de dados feitos em conjunto com o framework **//Entity Framework//**. Ver DAS para mais detalhes. Os componentes do TCE Compartilhado são adicionados a dois projetos da Solução, //**TCE.CRUD.InterfacesFabricas**// e //**TCE.CRUD.Servico**//. Para obter as //DLL's// - Dynamic-link library (biblioteca de vínculo dinâmico) do TCE-Compartilhado basta obter a //Solution// no Visual Studio (VS) através do TFS. {{ :pres:gerti:solution_compartilhado.png?direct&200 |TCE Compartilhado através do VS}} Abri a //Solution// do TCE Compartilhado e Fazer o //Build// no modo //Release//. {{ :pres:gerti:processos_de_ti:solution_compartilhado_projetos.png?direct&200 |Solution do TCE Compartilhado}} Após realizar o //Build// as //DLL's// serão criadas na pasta //Output// no diretorio raiz onde a //Solution// do TCE Compatilhado foi Mapeada. {{ :pres:gerti:solution_compartilhado_diretorio.png?direct&200 | Diretorio com as DLL's}} Existe no servidor de aplicações IIS (//Internet Information Services//) do TCE uma pasta com todas as //DLL's// do TCE Compartilhado, a pasta está compartilhada com todos os projetos que fazem uso desta arquitetura. Existem dois motivos principais para existência separada da aplicação, o primeiro esta no modo como a Fabrica Genérica funciona e o segundo na escalabilidade (Atualizações e manutenção). A Fabrica Genérica utiliza //Reflection// ([[http://pt.stackoverflow.com/questions/13089/o-que-%C3%A9-reflection-por-que-%C3%A9-%C3%BAtil-como-usar]]) para criar instâncias em tempo de execução a partir das //DLL's// da Solução (pasta //bin//) e do TCE Compartilhado. Como todas os projetos que utilizam a arquitetura se alimentam do mesmo conteúdo a atualização se torna mais confortável e ágil. Para desenvolvimento do projeto, o Compartilhado assim como outros componentes que venha a ser utilizados, devem estar em um diretório especifico na pasta raiz da Solução, padronizado com nome de **Componentes**. {{ :pres:gerti:processos_de_ti:solution_componentes.png?direct&200 |Diretório raiz da Solução com a pasta Componentes}} Dois dos projetos recebem as referência ao Compartilhado, o //Servico// e //Interfaces Fabrica//. {{ :pres:gerti:processos_de_ti:solution_crud_servico_references.png?direct&200 |Dependências adicionadas ao projeto}}