MVP - o Apresentador e a Camada de Serviço - Onde a declarar Camada de Serviço
-
12-11-2019 - |
Pergunta
Eu estou lendo A Arquitetura Microsoft .Net Soluções para a Empresa e eu tento figura de um par de coisas sobre o Apresentador e a Camada de Serviço.
Primeiro, o meu Apresentador precisa chamar métodos que residem na Camada de Serviço, como initialize(), save (), etc.Mas onde eu colocar uma referência para a camada de serviço?Deve ser em nível de classe no Apresentador, ou deve definir um novo serviço no apresentador métodos de si?
Segunda - isso não é muito claro no livro - é assim como o processamento do Apresentador para a Camada de Serviço funciona?:
public void ProcessPrediction()
{
//Get the data from the View
string selectedForPolePosition = predictionPageView.DriverPolePosition;
string selectedForSecondPosition = predictionPageView.DriverSecondPosition;
string selectedForThirdPosition = predictionPageView.DriverThirdPosition;
string selectedForFourthPosition = predictionPageView.DriverFourthPosition;
string selectedForFifthPosition = predictionPageView.DriverFifthPosition;
string raceTitle = predictionPageView.RaceTitle;
//Prepare for sending to the Service Layer
PredictionDTO prediction = new PredictionDTO();
prediction.RaceTitle = raceTitle;
//More Filling of the DTO here....
//...
//...
IPredictionService predictionService = new PredictionService();
predictionService.ProcessPrediction(prediction);
}
Solução
IPredictionService predictionService = new PredictionService();
Isso realmente vai depender de uma série de fatores:
- Duração do serviço e o tempo de vida do apresentador
- Se você estiver usando qualquer ferramenta de DI
- Se o serviço precisa ser descartado
- Se o serviço tem qualquer limite de tempo inactivo (por exemplo, se é um O WCF proxy)
Então, em essência, ele não é necessariamente um projeto arquitetônico, é mais decisão de design.
Se você usar um DI ferramenta, você teria:
IPredictionService predictionService = diContainer.Resolve<IPredictionService>();
Ou, melhor ainda, nenhum dos acima e simplesmente declará-lo como propriedade e DI ferramenta pode preenchê-lo, quando ele cria o apresentador.