Dica: Usar o WCF Test Client sem Visual Studio instalado

6 comentários

O WCF Test Client, como já mostrei aqui, é uma ferramenta gráfica que permite aos usuários informar parâmetros de entrada, e ver a resposta que o serviço envia de volta. O fato é que ele está disponível apenas em computadores onde o Visual Studio (2008 ou 2010) está instalado. O problema é que geralmente não temos Visual Studio instalado em servidores, onde precisamos testar o acesso a serviços antes de disponibilizá-los.

Para conseguir rodar o WCF Test Client em computadores que não tem o Visual Studio, basta copiar os seguintes arquivos da pasta C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE. [este endereço pode variar conforme a instalação do VS em seu computador.]

  • SvcUtil.exe
  • SvcUtil.exe.config
  • WcfSvcHost.chm
  • WcfSvcHost.exe
  • WcfSvcHost.exe.config
  • WcfTestClient.chm
  • WcfTestClient.exe
  • WcfTestClient.exe.config

Para fazer download dos arquivos, acesse os links a seguir:

Referência:

Dica: Extrair SQL de consultas LINQ / Lambda

2 comentários

Para saber qual foi a query Sql gerada ao executar uma instrução LINQ, basta usar o seguinte código:

string strQuery = (qLinq as ObjectQuery).ToTraceString();
// é necessário: using System.Data.Objects;

Exemplo:

Linq:

var qLinq = from t in c.TABELAs
            where t.CAMPO1 < i
            select t;

Lambda:

var qLambda = c.TABELAs.Where(t => t.CAMPO1 < i);

Query SQL Gerada:

SELECT
       [Extent1].[CAMPO1] AS [CAMPO1],
       [Extent1].[CAMPO2] AS [CAMPO2]
  FROM [dbo].[TABELA] AS [Extent1]
 WHERE [Extent1].[CAMPO1] < @p__linq__1

OBS: A Sql gerada é igual tanto para a Query Linq quanto para a Lambda Expression.

Essa dica foi o Marquinhos que me passou.

Artigo no iMasters

Deixe um comentário

Tive meu primeiro artigo publicado no iMasters. Apesar de ser um artigo que já havia publicado aqui no blog, vale a pena conferir pois fiz pequenas modificações para melhorar o conteúdo.

Programando threads em C#

Usar threads é sempre vantajoso no ponto de vista de que podemos aproveitar o poder de processamento dos processadores que possuem mais de um núcleo, pois podemos programar para que cada thread tenha o seu processamento realizado por núcleos diferentes.

Neste link: http://imasters.com.br/artigo/19541/csharp/programando_threads_em_c/

Obrigado.

Desafios da Computação em Nuvens nas Empresas

Deixe um comentário

Migrar serviços para a Nuvem é um grande desafio para as empresas e profissionais de TI. A mudança da estrutura de TI de uma empresa para a tecnologia em nuvem implica em riscos ainda não conhecidos e geram barreiras para muitos projetos, além dos investimentos necessários. Como sempre, a tomada de decisão não deve ser precipitada e os riscos e benefícios devem ser muito bem avaliados.

É crescente a quantidade de empresas que analisam a possibilidade de adoção da computação nas nuvens, por conta da flexibilidade de gestão que o ambiente proporciona.

No início se falava em nuvens públicas, cujos equipamentos, infraestrutura e aplicações são compartilhados por milhares de usuários em todo o mundo, por intermédio da internet. Um bom exemplo de nuvem pública é o que o Google implementa, com servidores instalados em vários lugares do mundo.

Hoje, se fala muito em nuvens privadas, ambiente dentro da própria empresa, com segurança maior, e com acesso restrito a pessoas autorizadas, geralmente funcionários. No entanto, as nuvens privadas também têm sua dose de desafios e eles não estão restritos apenas à segurança. A dificuldade de gerenciar pode ser uma barreira, sem contar com a preparação necessária para migrar os ambientes tradicionais de TI para cloud computing.

