저는 짧은 시간 동안 MVC 프레임 워크를 사용 해왔고, 관심사가 어떻게 분리되어 있는지 정말 좋아합니다. 저는 컨트롤러가 꽤 많은 일을하도록하는 나쁜 습관을 가지고 있습니다. 그래서 저는 정말로 조언을 찾고 있습니다.서비스 계층과 리포지토리
MVC를 처음 사용하기 시작했을 때 나는 컨트롤러가 데이터베이스 작업이 완료된 후 모델 조작을 꽤 자주했습니다. 나는이 일이 모델로 옮겨지는 것이 좋지 않다는 것을 알았다. 그러나 나는 내 모델이 매우 배우기를 원하기 때문에 그 점에 만족하지 않습니다.
저는 약간의 독서를했습니다. 사람들이 컨트롤러와 모델을 유지하려고하는 것을 보았습니다. 서비스 레이어가있어서 그 모양이 마음에 들었습니다.
저는 서비스 계층과 저장소가 모두 어떻게 작동하는지 이해하려고합니다. 여기에 내 가정이 있습니다, 이것이 일하기 좋은 방법인지 알려주십시오.
- 아무런 조작이 모든 작업은 데이터에 일을해야하면
- 관여 할 필요가없는 데이터 및 서비스 계층으로 수행 할 (비즈니스 로직을 필요로하지 않는 경우 컨트롤러는 직접 저장소를 호출 할 수 있습니다) 서비스 레이어에서이 작업을 수행해야하며 컨트롤러는 필요한 경우 서비스 레이어에 대한 간단한 호출을 수행합니다.
- 서비스가 비즈니스 로직을 완료하면 필요한 경우 리포지토리를 사용합니다 (데이터가 필요한 경우). 지속됨).
- 이상적으로 모델은 이상적으로는 DTO가 아닌 이상적인 동작을 유지해야합니다.
- 데이터 유효성 검사는 MonoRail 유효성 검사 속성을 사용하여 모델 내에서 수행됩니다. 나는 많은 사람들이 그들의 모델을 오염시키는 것을 좋아하지 않는다고 생각하지만, 그것은 다른 논의이다. UI에서 자동 jQuery 유효성 검사를위한 MonoRail 유효성 검사 속성의 이점을 좋아합니다.
저는 모든 코드를 단일 책임 원칙으로 돌리려고 노력하고 있습니다. 따라서 코딩 관행을 정리하려고합니다.
감사
내 유일한 관심사는 (그러나 나)를합니다 PropertyBag를 통해 UI에 모델의 컬렉션을 통과 할 때, 당신은 잠재적으로 UI에 비즈니스 로직을 여는 것입니다. 나는 당신의 의견에 동의 –
, 방금 비즈니스 로직의 과도한 양 별도의 서비스 계층에 저장되어야한다고 생각합니다. 실제로 가능 – StevenMcD