Сервисный дизайн: где я должен поставить свой проверочный код? - PullRequest
0 голосов
/ 26 января 2011

Я немного запутался в концепции услуг.

Давайте предположим, что я хочу создать нового пользователя. Прямо сейчас я проверяю, все ли поля не пусты в Model (project.Web solution) и в UserServices тоже (project.Services solution). Но чтобы проверить адрес электронной почты, мне нужно создать новую функцию. Должен ли я создать этот класс в project.Services, что-то вроде GeneralValidation.cs и использовать его, или я должен отделить его от Services и создать новый проект?

До сих пор я не создавал два решения для хранилищ и служб. У меня было только одно решение для тестирования, другое для project.Web, и другое решение, где у меня были папка домена, папка репозитория и несколько классов для бизнес-логики, но после прочтения немного о шаблонах проектирования я решил разделить это.

Может быть, я еще не понял значения Услуг. Для меня сервис - это уровень, который будет использовать хранилище (например, пользователя), а уровень сервиса - это то место, где я должен выполнить проверку. Если это правильно, поэтому я не знаю, где создать функцию проверки электронной почты, например.

Если бы кто-то мог мне это объяснить, я был бы очень признателен. Я уже читал статьи в блогах и искал похожие вопросы в stackoverflow, но не уверен, действительно ли я это понял.

Спасибо

1 Ответ

1 голос
/ 26 января 2011

Службы и хранилища являются «первоклассными гражданами» в доменно-управляемом дизайне, поэтому я не понимаю, почему вы хотите поместить их в отдельный проект?

Для вашего конкретного сценария почему бы невы создаете 'UserService', который имеет метод 'CreateUser', который выглядит, например, так:

public static class UserService
{
    public static CreateUser( User u )
    {
         var userRepository = RepositoryFactory.CreateUserRepository();

         userRepository.Save (u);

         SendActivationMailForUser(u);
    }

    private static void SendActivationMailForUser( User user )
    {
         ....
    }
}

Более подробную информацию об услугах можно найти здесь

...