Para o usuário, deve ser transparente o fato de a nuvem ser pública ou privada. Uma das desvantagens das nuvens públicas sobre as nuvens privadas é por não fornecerem a segurança e a privacidade de informações que muitas empresas necessitam.

Na perspectiva de muitos gestores de TI, a nuvem equivale a uma solução de virtualização. Normalmente, o que dizem ser um projeto de cloud computing nada mais é do que uma estrutura virtual, ou seja, com os equipamentos e sistemas compartilhando recursos sob demanda. Virtualização e nuvem, no entanto, são coisas distintas.

Vejamos alguns benefícios e riscos da computação em nuvens:

Benefícios:

  • A computação em nuvem pode ser mais uma ferramenta nas mãos da equipe de TI, ajudando a suprir as necessidades do negócio de forma criativa, mais rápida e eficiente, especialmente se unida aos recursos internos de datacenter.
  • A computação em nuvem oferece o potencial para recursos variáveis de computação, permitindo que as empresas diminuam os gastos da área de TI para o essencial e fiquem mais confiantes para enfrentar demanda de pico.
  • Mais rapidez para as ofertas do mercado com potenciais vantagens de estratégia, com baixo custo total como vantagem operacional crítica.

Riscos:

  • Algumas cargas de trabalho não têm sentido em computação em nuvem. As equipes de TI precisam estar preparadas para mudar a organização e as habilidades necessárias, mas também manter a empresa longe das estratégias de risco.
  • Interrupções e perda de dados são os maiores riscos. A nuvem requer novos relacionamentos com fornecedores, entendimento absoluto da segurança oferecida e mais ênfase no monitoramento da experiência do usuário final.

À medida que a computação em nuvem evolui, como todo caso de implantação de tecnologias recentes, as empresas se deparam com questões pouco exploradas, como a necessidade de integrar os diferentes ambientes de TI. Isso porque, as perspectivas são de que as corporações atuem, cada vez mais, com modelos híbridos, uma união entre nuvem pública e nuvem privada, nos quais sistemas instalados no datacenter da companhia conversem com fornecedores terceirizados e com provedores de cloud computing.

Conclusão

A computação em nuvem está em estágio inicial de adoção e conforme ela vai ganhando espaço, soluções aparecerão para os problemas atuais. Os líderes de TI devem antecipar como ela poderá mudar a TI, as habilidades necessárias e as relações de negócio a fim de extrair todo o potencial oferecido pela nuvem.

__________________________________________

OBS: Este artigo foi escrito como trabalho a ser entregue na disciplina Gestão de Tecnologia da Informação do curso de Inteligência de Negócios da Faculdade de Tecnologia de Jaú – FATEC.

Referências

Obrigado e até mais!

Por que usar StringBuilder?

2 comentários

Outro dia fiz um post que mostra a comparação entre String e StringBuilder com relação a velocidade de execução. A intuito deste novo post é explicar o por que do StringBuilder levar muito menos tempo na execução do que os Strings comuns. [Dica do 1000TON – Valeu cara!]

O que o Milton disse no comentário dele foi:

Realmente a diferença é brutal. A forma de trabalho das strings faz com que a mesma seja mais lerda, isso pq sempre que concatenamos o compilador gera um novo array de char com o tamanho final (antigo + tamanho concatenado)

…..

Vamos as explicações

Toda vez que o conteúdo de uma string é alterado, um novo objeto string é criado na memória, o que requer uma nova alocação de espaço para esse novo objeto. Em situações onde é necessários realizar repetidas modificações em uma string (como o caso do exemplo que dei no meu post), a sobrecarga associada à criação de um novo string pode ter um custo caro, tanto em tempo de execução, quanto em uso de memória. O StringBuilder pode ser usado para esses casos de necessidade de modificar strings sem criar um novo objeto.

