title: What is difference between push based and pull based structures like IEnumerable<T> and IObservable<T>
body: <p>In every tech talk, or in every blog post I've read about <strong>IEnumerable</strong> and <strong>IObservable</strong> I read that,
  <em>IEnumerable</em> is pull-based structure and
  <em>IObservable</em> is push-based structure. </p>
  
  <p>I've read that with <strong><em>IObservable</em></strong> we have async calls, where nothing is blocked and everything is push based.</p>
  
  <p><em>But,but,but...</em></p>
  
  <p>What does it really means? <strong><em>Push</em></strong> based and <strong><em>pull</em></strong> based</p>
  
  <p>Because in my opinion in <strong>IEnumerable</strong> we can also push data into the structure and also pull data from it, I've really lost in that technical terms and ideas.</p>
  
  <p>Please in a normal and human way explain to me the difference between that two structure and difference between push-based and pull-based structures.</p>
  
  <p>Thanks.</p>