В нашем приложении есть два отдельных сервиса: один для модели данных и один строго используемый для аутентификации. Мы взяли этот дизайн из структуры бизнес-приложения MS.
Мы рассмотрели возможность разделения нашей службы предметной области на более мелкие компоненты, но решили не делать этого, потому что, похоже, это не добавило никаких преимуществ (кроме уменьшения размера класса обслуживания). Если у вас есть отдельные модели данных, которые полностью независимы друг от друга тогда идти по этому пути может иметь смысл. Интуитивно доменная служба должна представлять весь домен. Если ваши домены независимы (с случайной потребностью в кроссовере ), то логически целесообразно разделить их таким образом.
Относительно использования контекста как синглтона: я попробовал это и закончил тем, что вместо этого создал экземпляры класса. Мы не сталкивались с такими проблемами, поскольку все они используют одно и то же подключение к данным. Я не знаю, какова «официальная» лучшая практика, но я видел, как это делается во многих приложениях RIA.