[ C# ] O poder do Yield Return

- terça-feira, 29 de junho de 2010

Fiquei muito tempo sem postar, e hoje estou com pouco tempo portanto serei breve.

Resolvi postar um link muito interessante sobre o YieldReturn. Pra quem não conhece nada de YieldReturn, vale apena dar uma olhada na msdn [ http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx ].

O link que citei acima é do Joshua Flanagan [ http://flimflan.com/blog/ThePowerOfYieldReturn.aspx ], reparem que o título meu post foi inspirado no texto dele. Acredito que o uso do yield demonstrada no texto possa ser útil para muitos, assim como foi para mim.

Estou trabalhando em uma ferramenta para integração de conteúdos entre portais. O Yield foi muito útil pois não quero listar todos os conteúdos antes de começar a integração, quero que tudo seja feito por etapas.

Imagine uma abordagem de integração como a descrita abaixo:

  1. Select no banco com todos os conteúdos do portal1 e alimento um DataTable
  2. Para cada DataRow do DataTable, alimento um objeto gerado pela referência do WS que esta no portal2.
  3. Executo o método do WS que recebe o conteúdo e salva no portal2.
  4. Muda um flag no banco de dados dizendo se o conteúdo foi salvo com sucesso ou não.

Com a abordagem do Yield descrita no post do Joshua Flanagan essa rotina é feita da seguinte maneira:

  1. Select no banco com todos os conteúdos do portal1 e alimento um DataTable
  2. Para o primeiro DataRow do DataTable, alimento um objeto gerado pela referência do WS que esta no portal2.
  3. Executo o método do WS que recebe o conteúdo e salva no portal2.
  4. Muda um flag no banco de dados dizendo se o conteúdo foi salvo com sucesso ou não.
  5. Se existe outro objeto, volta para o passo dois e repete com o proximo DataRow.

Pra mim foi muito útil, achei mais interessante do que alguns exemplos que vejo por ai, onde yield é usado como uma simples lista.

 



Blogado por Rafa Almeida as 16:04
Rafael Almeida Rafael da Silva Almeida, 22 Desenvolvedor;
C#, VB.NET, Java, C, Phyton, Linq, MVC;
VSTS, SQL, TV Digital, Xletview;
eusou@rafaelalmeida.net
SKYPE: stupied4ever
MSN: r.almeidasilva@terra.com.br
Twitter

Ultimos Posts

Amigos