O StringBuilder representa uma sequência de caracteres cujo valor pode ser modificado. Dizer que o valor pode ser modificado significa que pode ser alterado depois de ter sido criado, acrescentando, removendo ou substituindo caracters.

O desempenho de uma operação de concatenação de um String ou StringBuilder depende da freqüência na qual a alocação de memória ocorre. Como já disse, um string sempre aloca memória a cada concatenação (alteração). Já com o StringBuilder, a operação de concatenação aloca memória apenas para os novos conteúdos adicionados. Consequentemente, string é preferível para operações de concatenação com um número fixo de objetos a serem concatenados. Nesse caso, as operações de concatenação são combinadas em uma única operação pelo compilador.  Já o StringBuilder é preferível para uma operação de concatenação quando um número grande de concatenações devem ser realizadas.

Membros importantes do StringBuilder

  • Construtor StringBuilder(): Inicializa uma nova instância da classe StringBuilder.
  • Método Append(): Concatena um novo objeto à instância do StringBuilder. Existem vários overloads deste métodos, na qual vários tipos de dados podem ser usados, como Boolean, Int, Decimal, String, etc., não necessariamente strings.
  • Método AppendLine(): Concatena um novo objeto à instância do StringBuilder e adiciona um terminador de linha ao final da concatenação.
  • Método Clear(): Limpa o StringBuilder.
  • Método Insert(): Insere o conteúdo especificado na posição desejada.
  • Método Remove(): Remove o intervalo especificado de caracteres da instância do StringBuilder.
  • Método Replace(): Substitui todas as ocorrências de um caractere especificado com outro caractere especificado.
  • Método ToString(): Converte o conteúdo do StringBuilder para uma string comum.
  • Propriedade Capacity: Obtém ou define a quantidade máxima de caracteres que podem ser contidos na memória alocada pela instância do StringBuilder.
  • Propriedade Length: Obtém o comprimento da instância atual do StringBuilder.

Fontes

Visual Studio 2010 SP1 Beta

2 comentários

O Service Pack 1 Beta do Visual Studio 2010 já está disponível para download.

Este service pack beta resolve problemas que foram encontrados através de uma combinação de clientes e de parceiros Microsoft, bem como testes internos. Este pacote oferece aos usuários do Visual Studio melhorias na estabilidade, agilidade e desempenho. O feedback recebido durante o lançamento da versão beta será utilizado para entregar uma versão final do service pack.

Fonte: Microsoft

O Downlod pode ser feito através deste link.

Fonte: Jason Zander’s WebLog

String Vs. StringBuilder

6 comentários

Você concatena strings com concatenação comum ou usa o StringBuilder?

Há alguns dias fui questionado sobre isso e na hora me veio a idéia de fazer um teste para comparação.

Conceitos

StringBuilder: http://msdn.microsoft.com/en-us/library/2839d5h5(v=VS.100).aspx

String: http://msdn.microsoft.com/en-us/library/362314fe(v=VS.100).aspx

Vamos ao Teste

Fiz um pequeno programa que simula uma grande quantidade de concatenações ou appends em StringBuilders. A idéia é um bloco for que concatena uma string várias vezes e outro bloco for que faz vários appends em um StringBuilder. Algo desse tipo:

// Várias concatenações na string
string str = string.Empty;
for (int i = 1; i <= qt; i++)
    str = str + " Concatenação nº " + i.ToString();

// Vários appends no StringBuilder
StringBuilder stb = new StringBuilder();
for (int i = 1; i <= qt; i++)
{
    stb.Append(" Append nº ");
    stb.Append(i.ToString());
}

O resultado foi de impressionar. Veja:

No teste, executei 100.000 concatenações/appends, e o tempo de execução das concatenações foi absurdamente maior que o tempo de execução dos appends.

Portanto, a partir de agora, use StringBuilder em vez de strings comuns.

O código fonte pode ser baixado aqui.

Valeu galera!

Older Entries