Автор различает объекты службы, составляющие приложение, от объектов данных, используемых в приложении. Сервисы являются глобальными, поскольку они обычно доступны (посредством внедрения) для всего приложения. Граф объектов таких сервисов создается при начальной загрузке вашего приложения с помощью DI. После создания этого графа объектов ваше приложение будет использовать одни и те же сервисы на протяжении всего приложения.
Объекты данных, с другой стороны, имеют локальную область видимости. Они создаются динамически по мере необходимости, используются, а затем удаляются.
Например, предполагается, что у вас есть UserRepositoryService и вы хотите зарегистрировать нового пользователя. UserRepsitoryService настраивается и внедряется во все ваше приложение (и, следовательно, глобально), но объект User создается динамически в ответ на запрос о создании нового пользователя. После завершения операции объект User может выпасть из области видимости и быть удаленным.
public class Application {
private IRepository<User> _userRepo = null;
// UserRepositoryService injected through DI here
public Application(IRespository<User> userRepo) { _userRepo = userRepo; }
...
public void CreateUser(String userId) {
User newUser = new User(userId); // Data Object Created
_userRepo.Insert(newUser);
} // Data Object falls out of scope here
}
Это простой пример, но надеюсь, что это поможет.