title: how to understand the rule: IoC container should be explicitly used only in Bootstrapper?
body: <p>Am I right in understanding that 
  1) Ideally, resolve method should be called  only once and build whole application graph at one bout.
  2) Library's classes should be ready for IoC tool (publish all dependencies) but should not use "secretly" any IoC containers ; so the situations where we create container on any other layers except "bootsrapper" should be avoided. 
  3) Send of IContainer to subclusses for additional "resolvings" is also abortive decision.</p>
  
  <p>Those principles are very logical for me, I share them. But I still have doubts in answering on this question: "why there are still used such concepts like.."</p>
  
  <p>1) transient life-time - since we build infrastructure on start-up all objects should live "application life-time" and generally should be singletons; if we need to create some "per call" objects then with IoC we resolve only theirs abstract factories, which should create "per call" infrastructure objects (avoiding "nested" containers, and "transient" container's instances);
  2) subcontainers, parent/child containers;
  3) "hierarchy life time".</p>
  
  <p>Now I explain for my self that those concepts exists as solutions for "no ideal world", but may be I miss something?</p>