Encontre no Texto com Expressões Regulares
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.
O REGEX possui algumas opções e é muito importante entender a funcionalidade de cada um para utilizar o ER da melhor forma:
http://msdn.microsoft.com/en-us/library/yd1hzczs(v=VS.100).aspx
Vamos a prática.
Buscando Texto
String Fonte = "aonde Quer Vá, Aonde Quer Que Seja, Ande com as pés";
private void buscaTexto()
{
// Instância do Regex e a palavra que vamos buscar na fonte.
Regex regex = new Regex("Aonde");
// Armazena a coleção de Expressões Casadas.
MatchCollection coll = regex.Matches(Fonte);
foreach (Match item in coll)
{
lblResults.Text += String.Format(" Encontrei a palavra {0} na posição {1} e Termina na Posição {2}",
item.Value.Trim(), item.Index, item.Index + item.Value.Length);
}
}
Quantidade de Letras por palavras
String Fonte = "aonde Quer Vá, Aonde Quer Que Seja, Ande com as pés";
private void buscaTextoQtdLetras()
{
//Busca por palavras que contenha apenas Letras Maiuscula e Minuscula
// e tenham 3 ou mais caracteres.
Regex regex = new Regex("[a-zA-Z]{5,}");
// Armazena a coleção de Expressões Casadas.
MatchCollection coll = regex.Matches(Fonte);
foreach (Match item in coll)
{
lblResults.Text += String.Format(" Encontrei a palavra {0} na posição {1} e Termina na Posição {2} Que Possui {3} ou Mais", item.Value.Trim(), item.Index, item.Index + item.Value.Length, item.Value.Length);
}
}
Extraindo Grupo do Text
private void ExtraindoPorGrupos()
{
String End = "1234 Cherry Lane, USA" + Environment.NewLine + "1234 Apple Tree Drive, Smalltown, USA " + Environment.NewLine + "3456 Chry Orchard streetm Smalltown, USA";
//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("^(?\\d+)\\s*(?[\\w\\s]*)", RegexOptions.Multiline);
MatchCollection coll = regex.Matches(End);
foreach (Match item in coll)
{
string Rua = item.Groups["Rua"].Value;
String Numero = item.Groups["Numero"].Value;
lblResults.Text += ""+ String.Format("Rua : {0} ", Rua);
lblResults.Text += "" + String.Format("Número :{0} ", Numero);
}
}
Replace Com Regex
private void ReplaceTexto()
{
Regex regex = new Regex("^[aA]\\w+");
lblResults.Text += "" + regex.Replace(Fonte, "Por Onde");
}
Após rodar a aplicação o seguinte resultado é gerado:
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.
Obrigado.
Session State
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 absoluto que o site tem.
Tudo isto deve ser levado em consideração na hora de utilizar Session em um sistema, a seguir ficará mais claro os porquês desta preocupação.
Quais são os tipos ?
Os tipos são:
Inproc: Considerado o mais rápido dos tipos existente, por manter objetos em memória junto com o processo do ASP.Net.
StateServer: 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.
Para utilizar este serviço, procure nos serviços do Windows o processo chamado: ASP.NET State Services, para tal digite no executar, services.msc.
Para descobrir a porta do servidor qual será configurado para armazenar é necessário encontrar nos registros o mesmo.
SQLServer: 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.
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.
Web-Config
Para cada tipo respectivamente, segue como deve ser declarado no Web.Config.
Inproc:
<system.web>
<sessionState
mode="InProc"
timeout="1"
cookieless="false">
</sessionState>
</system.web>
StateServer:
<sessionState mode="StateServer" cookieless="false" stateNetworkTimeout="20" stateConnectionString="127.0.0.1:42424"> </sessionState>
SqlServer
<sessionState mode="StateServer" timeout="20" cookieless="false" sqlConnectionString="Data Source=127.0.0.1;Trusted_Connection=Yes;"> </sessionState>
Usando o Cookieless igual a "False", quer dizer que será gerado junto com a sessão Cookies.
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.
Para buscarem mais detalhes sobre este assunto:
http://www.codeproject.com/KB/aspnet/ExploringSession.aspx
Obrigado.
Publicando WebSite ASP.Net
Atualmente na criação de alguns sistemas que pretendo utilizar para minha satisfação e organização no dia-a-dia, venho sofrendo largamente no momento em que
necessito transferir minhas soluções para a internet, e não sofro por demora no envio do FTP, ou falta de espaço em disco rigido ou por ser extremamente difícil.
A surra que eu levo é do meu Web.Config que sempre retorna algum problema que faz que eu perca um largo tempo para achar a solução, incrível.
Inicialmente encontrei o error onde era informado que eu deveria setar no meu Web.Config a tag:

Isto para que o asp.net não trata-se qualquer erro e esconde-se do meu Front-End, após isso encarei o erro
403.14 - Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Este erro não diz, mas espera que você agora crie realmente uma aplicação no IIS, desta forma preciso ir dentro do meu host e configurar o IIS (Apertar um botão) e aguardar que ele crie esta aplicação dentro do Mano IIS.
Agora sim tudo certo. você realmente configurou sua aplicação. Na internet você encontra também formas de acesso configurados pelo Web.Config, assim como permissões de páginas que dependendo do caso, são bem legais.
Como um adicional ao assunto, uma outra tag que foi necessário que eu precisei remover foi o <WebServer> ... </WebServer>
Comentem suas experiências!