<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Robson Alves</title>
	<atom:link href="http://robsonalves.net/portal/feed/" rel="self" type="application/rss+xml" />
	<link>http://robsonalves.net/portal</link>
	<description>O que torna um sonho irrealizável é a inércia de quem sonha</description>
	<lastBuildDate>Sun, 11 Sep 2011 14:18:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>PageRequestManager</title>
		<link>http://robsonalves.net/portal/pagerequestmanager/</link>
		<comments>http://robsonalves.net/portal/pagerequestmanager/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 05:47:15 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[PageRequestManager]]></category>
		<category><![CDATA[endRequest]]></category>
		<category><![CDATA[postback jquery]]></category>
		<category><![CDATA[RobsonAlves.net]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/?p=635</guid>
		<description><![CDATA[Utilizando WebForms, tenho sempre em mente a vontade de melhor o desempenho das páginas e evitar ao máximo as requisições Server-Side. Como vejo muito acontecer, muitas vezes preciso alterar uma mascará de um campo e para isso é feito um postback em toda o Form, apenas com o único objetivo de alterar o campo em [...]<hr>
Posts Relacionados:<ol>
<li><a href='http://robsonalves.net/portal/jquery-e-cwebmethods/' rel='bookmark' title='Jquery e C#&ndash;WebMethods'>Jquery e C#&ndash;WebMethods</a><small>Uma funcionalidade bem legal do Jquery em conjunto com o C#, estão nas possibilidade de chamadas assincronas, melhor ainda quando podemos acessar código C#. Primeiramente vamos montar o script Jquery, ele pode estar dentro de um arquivo JS na solution...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Utilizando WebForms, tenho sempre em mente a vontade de melhor o desempenho das páginas e evitar ao máximo as requisições Server-Side. Como vejo muito acontecer, muitas vezes preciso alterar uma mascará de um campo e para isso é feito um postback em toda o Form, apenas com o único objetivo de alterar o campo em questão.</p>
<p>Isto é funcional, mas temos melhores formas de se fazer isto sem a utilização server-side, e só podemos falar em Jquery!</p>
<h3>O Nosso cenário</h3>
<p>Para que esta funcionalidade tenha efeito nós devemos utilizar nas páginas o updatepanel do AJAX.</p>
<p>Um botão do asp.net, com a função Click.</p>
<p>um script de jquery que altere informações dos campos da tela e meche com qualquer outro objeto.</p>
<p><span id="more-635"></span>
<p><font color="#ff0000"><strong>Obs:</strong></font> Necessita do <a href="http://docs.jquery.com/Downloading_jQuery#Download_jQuery" target="_blank">Jquery</a> e do Plugin <a href="http://robsonalves.net/download/jquery.maskedinput-1.3.js" target="_blank">Mask</a> que estou disponibilizando no blog.</p>
<h3>O que Ocorre</h3>
<p>Imagine que fizemos a utilização do .Mask do Jquery, incluimos um valor e clicamos no botão de pesquisar, o postback do button faz com que a mascara deixe de existir e com ele as informações.</p>
<p align="center"><a href="http://robsonalves.net/portal/wp-content/uploads/2011/09/img1.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="img1" border="0" alt="img1" src="http://robsonalves.net/portal/wp-content/uploads/2011/09/img1_thumb.png" width="377" height="125" /></a></p>
<p align="center"><a href="http://robsonalves.net/portal/wp-content/uploads/2011/09/IMg2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMg2" border="0" alt="IMg2" src="http://robsonalves.net/portal/wp-content/uploads/2011/09/IMg2_thumb.png" width="372" height="185" /></a></p>
<p>O postback criado pelo button do asp.net grava as informações do seus objetos em uma viewstate e recupera ela ao recarregar a página, entretanto as mascaras do Jquery não são armazenadas, elas devem ser recriadas em todo novo estado da página.</p>
<p>&#160;</p>
<h3>O PageRequestManager</h3>
<p>Este gerenciador controla as atualizações do modo PartialPage que são realizadas dentro de um container do updatepanel.</p>
<p>Eles nos possibilita gerenciar os seguintes status:</p>
<ul>
<li>beginRequest </li>
<li>pageLoading </li>
<li>pageLoaded </li>
<li>endRequest </li>
</ul>
<p>Segue referência para enteder maiores detalhes de cada um: <a href="http://msdn.microsoft.com/pt-br/library/bb311028.aspx">http://msdn.microsoft.com/pt-br/library/bb311028.aspx</a></p>
<p>Neste caso utilizaremos o endRequest, pois com ele conseguiremos resolver o problema de perca das informações que o Jquery havia posto anterior ao postback.</p>
<h3>Utilizando o EndRequest</h3>
<p>O que deve ser feito neste caso, vamos colocar no final da nova requisição (postback) assincrono e verificar o estado atual da página, você irá notar no código fonte abaixo, que a funciont EndRequest é bem maior que sua original, devido eu pegar o valor do DropDownList e verificar seu change, com o EndRequest o valor do DropDownList não foi alterado e assim o Jquery não entra na função Change e consequentemente não atribui nenhuma máscara ao campo.</p>
<p>Para pegarmos o momento em que o status da página estiver sendo realizado podemos utilizar os seguintes comandos:</p>
<pre class="brush: csharp">Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(Function());
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(Function());
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(Function());
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(Function());</pre>
<p>&#160;</p>
<p>Cada um desse atende a um status da página.</p>
<p>Chega de Falácia, Go Code:</p>
<h3>Código</h3>
<pre class="brush: csharp">

<asp:content id="HeaderContent" contentplaceholderid="HeadContent" runat="server">
    <script type="text/javascript" language="javascript">

        $(document).ready(function () {
            $("#< %= txtPlaca.ClientID %>").mask("999aa99", { placeholder: "_" });

            $("#< %= drpPlaca.ClientID %>").change(function () {
                var ctype = $(this).find('option:selected').attr('value');

                if (ctype == '1') {
                    $("#< %= txtPlaca.ClientID %>").mask("aaa9999", { placeholder: "_" });
                    $("#< %= lblPlaca.ClientID %>").text = "Placa:";
                }
                else {
                    $("#< %= txtPlaca.ClientID %>").mask("999aa99", { placeholder: "_" });
                    $("#< %= lblPlaca.ClientID %>").text = "";
                }
            });

            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest);

        });

        function EndRequest(sender, args) {

            $("#< %= txtPlaca.ClientID %>").mask("999aa99", { placeholder: "_" });

            var ctype = $("#< %= drpPlaca.ClientID %> option:selected").val();

            if (ctype == 0) {
                $("#< %= txtPlaca.ClientID %>").mask("999aa99", { placeholder: "_" });
                $("#< %= lblPlaca.ClientID %>").text = "";
            }
            else {
                $("#< %= txtPlaca.ClientID %>").mask("aaa9999", { placeholder: "_" });
                $("#< %= lblPlaca.ClientID %>").text = "Placa:";

            }

            //Repetindo a função do código antes do EndRequest.
            $("#< %= drpPlaca.ClientID %>").change(function () {
                var ctype = $(this).find('option:selected').attr('value');

                if (ctype == '1') {
                    $("#< %= txtPlaca.ClientID %>").mask("aaa9999", { placeholder: "_" });
                    $("#< %= lblPlaca.ClientID %>").text = "Placa:";
                }
                else {
                    $("#< %= txtPlaca.ClientID %>").mask("999aa99", { placeholder: "_" });
                    $("#< %= lblPlaca.ClientID %>").text = "";
                }
            });

        }

    </script>
</asp:content>
<asp:content id="BodyContent" contentplaceholderid="MainContent" runat="server">
    <asp:updatepanel id="upa" runat="server">
        <contenttemplate>
<div>
                <asp:updatepanel id="UpdatePanel1" runat="Server">
                    <contenttemplate>
                        <asp:panel id="Panel1" runat="server" groupingtext="Update Panel">
                            <asp:dropdownlist id="drpPlaca" runat="server">
                                <asp:listitem selected="True" text="-Selecione-" value="0">
                                </asp:listitem>
                                <asp:listitem text="Placa" value="1"></asp:listitem>
                            </asp:dropdownlist>
                            
                            <asp:label id="lblPlaca" runat="server" text=""></asp:label>
                            <asp:textbox id="txtPlaca" runat="server"></asp:textbox>
                            <asp:button id="Button1" onclick="ProcessClick_Handler" runat="server" text="Processar Placa" />
                        </asp:panel>
                    </contenttemplate>
                </asp:updatepanel>
<div id="AlertDiv" class="AlertStyle">
                </div>
</div>

        </contenttemplate>
    </asp:updatepanel>
</asp:content></pre>
<p>&#160;</p>
<p>Assim mesmo com o postback realizado pelo asp.net nós conseguimos manter o estado do Jquery em todos os objetos que ele estiver atribuido.</p>
<p>É válido neste código alterar o endRequest por pageLoaded.</p>
<p>&#160;</p>
<p><strong>Obrigado.</strong></p>
<hr><p>Posts Relacionados:</p><ol>
<li><a href='http://robsonalves.net/portal/jquery-e-cwebmethods/' rel='bookmark' title='Jquery e C#&ndash;WebMethods'>Jquery e C#&ndash;WebMethods</a><br /><small>Uma funcionalidade bem legal do Jquery em conjunto com o C#, estão nas possibilidade de chamadas assincronas, melhor ainda quando podemos acessar código C#. Primeiramente vamos montar o script Jquery, ele pode estar dentro de um arquivo JS na solution...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/pagerequestmanager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reflection e os Atributos Customizados</title>
		<link>http://robsonalves.net/portal/reflection-e-os-atributos-customizados/</link>
		<comments>http://robsonalves.net/portal/reflection-e-os-atributos-customizados/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 00:47:31 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Reflexão]]></category>
		<category><![CDATA[Reflection com Atributos]]></category>
		<category><![CDATA[Robson Alves]]></category>
		<category><![CDATA[RobsonAlves.net]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/?p=612</guid>
		<description><![CDATA[&#160; Para começarmos a falar de Reflection é imprescindivel entender melhor o conceito da “coisa”. A Reflexão permite que você conheça um objeto pelo seu tipo (Type) e dentro do seu tipo ter acesso a praticamente tudo o que o objeto te fornece. A Reflexão é resolvida toda em tempo de execução e daí que [...]<hr>
Posts Relacionados:<ol>
<li><a href='http://robsonalves.net/portal/atributos-customizados/' rel='bookmark' title='Atributos Customizados'>Atributos Customizados</a><small>&#160; Este assunto é pouco falado, até mesmo sua utilização se torna um pouco restrita. Tive algumas idéias para a utilização deste e portanto gerou um artigo. Mas o que são esses atributos? Atributos da Classe Estes atributos você encontra...</small></li>
<li><a href='http://robsonalves.net/portal/extesion-methods/' rel='bookmark' title='Extesion Methods'>Extesion Methods</a><small>Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em...</small></li>
<li><a href='http://robsonalves.net/portal/estrutura-de-classes-instanciadas-e-staticas/' rel='bookmark' title='Estrutura de Classes Instanciadas e Staticas'>Estrutura de Classes Instanciadas e Staticas</a><small>Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>Para começarmos a falar de Reflection é imprescindivel entender melhor o conceito da “coisa”.</p>
<p>A Reflexão permite que você conheça um objeto pelo seu tipo (Type) e dentro do seu tipo ter acesso a praticamente tudo o que o objeto te fornece. A Reflexão é resolvida toda em tempo de execução e daí que surgem classes ou métodos do tipo genérico. Desta forma temos a possibilidade de além de acessar, os seus métodos, acessar os encapsulamentos e até mesmo enviar novos valores para o objeto em tempo de execução.</p>
<p>Isto soa como sem novidade alguma, afinal fazemos isso todo o tempo, mas sempre devemos respeitar o TypeSafe do C#. Em métodos genéricos, nós estamos caminhando em um nível onde, todos são aceitos independente do seu Tipo.</p>
<p>Para entendermos um pouco melhor essa brevissima teoria, nada melhor do que a prática.</p>
<p>Lembre-se de instanciar a namespace:</p>
<pre class="brush: csharp">using System.Reflection;</pre>
<pre class="brush: csharp">        static void Main(string[] args)
        {
            //Vamos capturar o tipo da classe Math
            Type Tipo = typeof(Math);

            //Vamos capturar os Valores de PI e E, que são variaveis const da classe Math.

            FieldInfo[] field = Tipo.GetFields();

            foreach (FieldInfo Campo in field)
            {
                Console.WriteLine(Campo.Name + &quot;=&quot; + Campo.GetValue(typeof(Math)).ToString());
            }

            Console.ReadKey();

        }</pre>
<p>O Foreach resultou hein:</p>
<p><span id="more-612"></span>
<p><a href="http://robsonalves.net/portal/wp-content/uploads/2011/09/Imagem3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Imagem3" border="0" alt="Imagem3" src="http://robsonalves.net/portal/wp-content/uploads/2011/09/Imagem3_thumb.png" width="482" height="215" /></a></p>
<p>Veja que com poucos passos eu fui capaz de capturar duas informações presentes dentro da class Math, sem criar instância da mesma, tudo sendo recuperado em momento de execução (RunTime).</p>
<p><strong>Legal, agora o que tudo tem a ver com os atributos?</strong></p>
<h3>Acessando Atributos de uma Classe via Reflection</h3>
<p>É extremamente necessário entendermos como chegar até aqui para prosseguir. Portanto vamos utilizar a mesma solução do post passado sobre <a href="http://robsonalves.net/portal/atributos-customizados/" target="_blank">atributos</a></p>
<p>Já temos nossa classe &quot;Decorada&quot;, vamos capturar o atributo:</p>
<pre class="brush: csharp">[Atributos(Desc: &quot;Descrição do Atributo&quot;)]
    class ClassModelada
    {
    }</pre>
<p>&#160;</p>
<p>Crie uma classe, com o nome que desejar e nela iniciaremos a Reflexão, como exemplo abaixo:</p>
<pre class="brush: csharp"> public void GetAttributes()
        {
            //Instanciamos o Tipo do Objeto.
            Type Tipo = typeof(ClassModelada);

            //Vamos capturar apenas os atributos do tipo Atributos (Nome do atributo)
            Object[] Attributes = Tipo.GetCustomAttributes(typeof(Atributos), true);

            if (Attributes != null)
            {

            }
        }</pre>
<p>O resultado como esperado é apenas o atributo decorado:</p>
<p>&#160;<a href="http://robsonalves.net/portal/wp-content/uploads/2011/09/Imagem4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Imagem4" border="0" alt="Imagem4" src="http://robsonalves.net/portal/wp-content/uploads/2011/09/Imagem4_thumb.png" width="444" height="234" /></a></p>
<p>Fácil, se tivessem outros 3 atributos decorados no inicio da nossa classe e todos do tipo [Atributos()], todos estariam listados.</p>
<p>o Método, <strong>GetCustomAttributes()</strong>, serve essencialmente para capturar os tipos de atributos de Classe. Vamos partir para os atributos de propriedades, esses se tornam mais interessante pelo fato de serem vários.</p>
<p>Então vamos criar um novo atributo de parâmetros, para isso siga os exemplos do post passado e em <strong>AttributeTargets</strong> defina o tipo: <strong>AttributeTargets.Property</strong>, não se esqueça do: <strong>AllowMultiple = true</strong>.</p>
<p>Feito tudo isso teremos a classe da seguinte forma:</p>
<pre class="brush: csharp"> [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
    public class PropertyAttributes : System.Attribute
    {

        #region Propertys

        private SqlDbType _db_type;

        public SqlDbType dbType
        {
            get { return _db_type; }
            set { _db_type = value; }
        }

        private String _dataField;

        public String DataField
        {
            get { return _dataField; }
            set { _dataField = value; }
        }

        private int _size;

        public int Size
        {
            get { return _size; }
            set { _size = value; }
        }

        private ParameterDirection _dataDirection;

        public ParameterDirection DataDirection
        {
            get { return _dataDirection; }
            set { _dataDirection = value; }
        }
        #endregion

        ///
<summary>
        /// Informe o nome da Propriedade
        /// </summary>

        ///
<param name="dataField" />Nome da Propriedade

        public PropertyAttributes(String dataField)
        {
            this.DataField = dataField;
        }

        ///
<summary>
        /// Informe o Nome da Propriedade e Seu tipo de dado SQL
        /// </summary>

        ///
<param name="dataField" />Nome da Propriedade
        ///
<param name="dbType" />Tipo de Dado SQL
        public PropertyAttributes(String dataField, SqlDbType dbType)
        {
            this.DataField = dataField;
            this.dbType = dbType;
        }
    }</pre>
<p>Repare que temos dois construtores, isso fica a cargo das necessidades do atributo.</p>
<p>Tendo a classe feita, vamos decorar uma classe nossa de serviço.</p>
<pre class="brush: csharp">   [Atributos(Desc: &quot;Descrição do Atributo&quot;)]
    public class ClassModelada
    {
        private int _codigo;
        [PropertyAttributes(&quot;COD_ID&quot;, SqlDbType.Int, Size = 8)]
        public int Codigo
        {
            get { return _codigo; }
            set { _codigo = value; }
        }

        private Boolean _IsValid;

        [PropertyAttributes(&quot;COD_BIT&quot;, SqlDbType.Bit, DataDirection = ParameterDirection.InputOutput)]
        public Boolean IsValid
        {
            get { return _IsValid; }
            set { _IsValid = value; }
        }
    }</pre>
<p>Repare que quando o parâmetro do atributo não estiver no construtor, o mesmo aparecerá no Intelissense com o Igual a frente do nome:</p>
<p>&#160;<a href="http://robsonalves.net/portal/wp-content/uploads/2011/09/Imagem5.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Imagem5" border="0" alt="Imagem5" src="http://robsonalves.net/portal/wp-content/uploads/2011/09/Imagem5_thumb.png" width="606" height="193" /></a></p>
<p>Então, agora devemos programar nossa classe de reflexão, para pegar também os atributos das propriedades, como segue no exemplo abaixo:</p>
<pre class="brush: csharp">
 //Vamos Capturar todas as propriedades e filtra-las dentro do Foreach.
            PropertyInfo[] PropertyAttr = Tipo.GetProperties();

            foreach (PropertyInfo Propriedade in PropertyAttr)
            {
                String NomePropriedade = Propriedade.Name;
                if (Propriedade.GetCustomAttributes(typeof(PropertyAttributes), false).Count() &gt; 0)
                {
                }
            }

            //Ou podemos utilizar um método direto, utilizando Lambda
            var AttrProperty = Tipo.GetProperties().Where(x =&gt; x.GetCustomAttributes(typeof(PropertyAttributes), false).Count() &gt; 0);

            foreach (var Propr in AttrProperty)
            {

            }</pre>
<p>&#160;</p>
<p><strong><em><font color="#000000">Repare que os dois métodos acima fazem o mesmo trabalho, coloquei ambos para exemplificar</font></em></strong>.</p>
<p>Simples? acredito que sim! Eu irei mostrar como capturar o valor das propriedades em outro post, para não extender demais, e tal por que necessitamos alterar algumas coisas neste método para recuperarmos os valores de qualquer classe e não apenas de uma, portanto no próximo artigo, vou falar um pouco sobre métodos genéricos.</p>
<p><strong>Obrigado.</strong></p>
<hr><p>Posts Relacionados:</p><ol>
<li><a href='http://robsonalves.net/portal/atributos-customizados/' rel='bookmark' title='Atributos Customizados'>Atributos Customizados</a><br /><small>&#160; Este assunto é pouco falado, até mesmo sua utilização se torna um pouco restrita. Tive algumas idéias para a utilização deste e portanto gerou um artigo. Mas o que são esses atributos? Atributos da Classe Estes atributos você encontra...</small></li>
<li><a href='http://robsonalves.net/portal/extesion-methods/' rel='bookmark' title='Extesion Methods'>Extesion Methods</a><br /><small>Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em...</small></li>
<li><a href='http://robsonalves.net/portal/estrutura-de-classes-instanciadas-e-staticas/' rel='bookmark' title='Estrutura de Classes Instanciadas e Staticas'>Estrutura de Classes Instanciadas e Staticas</a><br /><small>Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/reflection-e-os-atributos-customizados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atributos Customizados</title>
		<link>http://robsonalves.net/portal/atributos-customizados/</link>
		<comments>http://robsonalves.net/portal/atributos-customizados/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 03:44:30 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[Atributos]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Atributos Customizados]]></category>
		<category><![CDATA[Robson Alves]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/?p=601</guid>
		<description><![CDATA[&#160; Este assunto é pouco falado, até mesmo sua utilização se torna um pouco restrita. Tive algumas idéias para a utilização deste e portanto gerou um artigo. Mas o que são esses atributos? Atributos da Classe Estes atributos você encontra sobre a declaração de uma classe. Por Exemplo: [Obsolete] internal class Atributos { } Obsolete [...]<hr>
Posts Relacionados:<ol>
<li><a href='http://robsonalves.net/portal/reflection-e-os-atributos-customizados/' rel='bookmark' title='Reflection e os Atributos Customizados'>Reflection e os Atributos Customizados</a><small>&#160; Para começarmos a falar de Reflection é imprescindivel entender melhor o conceito da “coisa”. A Reflexão permite que você conheça um objeto pelo seu tipo (Type) e dentro do seu tipo ter acesso a praticamente tudo o que o...</small></li>
<li><a href='http://robsonalves.net/portal/estrutura-de-classes-instanciadas-e-staticas/' rel='bookmark' title='Estrutura de Classes Instanciadas e Staticas'>Estrutura de Classes Instanciadas e Staticas</a><small>Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....</small></li>
<li><a href='http://robsonalves.net/portal/extesion-methods/' rel='bookmark' title='Extesion Methods'>Extesion Methods</a><small>Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>Este assunto é pouco falado, até mesmo sua utilização se torna um pouco restrita. Tive algumas idéias para a utilização deste e portanto gerou um artigo.</p>
<p>Mas o que são esses atributos?</p>
<h3><u>Atributos da Classe</u></h3>
<p>Estes atributos você encontra sobre a declaração de uma classe. Por Exemplo:</p>
<pre class="brush: csharp">[Obsolete]
internal class Atributos
{
}</pre>
<p><strong>Obsolete </strong>é um atributo da classe que defini que a mesma é ultrapassada. Quando estamos criando um serviço em WCF no framework 3/3.5, nós somos obrigados a declarar os atributos, como no exemplo a seguir:</p>
<p><span id="more-601"></span>
<pre class="brush: csharp">[ServiceContract]
public interface IService1
{
[OperationContract]
void DoWork();
}</pre>
<p>Tomando conhecimento disto, vamos criar nossos atributos.</p>
<p>Criemos uma classe comum:</p>
<pre class="brush: csharp">
public class Atributos
{
}</pre>
<p>Agora herde a classe <strong>System.Attribute. </strong></p>
<pre class="brush: csharp">
public class Atributos : System.Attribute
{
}</pre>
<p>Pronto, já é possível escrever este atributo em qualquer, classe, para tal crie uma nova classe e inclua o atributo:</p>
<pre class="brush: csharp">
[Atributos()]
class ClassModelada
{
}</pre>
<p>Aqui temos a noção inicial de como criar, porém podemos incluir na classe de atributos mais detalhes e especializar melhor nosso atributo.</p>
<p>Portanto, voltamos para a classe de atributos, sobre o nome da classe vamos utilizar o Enum <strong>AttributeTargets</strong> da classe herdada de System.Attribute <strong>AttributeUsage</strong> por exemplo:</p>
<pre class="brush: csharp">
[AttributeUsage(AttributeTargets.All,AllowMultiple=true)]
public class Atributos : System.Attribute
{
} </pre>
<p>O Enum <strong>AttributeTargets</strong> , pela documentação da msdn, vocês podem ter a visão de todos as propriedades do enum.</p>
<p>AllowMultiple igual a true, permite que você possa escrever mais de um atributo na mesma classe, isso é utilizando no caso você esteja atribuindo as propriedades de uma classe.</p>
<p>Até agora definimos como nossos atributos vão se comportar ao declararmos.</p>
<p>Agora vamos definir quais parâmetros os atributos terão, para isso, declaramos os encapsulamentos na classe do atributo e definimos as obrigatoriedades dentro do construtor da classe, podendo ter mais de um. Veja um exemplo:</p>
<p>&#160;</p>
<pre class="brush: csharp">
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public class Atributos : System.Attribute
{
private int _cod;
public int cod
{
get { return _cod; }
set { _cod = value; }
}
private String _desc;
public String Desc
{
get { return _desc; }
set { _desc = value; }
}
public Atributos(String Desc)
{
	this.Desc = Desc;
}
} </pre>
<p>Agora volte a classe que estamos colocando o atributo e veja como será apresentado:</p>
<p><a href="http://robsonalves.net/portal/wp-content/uploads/2011/09/Imagem2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Imagem2" border="0" alt="Imagem2" src="http://robsonalves.net/portal/wp-content/uploads/2011/09/Imagem2_thumb.png" width="365" height="133" /></a></p>
<p>Como deu para notar é muito simples utilizar estes atributos, conhecendo os atributos e obtermos a utilidade destes atributos deveremos estudar então a utilização de Reflection, portanto este será o tema do próximo post.</p>
<p><strong>Obrigado.</strong></p>
<hr><p>Posts Relacionados:</p><ol>
<li><a href='http://robsonalves.net/portal/reflection-e-os-atributos-customizados/' rel='bookmark' title='Reflection e os Atributos Customizados'>Reflection e os Atributos Customizados</a><br /><small>&#160; Para começarmos a falar de Reflection é imprescindivel entender melhor o conceito da “coisa”. A Reflexão permite que você conheça um objeto pelo seu tipo (Type) e dentro do seu tipo ter acesso a praticamente tudo o que o...</small></li>
<li><a href='http://robsonalves.net/portal/estrutura-de-classes-instanciadas-e-staticas/' rel='bookmark' title='Estrutura de Classes Instanciadas e Staticas'>Estrutura de Classes Instanciadas e Staticas</a><br /><small>Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....</small></li>
<li><a href='http://robsonalves.net/portal/extesion-methods/' rel='bookmark' title='Extesion Methods'>Extesion Methods</a><br /><small>Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/atributos-customizados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WCF &#8211; Estrutura de um Servi&#231;o</title>
		<link>http://robsonalves.net/portal/wcf-estrutura-de-um-servio/</link>
		<comments>http://robsonalves.net/portal/wcf-estrutura-de-um-servio/#comments</comments>
		<pubDate>Sat, 28 May 2011 03:00:31 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/?p=593</guid>
		<description><![CDATA[No capitulo anterior de WCF, nós aprendemos&#160; um pouco sobre o que é WCF, O que são serviços do WCF e os tipos de comunicação entre serviços e clientes, existente. Vamos dar continuidade agora para entender melhor como funciona os contratos de um serviço, seus membros. Contratos Basicamente um contrato de um WCF equivale as [...]<hr>
Posts Relacionados:<ol>
<li><a href='http://robsonalves.net/portal/wcfprimeiros-passos/' rel='bookmark' title='WCF&ndash;Primeiros Passos'>WCF&ndash;Primeiros Passos</a><small>O que é WCF? O WCF é um SDK para desenvolvimento e distribuição de serviços no windows. WCF fornece um RUNTIME permintindo expor serviços do tipo CLR (Commom language Runtime) e consumi-los. WCF implementa um conjunto de padrões que definem...</small></li>
<li><a href='http://robsonalves.net/portal/estrutura-de-classes-instanciadas-e-staticas/' rel='bookmark' title='Estrutura de Classes Instanciadas e Staticas'>Estrutura de Classes Instanciadas e Staticas</a><small>Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>No capitulo anterior de WCF, nós aprendemos&#160; um pouco sobre o que é WCF, O que são serviços do WCF e os tipos de comunicação entre serviços e clientes, existente.</p>
<p>Vamos dar continuidade agora para entender melhor como funciona os contratos de um serviço, seus membros. </p>
<h3>Contratos </h3>
<p>Basicamente um contrato de um WCF equivale as possibilidade que um serviço poderá realizar, a partir do contrato do serviço sabemos o que poderemos consumir do serviço e como conversar com o serviço.    <br />Um <strong>Contrato</strong> que é uma interface tem como nomenclatura utilizar a vogal I na frente do nome ficando: <strong>I</strong><em>ContractService</em>.     <br />a Sintaxe de um contrato é a seguinte: </p>
<pre class="brush: csharp">  [ServiceContract]
    public interface IContractService
    {

        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

    }</pre>
<p>O ServiceContract informa para o CLR que este são os dados de acesso ao serviço. O Operation Contract é quem divulga quais operações serão utilizadas. </p>
<p>CompositeType nada mais que uma class gerada automaticamente pelo wizard do VS, quando selecionamos o template WCF Services. </p>
<pre class="brush: csharp">    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = &quot;Hello &quot;;

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }</pre>
<p>Aqui temos o [DataContract] que explicita para o serviço quais são os Dados do Contrato, utilizado pelo ServiceContract, e abaixo os [DataMembers] membros do DataContract. Os tipos ServiceContract, DataContract, DataMember, OperationContract, aceitam alguns parâmetros dentro das suas assinaturas, permitindo definir apelidos e até mesmo NameSpaces evitando possíveis conflitos de nomes. Vai um exemplo: </p>
<p><a href="http://robsonalves.net/portal/wp-content/uploads/2011/05/WCF_PARAMS.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="WCF_PARAMS" border="0" alt="WCF_PARAMS" src="http://robsonalves.net/portal/wp-content/uploads/2011/05/WCF_PARAMS_thumb.png" width="544" height="193" /></a></p>
<p>Por enquanto é isso, começamos a entender como um serviço do WCF é declarado e estruturado. A partir de agora vamos falar da sua hospedagem e posteriormente como consumiremos estes serviços!</p>
<p><strong>Obrigado.</strong></p>
<hr><p>Posts Relacionados:</p><ol>
<li><a href='http://robsonalves.net/portal/wcfprimeiros-passos/' rel='bookmark' title='WCF&ndash;Primeiros Passos'>WCF&ndash;Primeiros Passos</a><br /><small>O que é WCF? O WCF é um SDK para desenvolvimento e distribuição de serviços no windows. WCF fornece um RUNTIME permintindo expor serviços do tipo CLR (Commom language Runtime) e consumi-los. WCF implementa um conjunto de padrões que definem...</small></li>
<li><a href='http://robsonalves.net/portal/estrutura-de-classes-instanciadas-e-staticas/' rel='bookmark' title='Estrutura de Classes Instanciadas e Staticas'>Estrutura de Classes Instanciadas e Staticas</a><br /><small>Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/wcf-estrutura-de-um-servio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jquery e C#&#8211;WebMethods</title>
		<link>http://robsonalves.net/portal/jquery-e-cwebmethods/</link>
		<comments>http://robsonalves.net/portal/jquery-e-cwebmethods/#comments</comments>
		<pubDate>Fri, 27 May 2011 03:16:13 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/?p=576</guid>
		<description><![CDATA[Uma funcionalidade bem legal do Jquery em conjunto com o C#, estão nas possibilidade de chamadas assincronas, melhor ainda quando podemos acessar código C#. Primeiramente vamos montar o script Jquery, ele pode estar dentro de um arquivo JS na solution ou na página. O código está comentado, entretanto estamos utiizando o Ajax do Jquery capturando [...]
Nenhum Post Relacionado.]]></description>
			<content:encoded><![CDATA[<p><a href="http://robsonalves.net/portal/wp-content/uploads/2011/05/aspnet-jquery-ajax-150x150.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="aspnet-jquery-ajax-150x150" border="0" alt="aspnet-jquery-ajax-150x150" src="http://robsonalves.net/portal/wp-content/uploads/2011/05/aspnet-jquery-ajax-150x150_thumb.png" width="184" height="184" /></a>
<p>Uma funcionalidade bem legal do Jquery em conjunto com o C#, estão nas possibilidade de chamadas assincronas, melhor ainda quando podemos acessar código C#.</p>
<p>Primeiramente vamos montar o script Jquery, ele pode estar dentro de um arquivo JS na solution ou na página. </p>
<p>O código está comentado, entretanto estamos utiizando o Ajax do Jquery capturando dados via Post e retornando Json. Veja: </p>
<pre class="brush: javascript, highlight:[3]">
<script type="text/javascript">

        $(document).ready(function () {

            $("#< %= btnResgatar.ClientID %>").click(function () {
                $.ajax({
                    type: "POST",
                    url: "Default.aspx/Exemplos", // url da pagina/nome do metodo 
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: "{}", //parametros da função 
                    success: function (json) {
                        var JSONObject = json.d;
                        var html = '';
                        for (var i = 0; i < JSONObject.length; i++) {
                            html = html + JSONObject[i].Valorbool + ' - ' + JSONObject[i].Valortxt + '

';
                        }
			$('#Ap').html(html).hide("slow").show("Slow");
                    },
		error: function (XMLHttpRequest, textStatus, error) {
                        alert(XMLHttpRequest.responseText);
                    }
                });
                return false; //Prescindivel para que o ASP.NET __DoPostBack não seja executado
            });
        });

    </script></pre>
<p>Pra não sobrar dúvidas abaixo segue a sintaxe para informar parâmetros caso seu metódo Server-Side os possua. </p>
<pre class="brush: javascript, highlight:[3]">
data: &quot;{Nome:'Robson'}&quot;,  //Apenas um parâmetro
data: &quot;{Nome:'Robson', Sobre: 'Alves'}&quot;, //dois parâmetros</pre>
<p>Atente-se: </p>
<ol>
<li>Os parâmetros são case-sensitive </li>
<li>Caso tenha acrescido um parâmetro de entrada e gerar exceções, faça um re-build da solution e nos piores casos feche o IIS server do Visual Studio. </li>
<li>A frente fica o nome do parâmetro, seguido do valor. </li>
</ol>
<p>Os Objetos utilizados neste exemplo: </p>
<pre class="brush: csharp">
    <span id="Ap"></span>
    <asp:button id="btnResgatar" text="Resgatar Dados" runat="server"></asp:button></pre>
<p>Agora temos nossa página pronta para capturar as informações e o alvo onde será renderizada a informação, partimos para o lado do servidor agora. </p>
<pre class="brush: csharp">
  [WebMethod]
        public static List<objetos> Exemplos(string Nome, string Sobre)
        {
            List</objetos><objetos> list = new List</objetos><objetos>();
            Objetos obj = new Objetos();

            for (int i = 0; i &lt; 10; i++)
            {
                obj = new Objetos();
                obj.Valorbool = i % 2 == 0 ? true : false;
                obj.ValorNum = i;
                obj.Valortxt = &quot;RobsonAlves - &quot; + Nome + &quot; &lt;-&gt; &quot; + Sobre;
                list.Add(obj);
            }

            return list;
        }</objetos></pre>
<p>Veja na primeira linha, o WebMethod é quem permite que este método seja exposto Client-side, possibilitando o acesso pelo Jquery. Este exemplo gera uma lista, nada me impedi de pegar as informações do Banco. Detalhes deste: </p>
<ol>
<li>Os métodos sempre devem ser públicos </li>
<li>A Assinatura é [WebMethod] no singular, [WebMethods] no Plural não serve. </li>
</ol>
<p>Note que estamos retornando uma lista de Objetos que é uma classe POCO: </p>
<pre class="brush: csharp, highlight:[1]">    public class Objetos
    {

        public int ValorNum { get; set; }
        public string Valortxt { get; set; }
        public Boolean Valorbool { get; set; }
    }</pre>
<p>após estes passos, você terá as informações da lista na sua tela.<br />
  <br />espero que este artigo seja útil. </p>
<p><strong>Obrigado.</strong></p>
<p>Nenhum Post Relacionado.</p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/jquery-e-cwebmethods/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WCF&#8211;Primeiros Passos</title>
		<link>http://robsonalves.net/portal/wcfprimeiros-passos/</link>
		<comments>http://robsonalves.net/portal/wcfprimeiros-passos/#comments</comments>
		<pubDate>Fri, 27 May 2011 01:56:03 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[RobsonAlves.net; WCF; Tipos de Comunicaçãõ]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/wcfprimeiros-passos/</guid>
		<description><![CDATA[O que é WCF? O WCF é um SDK para desenvolvimento e distribuição de serviços no windows. WCF fornece um RUNTIME permintindo expor serviços do tipo CLR (Commom language Runtime) e consumi-los. WCF implementa um conjunto de padrões que definem a interação entre serviços, tipos de dados e protocolos de comunicação. Ele possue uma estrutura [...]<hr>
Posts Relacionados:<ol>
<li><a href='http://robsonalves.net/portal/wcf-estrutura-de-um-servio/' rel='bookmark' title='WCF &#8211; Estrutura de um Servi&ccedil;o'>WCF &#8211; Estrutura de um Servi&ccedil;o</a><small>No capitulo anterior de WCF, nós aprendemos&#160; um pouco sobre o que é WCF, O que são serviços do WCF e os tipos de comunicação entre serviços e clientes, existente. Vamos dar continuidade agora para entender melhor como funciona os...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h1><a href="http://robsonalves.net/portal/wp-content/uploads/2011/05/WCF-Services_2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="WCF Services_2" border="0" alt="WCF Services_2" src="http://robsonalves.net/portal/wp-content/uploads/2011/05/WCF-Services_2_thumb.jpg" width="490" height="235" /></a></h1>
<h1>O que é WCF?</h1>
<p>O WCF é um SDK para desenvolvimento e distribuição de serviços no windows. WCF fornece um RUNTIME permintindo expor serviços do tipo CLR (Commom language Runtime) e consumi-los. WCF implementa um conjunto de padrões que definem a interação entre serviços, tipos de dados e protocolos de comunicação. Ele possue uma estrutura exigida por quase todos os aplicativos, possibilitando alta produtividade. A instância de serviços, chamadas assincronas, chamadas desconectadas em fila, seguança e interoperalibidade, são algumas das possibilidades possiveis. Neste cápitulo focarei nas formas de transação existentes e iremos evoluindo conforme possível.</p>
<h1>O que é um Serviço WCF?</h1>
<p>Parte do WCF que está exposto ao mundo. Este serviços podem ser Remotos ou Locais. A estrutura de um serviço consiste de uma inteface do contrato. A classe do contrato possuí assinaturas dos métodos, entretanto vou extender este assunto breve. </p>
<p>Já que sabemos que o serviço pode ser Remoto (Internet, Intranet), Local (Localhost, 127.0.0.1), vamos entrar citar cada tipo de comunicaçao exitente. </p>
<h1>Tipo de Comunicação</h1>
<h3>Endereços TCP </h3>
<p>Este é o primeiro dos tipos, o TCP, como cada comunicaçao tem um padrão para o TCP é o seguinte: </p>
<p><em><strong>Ex: Tipo de comunicação://Endereço:Porta/Servico</strong></em>     <br />net.tcp://localhost:7888/MeuServico     <br />Caso a porta não seja informada seu padrão é: 808.     <br />Este protocolo permite que dois serviços atenda a mesma porta, mas falaremos em outra ocasião. </p>
<h3>Endereços HTTP</h3>
<p>http://localhost:7888    <br />Caso a porta não seja informada, o padrão é a porta: 80 </p>
<h3>Endereços IPC </h3>
<p>Este protocolo utiliza o mecanismo de Pipes nomeados do windows, este tipo de comunicação apenas aceita chamadas do próprio computador, portanto é necessário informar o nome da máquina ou localhost. Este só será aberto uma única vez por máquina, não tendo possibilidade de compartilhar a mesma porta para este mesmo tipo de comunicação e nenhuma outra.    <br />net.pipe://LocalHost/Canalizacao </p>
<h3>Endereços MSMQ (Microsoft Message Queue) </h3>
<p>Utilizado quando necessitar de fila de mensagens, você deve informar o nome da fila.    <br />Caso seja necessário utilizar filas privadas, isto deve estar explicito no endereço: net.msmq://localhost/<strong>private</strong>/MinhaFila     <br />Para as públicas, simplesmente omita seu tipo:     <br />net.msmq://LocalHost/MinhaFila </p>
<p><strong>É isso por enquanto, Obrigado.</strong></p>
<hr><p>Posts Relacionados:</p><ol>
<li><a href='http://robsonalves.net/portal/wcf-estrutura-de-um-servio/' rel='bookmark' title='WCF &#8211; Estrutura de um Servi&ccedil;o'>WCF &#8211; Estrutura de um Servi&ccedil;o</a><br /><small>No capitulo anterior de WCF, nós aprendemos&#160; um pouco sobre o que é WCF, O que são serviços do WCF e os tipos de comunicação entre serviços e clientes, existente. Vamos dar continuidade agora para entender melhor como funciona os...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/wcfprimeiros-passos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ferramentas para produtividade</title>
		<link>http://robsonalves.net/portal/ferramentas-para-produtividade/</link>
		<comments>http://robsonalves.net/portal/ferramentas-para-produtividade/#comments</comments>
		<pubDate>Tue, 24 May 2011 01:18:58 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[Debates]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Produtividade]]></category>
		<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Ferramentas para produtividade]]></category>
		<category><![CDATA[Produtidade]]></category>
		<category><![CDATA[Robson Alves]]></category>
		<category><![CDATA[RobsonAlves.net]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/ferramentas-para-produtividade/</guid>
		<description><![CDATA[&#160; &#160; Nos ultimos meses busquei em ferramentas uma forma de apurar minha produtividade e melhora-la. Este assunto é muito pessoal, mas pode ser que estas dicas ajudem alguns que estejam atrás do mesmo resultado. Para anotar as tasks categorizada por projetos, eu utilizo o evernote, cada nova nota faz referência a um projeto que [...]<hr>
Posts Relacionados:<ol>
<li><a href='http://robsonalves.net/portal/brasil-nos-preparativos-para-a-transio-ipv4-ipv6/' rel='bookmark' title='Brasil nos preparativos para a Transi&ccedil;&atilde;o IPv4 / IPv6'>Brasil nos preparativos para a Transi&ccedil;&atilde;o IPv4 / IPv6</a><small>A partir de março, ao menos três instituições brasileiras começam a discutir ações práticas para uma suave transição do protocolo internet, do IPv4 para o IPv6, já em andamento, mas que deverá ser acelrada no próximo ano. Na última sexta-feira,...</small></li>
<li><a href='http://robsonalves.net/portal/experimentos-do-google-google-labs/' rel='bookmark' title='Experimentos do Google &ndash; Google Labs'>Experimentos do Google &ndash; Google Labs</a><small>O google Labs realmente é um site com novidades incriveis, muita coisa que você nem imaginava existir e lá está, outras coisas mais… Vale a pena ver o poder das aplicações web no mundo e o time de feras que...</small></li>
<li><a href='http://robsonalves.net/portal/quick-post-formatando-cdigo-para-blog/' rel='bookmark' title='Quick Post: Formatando C&oacute;digo para Blog'>Quick Post: Formatando C&oacute;digo para Blog</a><small>Se você utiliza o WordPress como ferramenta de blogs, vai uma dica valiosa, qual penei para encontrar solução e agora compartilho. &#160; São dois passos: No Visual studio 2010 instale a Extension: Clique na Imagem ou Aqui para Download. &#160;...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p align="justify">&#160;</p>
<p align="justify">&#160;</p>
<p align="justify"><a href="http://robsonalves.net/portal/wp-content/uploads/2011/05/canivete.gif"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="canivete" border="0" alt="canivete" src="http://robsonalves.net/portal/wp-content/uploads/2011/05/canivete_thumb.gif" width="262" height="263" /></a></p>
<p align="justify">Nos ultimos meses busquei em ferramentas uma forma de apurar minha produtividade e melhora-la. </p>
<p align="justify"><strong>Este assunto é muito pessoal, mas pode ser que estas dicas ajudem alguns que estejam atrás do mesmo resultado.</strong></p>
<p align="justify">Para anotar as tasks categorizada por projetos, eu utilizo o <strong>evernote</strong>, cada nova nota faz referência a um projeto que estou engajado e utilizo caixas de seleção para cada tarefa que necessito realizar e até mesmo visualizar as tarefas já realizadas. Alguns lembretes e imagens podem ser armazenadas aqui desde que eu tenha que tomar alguma decisão sobre, entretanto este fazem partes de novas notas separadas.</p>
<p align="justify">O evernote atualmente possuí um aplicativo para android que supri todas as necessidades acima.</p>
<p align="justify"><a href="http://www.evernote.com/">http://www.evernote.com/</a></p>
<div align="justify">
<hr /></div>
<p align="justify"><strong>Dropbox</strong> atualmente serve como um compartilhador de arquivos, em alguma empresas sofri restrições quanto a utilização do google docs, então gosto de compartilhar alguns documentos prioritários.</p>
<p align="justify">Este támbem possuí um aplicativo para o android que supera espectativas, muito prático.</p>
<p align="justify"><a href="http://www.dropbox.com/">http://www.dropbox.com/</a></p>
<div align="justify">
<hr /></div>
<p align="justify"><strong>Grindstone</strong>, esta ferramentsa fica local e ela basicamente controla todo o tempo gasto em cada tarefa, também separando por projetos, este software possibilita a geração de relatórios contabilizando o tempo de trabalho e até mesmo o tempo ocioso. Ele permite acompanhar o tempo por um relógio a parte que serve como contador para cada atividade que você esteja no momento. Ele captura sua ausência do computador pela ociosidade do mouse e pergunta se o tempo ocioso é para ser somado a atividade vigente ou descartar,para mim, o melhor software desta categoria.</p>
<p align="justify">Este programa é utilizado para gestão pessoal, entretanto existe versões pagas que possibilitam a gestão de um time inteiro.</p>
<p align="justify"><a href="http://www.epiforge.com/Grindstone/">http://www.epiforge.com/Grindstone/</a></p>
<div align="justify">
<hr /></div>
<p align="justify">Uma outra ferramenta que pra mim tem um foco um pouco diferente, mas pode ser enquadrado aqui.</p>
<p align="justify"><strong>XMind</strong>, esta ferramenta colabora com a geração de mapas mentais, facilitando na organização do pensamento e na construção de idéias,</p>
<p align="justify">ideal para inicio de projetos ou no planejamento da carreira, reformas de casa em fim, tudo que dependa de uma grande massa de informação.</p>
<p align="justify">Existe uma versão similar para o Android chamado: <strong>Mind Map Memo, </strong>recomendo a todos.</p>
<p align="justify">&#160;</p>
<p align="justify">São estas ferramentas que venho utilizando e após longos meses a procura, hoje me sinto bem com estas, claro que com novas necessidades surgem novos procuras.</p>
<p align="justify">&#160;</p>
<p align="justify"><strong>Obrigado.</strong></p>
<hr><p>Posts Relacionados:</p><ol>
<li><a href='http://robsonalves.net/portal/brasil-nos-preparativos-para-a-transio-ipv4-ipv6/' rel='bookmark' title='Brasil nos preparativos para a Transi&ccedil;&atilde;o IPv4 / IPv6'>Brasil nos preparativos para a Transi&ccedil;&atilde;o IPv4 / IPv6</a><br /><small>A partir de março, ao menos três instituições brasileiras começam a discutir ações práticas para uma suave transição do protocolo internet, do IPv4 para o IPv6, já em andamento, mas que deverá ser acelrada no próximo ano. Na última sexta-feira,...</small></li>
<li><a href='http://robsonalves.net/portal/experimentos-do-google-google-labs/' rel='bookmark' title='Experimentos do Google &ndash; Google Labs'>Experimentos do Google &ndash; Google Labs</a><br /><small>O google Labs realmente é um site com novidades incriveis, muita coisa que você nem imaginava existir e lá está, outras coisas mais… Vale a pena ver o poder das aplicações web no mundo e o time de feras que...</small></li>
<li><a href='http://robsonalves.net/portal/quick-post-formatando-cdigo-para-blog/' rel='bookmark' title='Quick Post: Formatando C&oacute;digo para Blog'>Quick Post: Formatando C&oacute;digo para Blog</a><br /><small>Se você utiliza o WordPress como ferramenta de blogs, vai uma dica valiosa, qual penei para encontrar solução e agora compartilho. &#160; São dois passos: No Visual studio 2010 instale a Extension: Clique na Imagem ou Aqui para Download. &#160;...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/ferramentas-para-produtividade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extesion Methods</title>
		<link>http://robsonalves.net/portal/extesion-methods/</link>
		<comments>http://robsonalves.net/portal/extesion-methods/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 04:34:42 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Csharp]]></category>
		<category><![CDATA[Extension Methods]]></category>
		<category><![CDATA[Métodos]]></category>
		<category><![CDATA[Métodos de Extensão]]></category>
		<category><![CDATA[Robson Alves]]></category>
		<category><![CDATA[RobsonAlves.net]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/extesion-methods/</guid>
		<description><![CDATA[Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em uma classe externa. No exemplo abaixo vou fazer um método de extensão chamado CamelCase, que [...]<hr>
Posts Relacionados:<ol>
<li><a href='http://robsonalves.net/portal/estrutura-de-classes-instanciadas-e-staticas/' rel='bookmark' title='Estrutura de Classes Instanciadas e Staticas'>Estrutura de Classes Instanciadas e Staticas</a><small>Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....</small></li>
<li><a href='http://robsonalves.net/portal/quick-post-gerando-novas-thread-net/' rel='bookmark' title='Gerando Novas Thread .Net (MultThreading)'>Gerando Novas Thread .Net (MultThreading)</a><small>Pois é, mas o que é uma Thread? Segundo o Wikipedia: (Fonte) Linha de execução (em inglês: Thread), é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O suporte...</small></li>
<li><a href='http://robsonalves.net/portal/java-rmi-exemplo-bsico/' rel='bookmark' title='Java + RMI &ndash; Exemplo B&aacute;sico'>Java + RMI &ndash; Exemplo B&aacute;sico</a><small>&#160; Este post de Java, esta aqui na verdade para auxiliar os alunos do Curso de Ciência da Computação, sala qual faço parte e as vezes dedico meu tempo para ajudar alguns alunos interessados! O código abaixo é quase uma...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em uma classe externa. </p>
<p>No exemplo abaixo vou fazer um método de extensão chamado CamelCase, que retornorá todo o texto incluso dentro das normas do CamelCase, para aqueles que não sabem: </p>
<p><em></em></p>
<p><em><a href="http://robsonalves.net/portal/wp-content/uploads/2011/04/images.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="images" border="0" alt="images" src="http://robsonalves.net/portal/wp-content/uploads/2011/04/images_thumb.jpg" width="315" height="211" /></a></em></p>
<p><em>CamelCase é a denominação em inglês para a prática de escrever palavras compostas ou frases, onde cada palavra é iniciada com Maiúsculas e unidas sem espaços. É um padrão largamente utilizado em diversas linguagens de programação, como Java, Ruby, PHP e Python, principalmente nas definições de Classes e Objetos. Pela sua associação com tecnologia, o marketing se apropriou dessa maneira de escrever, injetando certo ar de &quot;tecnologia&quot; nos produtos assim nomeados: iPod, GameCube, OpenOffice.org, StarCraft, dentre outros.</em> (<a href="http://pt.wikipedia.org/wiki/CamelCase">Fonte</a>) </p>
<p><strong>Vamos ao exemplo </strong></p>
<pre class="brush: csharp, highlight:[3]"> public static class ExtensionMethods
    {
        public static String CamelCase(this String source)
        {
            string[] arr = source.Split(new char[] { ' ', ',', '.', '_', '-' });
            String Retorno = string.Empty;

            foreach (String item in arr)
            {
                Retorno += item.Substring(0, 1).ToUpper() + item.Substring(1, item.Length - 1).ToLower();
            }

            return Retorno;
        }

    }</pre>
<p>Repare que o método pode estar em qualquer classe do tipo <em><strong>static</strong> </em>, o compilador ao entepretar o This na entrada dos parâmetros, reconhecerá em seguida este método como de extensão, independentemente do nome da sua classe ou namespace. Para sanar esta possivel dúvida eu gerei uma classe dento do namespace da página Default.aspx.cs, e ambos foram reconhecidos como extensão. </p>
<pre class="brush: csharp, highlight:[9,10,15,17]">    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                String Case = &quot;toDo Mundo sabE quE o camEl case-tem a primeira_letra de cada nova palavra como_maíuscula e sem espaço&quot;;
                int Numero = 12031202;
                Response.Write(Case.CamelCase());
                Response.Write(Numero.ParOuImpar());
            }
        }
    }

    public static class RobsonAlves
    {
        public static String ParOuImpar(this int Numero)
        {
            if (Numero % 2 == 0)
                return &quot;PAR&quot;;
            else
                return &quot;IMPAR&quot;;
        }
    }</pre>
<p>è isso ai, os métodos de extensão são bem legais e simples, vale agora ter a necessidade de usar mais esta.<br />
  <br /><strong>Obrigado.</strong></p>
<hr><p>Posts Relacionados:</p><ol>
<li><a href='http://robsonalves.net/portal/estrutura-de-classes-instanciadas-e-staticas/' rel='bookmark' title='Estrutura de Classes Instanciadas e Staticas'>Estrutura de Classes Instanciadas e Staticas</a><br /><small>Neste tópico vamos falar sobre algumas particularidades da programação orientada a objetos. Todo programa possuirá suas classes e neste ambiente existirá a super-classe e a partir dela as sub-classes. Este conceito tem como foco quando falarmos de heranças entre classes....</small></li>
<li><a href='http://robsonalves.net/portal/quick-post-gerando-novas-thread-net/' rel='bookmark' title='Gerando Novas Thread .Net (MultThreading)'>Gerando Novas Thread .Net (MultThreading)</a><br /><small>Pois é, mas o que é uma Thread? Segundo o Wikipedia: (Fonte) Linha de execução (em inglês: Thread), é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O suporte...</small></li>
<li><a href='http://robsonalves.net/portal/java-rmi-exemplo-bsico/' rel='bookmark' title='Java + RMI &ndash; Exemplo B&aacute;sico'>Java + RMI &ndash; Exemplo B&aacute;sico</a><br /><small>&#160; Este post de Java, esta aqui na verdade para auxiliar os alunos do Curso de Ciência da Computação, sala qual faço parte e as vezes dedico meu tempo para ajudar alguns alunos interessados! O código abaixo é quase uma...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/extesion-methods/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encontre no Texto com Express&#245;es Regulares</title>
		<link>http://robsonalves.net/portal/encontre-o-texto-com-expresses-regulares/</link>
		<comments>http://robsonalves.net/portal/encontre-o-texto-com-expresses-regulares/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 06:20:03 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Expressão Regular]]></category>
		<category><![CDATA[FrameWork 4.0]]></category>
		<category><![CDATA[ER]]></category>
		<category><![CDATA[Procurar no texto]]></category>
		<category><![CDATA[REGEX]]></category>
		<category><![CDATA[Robson Alves. Expressões Regulares]]></category>
		<category><![CDATA[RobsonAlves.net]]></category>
		<category><![CDATA[Text with ER]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/encontre-o-texto-com-expresses-regulares/</guid>
		<description><![CDATA[Vou mostrar aqui 4 exemplos simples que captura texto, grupo de texto e faz replace dentro de um trecho via Expressão Regular As ER's transferem um poder gigantesco quando necessitamos desta tarefas e até mesmo na geração de mascarás para textbox. &#160; O REGEX possui algumas opções e é muito importante entender a funcionalidade de [...]<hr>
Posts Relacionados:<ol>
<li><a href='http://robsonalves.net/portal/colocar-confirm-no-aspmenu/' rel='bookmark' title='Colocar Confirm() no ASP:Menu'>Colocar Confirm() no ASP:Menu</a><small>&#160; Bom Pessoal,para quem utiliza os benditor &lt;asp:menu&gt;, passa por algumas necessidades, como por exemplo, colocar javascript quando o cliente clicar sobre um dos itens. Então Vamos a Solução: Existe Duas Possibilidades, se você estiver carregando o menuItem por um...</small></li>
<li><a href='http://robsonalves.net/portal/expresses-regulares/' rel='bookmark' title='Express&otilde;es Regulares'>Express&otilde;es Regulares</a><small>Um dos estudos recentes que estou pondo em prática, acredito no poder da expressão regular e na sua importância, apesar de ter outras formas mais “Humanas” de se fazer a mesma coisa, é importante termos o conhecimento dessas expressões, como...</small></li>
<li><a href='http://robsonalves.net/portal/extesion-methods/' rel='bookmark' title='Extesion Methods'>Extesion Methods</a><small>Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Vou mostrar aqui 4 exemplos simples que captura texto, grupo de texto e faz replace dentro de um trecho via <strong>Expressão Regular</strong> </p>
<p>As ER's transferem um poder gigantesco quando necessitamos desta tarefas e até mesmo na geração de mascarás para textbox. </p>
<p>&#160;</p>
<p>O REGEX possui algumas opções e é muito importante entender a funcionalidade de cada um para utilizar o ER da melhor forma:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/yd1hzczs(v=VS.100).aspx">http://msdn.microsoft.com/en-us/library/yd1hzczs(v=VS.100).aspx</a></p>
<p><a href="http://robsonalves.net/portal/wp-content/uploads/2011/04/RegexOptionspng.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="RegexOptions,png" border="0" alt="RegexOptions,png" src="http://robsonalves.net/portal/wp-content/uploads/2011/04/RegexOptionspng_thumb.png" width="168" height="185" /></a></p>
<p>&#160;</p>
<p>Vamos a prática. </p>
<hr /><b>Buscando Texto</b>
<pre class="brush: csharp, highlight:[1]"> String Fonte = &quot;aonde Quer Vá, Aonde Quer Que Seja, Ande com as pés&quot;;
 private void buscaTexto()
        {

            // Instância do Regex e a palavra que vamos buscar na fonte.
            Regex regex = new Regex(&quot;Aonde&quot;);

            // Armazena a coleção de Expressões Casadas.
            MatchCollection coll = regex.Matches(Fonte);

            foreach (Match item in coll)
            {
                lblResults.Text += String.Format(&quot; Encontrei a palavra {0} na posição {1} e Termina na Posição {2}&quot;,
					item.Value.Trim(), item.Index, item.Index + item.Value.Length);
            }
        }</pre>
<p><b>Quantidade de Letras por palavras</b> </p>
<pre class="brush: csharp">String Fonte = &quot;aonde Quer Vá, Aonde Quer Que Seja, Ande com as pés&quot;;
 private void buscaTextoQtdLetras()
        {
            //Busca por palavras que contenha apenas Letras Maiuscula e Minuscula
            // e tenham 3 ou mais caracteres.
            Regex regex = new Regex(&quot;[a-zA-Z]{5,}&quot;);
            // Armazena a coleção de Expressões Casadas.
            MatchCollection coll = regex.Matches(Fonte);

            foreach (Match item in coll)
            {
                lblResults.Text += String.Format(&quot; Encontrei a palavra {0} na posição {1} e Termina na Posição {2} Que Possui {3} ou Mais&quot;, item.Value.Trim(), item.Index, item.Index + item.Value.Length, item.Value.Length);
            }
        }</pre>
<p><b>Extraindo Grupo do Text</b> </p>
<pre class="brush: csharp"> private void ExtraindoPorGrupos()
        {
            String End = &quot;1234 Cherry Lane, USA&quot; + Environment.NewLine + &quot;1234 Apple Tree Drive, Smalltown, USA &quot; + Environment.NewLine + &quot;3456 Chry Orchard streetm Smalltown, USA&quot;;

            //Busca da esquerda pra direita após os numeros o nome da rua, pegando os espaços \\s entre as letras e pegando todas,
            //ignorando a virgula e tudo que vem após a mesma.
            Regex regex = new Regex(&quot;^(?<numero>\\d+)\\s*(?<rua>[\\w\\s]*)&quot;, RegexOptions.Multiline);

            MatchCollection coll = regex.Matches(End);

            foreach (Match item in coll)
            {
                string Rua = item.Groups[&quot;Rua&quot;].Value;
                String Numero = item.Groups[&quot;Numero&quot;].Value;
                lblResults.Text += &quot;&quot;+ String.Format(&quot;Rua : {0} &quot;, Rua);
                lblResults.Text += &quot;&quot; + String.Format(&quot;Número :{0} &quot;, Numero);
            }
        }</rua></numero></pre>
<p><b>Replace Com Regex </b></p>
<pre class="brush: csharp">private void ReplaceTexto()
        {
            Regex regex = new Regex(&quot;^[aA]\\w+&quot;);

            lblResults.Text += &quot;&quot; + regex.Replace(Fonte, &quot;Por Onde&quot;);
        }</pre>
<p>Após rodar a aplicação o seguinte resultado é gerado:</p>
<p><a href="http://robsonalves.net/portal/wp-content/uploads/2011/04/OutPut.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="OutPut" border="0" alt="OutPut" src="http://robsonalves.net/portal/wp-content/uploads/2011/04/OutPut_thumb.png" width="580" height="194" /></a></p>
<p>
Muito legal, acredito que isto ajudará a ter noção do que da pra ser feito com Regex e Expressões Regulares, compensa sim dar uma estuda na sintaxe ER para .Net.</p>
<p> Obrigado. </p>
<hr><p>Posts Relacionados:</p><ol>
<li><a href='http://robsonalves.net/portal/colocar-confirm-no-aspmenu/' rel='bookmark' title='Colocar Confirm() no ASP:Menu'>Colocar Confirm() no ASP:Menu</a><br /><small>&#160; Bom Pessoal,para quem utiliza os benditor &lt;asp:menu&gt;, passa por algumas necessidades, como por exemplo, colocar javascript quando o cliente clicar sobre um dos itens. Então Vamos a Solução: Existe Duas Possibilidades, se você estiver carregando o menuItem por um...</small></li>
<li><a href='http://robsonalves.net/portal/expresses-regulares/' rel='bookmark' title='Express&otilde;es Regulares'>Express&otilde;es Regulares</a><br /><small>Um dos estudos recentes que estou pondo em prática, acredito no poder da expressão regular e na sua importância, apesar de ter outras formas mais “Humanas” de se fazer a mesma coisa, é importante termos o conhecimento dessas expressões, como...</small></li>
<li><a href='http://robsonalves.net/portal/extesion-methods/' rel='bookmark' title='Extesion Methods'>Extesion Methods</a><br /><small>Esse assunto é bem legal e simples, como verão abaixo. Uma classe de extensão, permite que gere novos métodos para as váriaveis do projeto como acontece em .ToString(), .ToUpper(). Pemitindo costumizar o codigo ao seu gosto, centralizando seus métodos em...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/encontre-o-texto-com-expresses-regulares/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Session State</title>
		<link>http://robsonalves.net/portal/session-state/</link>
		<comments>http://robsonalves.net/portal/session-state/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 03:12:33 +0000</pubDate>
		<dc:creator>Robson Alves</dc:creator>
				<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Inproc]]></category>
		<category><![CDATA[Robson Alves]]></category>
		<category><![CDATA[robsonalvesti]]></category>
		<category><![CDATA[Session]]></category>
		<category><![CDATA[SQLServer X StateServer]]></category>
		<category><![CDATA[StateServer]]></category>

		<guid isPermaLink="false">http://robsonalves.net/portal/session-state/</guid>
		<description><![CDATA[Vou falar um pouco dos tipos de status existentes nas sessions geradas na aplicação Por Que Se Preocupar? Os tipos de session possuim certas limitações que devem ser consideradas, após analisar o nível de acesso que o sistema terá ao longo do tempo, o tipo de hospedagem que este terá (Caso seja por terceiros), trâfego [...]
Nenhum Post Relacionado.]]></description>
			<content:encoded><![CDATA[<p>Vou falar um pouco dos tipos de status existentes nas sessions geradas na aplicação</p>
<p><strong><font size="3">Por Que Se Preocupar?</font></strong></p>
<p>Os tipos de session possuim certas limitações que devem ser consideradas, após analisar o nível de acesso que o sistema terá ao longo do tempo, o tipo de hospedagem que este terá (Caso seja por terceiros), trâfego absoluto que o site tem.    <br />Tudo isto deve ser levado em consideração na hora de utilizar Session em um sistema, a seguir ficará&#160; mais claro os porquês desta preocupação.</p>
<p><strong><font size="3">Quais são os tipos ? </font></strong></p>
<p style="width: 587px; height: 65px">Os tipos são:    <br /><strong>Inproc</strong>: Considerado o mais rápido dos tipos existente, por manter objetos em memória junto com o processo do ASP.Net. </p>
<p><strong>StateServer</strong>: Aqui toda a sessão é serializada, assim tendo uma perca de performace quando comparado ao InProc, entretanto existe a possibilidade de enviar esta sessão para outro servidor tornar-se resposável pelo armazenamento destas informações, podendo assim ser uma boa escolha. Largamente recomendado quando existe um grande fluxo de usuário no site.     <br />Para utilizar este serviço, procure nos serviços do Windows o processo chamado: <font color="#0000ff"><strong>ASP.NET State Services, para tal digite no executar, services.msc.        <br /></strong><a href="http://robsonalves.net/portal/wp-content/uploads/2011/04/explor10.jpg"><strong><img style="background-image: none; border-right-width: 0px; margin: 5px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="explor10" border="0" alt="explor10" src="http://robsonalves.net/portal/wp-content/uploads/2011/04/explor10_thumb.jpg" width="552" height="166" /></strong><font color="#000000">Para</font></a></font><font color="#000000"> descobrir a porta do servidor qual será configurado para armazenar é necessário encontrar nos registros o mesmo.</font>       </p>
<p><strong>SQLServer</strong>: Sim, a session é armazenada em banco de dados, e possuí também certa desvatagem performática, quando comparado ao Inproc, entretanto esta forma permite que a sessão seja recuperada desde que dentro da “Validade” da sessão gerada.     </p>
<p>Para informar o tempo que será válida a sessão, assim como qual servidor atendará no armazenamento das informações das sessões ou qual o servidor e instâncias que será utilizado. <a href="http://robsonalves.net/portal/wp-content/uploads/2011/04/explor5.jpg"><img style="background-image: none; border-right-width: 0px; margin: 5px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="explor5" border="0" alt="explor5" src="http://robsonalves.net/portal/wp-content/uploads/2011/04/explor5_thumb.jpg" width="536" height="387" /></a>     </p>
<p><font color="#2c2b2b" size="3"><strong>Web-Config</strong></font></p>
<p>Para cada tipo respectivamente, segue como deve ser declarado no Web.Config.    <br /><strong>Inproc</strong>:     <br /> 
<pre class="brush: csharp">

&lt;system.web&gt;
    &lt;sessionState 

&#160; mode=&quot;InProc&quot; 

&#160; timeout=&quot;1&quot; 

&#160; cookieless=&quot;false&quot;&gt; 

&lt;/sessionState&gt; 

&lt;/system.web&gt; 
</pre>
<p><strong>StateServer</strong>: <u></u></p>
<pre class="brush: csharp">

&lt;sessionState
  &#160; mode=&quot;StateServer&quot; 

&#160; cookieless=&quot;false&quot; 

&#160; stateNetworkTimeout=&quot;20&quot; 

&#160; stateConnectionString=&quot;127.0.0.1:42424&quot;&gt; 

&lt;/sessionState&gt; 


</pre>
<p></p>
<p><strong>SqlServer</strong> </p>
<pre class="brush: csharp">

&lt;sessionState
  &#160; mode=&quot;StateServer&quot; 

&#160; timeout=&quot;20&quot; 

&#160; cookieless=&quot;false&quot; 

&#160; sqlConnectionString=&quot;Data Source=127.0.0.1;Trusted_Connection=Yes;&quot;&gt; 

&lt;/sessionState&gt; 


</pre>
<p></p>
<p>Usando o Cookieless igual a &quot;False&quot;, quer dizer que será gerado junto com a sessão Cookies.</p>
<p>Eu iria listar vantagem e desvantagens de cada um, mas isso tornaria uma análise extremamente pessoal, e como foi citado inicialmente isso deve ser utilizado após a análise das necessidades do sistema.</p>
<p>Para buscarem mais detalhes sobre este assunto:<br />
  <br /><a href="http://www.codeproject.com/KB/aspnet/ExploringSession.aspx">http://www.codeproject.com/KB/aspnet/ExploringSession.aspx</a> </p>
<p>Obrigado.</p>
<p>Nenhum Post Relacionado.</p>]]></content:encoded>
			<wfw:commentRss>http://robsonalves.net/portal/session-state/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

