Volta…


Bom, para aqueles que ainda não sabem me mudei para o canada. Desde de Janeiro tem sido um tempo de adaptação. Peco desculpas por não estar postando muitas coisas.

Comecei meu Bacharelado em Engenharia de Software na McGill University em Montreal o que esta consumindo todo meu tempo. Mas espero voltar a escrever artigos em breve, não somente sobre C# mas agora também sobre java, python, html, css, C++ entre outras.

Aguardem que novidades virão.

Cheers 🙂

Lineker Tomazeli


ASP.NET XML webservices


Hoje falaremos sobre XML webservices, um pouca da sua história e o objetivo dele ter sido desenvolvido e estaremos criando e consumindo um ao final deste artigo.

Simplificando a utilidade dos webservices teremos uma explicação simples que é a integração de sistemas distintos mas que precisam trocar informações.
Antigamente essa integração era feita via RPC ( Remote Procedure Call ) e depois evoluiu para RPC – over http no qual utilizava a porta 143 para se comunicar. A tecnologia RPC tem vários problemas, são eles:

• A data dos sistemas que estão tentando trocar informações devem estar sincronizadas, isto é, exatamente iguais.
• Existiam muitas diferenças na linguagem quando os sistemas eram diferentes.
• As chamadas eram síncronas.

Portanto para acabar com todos esses problemas foi criado o webservices utilizando o XML como linguagem de comunicação. O XML foi implantado e padronizado pela W3C.

Existem alguns itens que são importantes saber para criarmos um webservices:

WSDL – Web Service Description Language – Nele estão descriminados todos os pontos de entrada, descrição de classes, métodos e outras informações. ( Ele é criado de acordo com as regras da W3C)

DISCO – Discovery – Armazena os contratos com relação ao webservices ( Ele é gerado somente por webservices da Microsoft)

UDDI – WWW.uddi.org – Funciona como as páginas amarelas dos webservices onde você pode cadastrar o seu webservices e disponibiliza-lo ao público e também achar e consumir algum do seu interesse.

SOAP – Simple Object Access Protocol – É a linguagem que os webservices utilizam para trafegar as informações entre eles.

Existem 2 tipos de chamadas quando estamos consumindo um webservices

1. Direct call – Chamadas feitas direto do browser para o webservices.
2. Proxy call – Aplicação fazendo chamadas para o webservices onde não tem uma camada de apresentação.

Bom, agora vamos botar a mão na massa e criar e consumir nosso webservices.

Vamos abrir o Visual Studio 2008 SP 1 e criar um projeto do tipo ASP.NET Web Services application.

Iremos perceber que ele já criou um WebMethod de exemplo quer se chamarmos ele irá nos retornar um “Hello World”.

Agora vamos criar um método nosso onde ele irá receber 2 numeros, fazer a soma deles e retornar o resultado.

Nosso código ficará assim:

Simplesmente fazendo isso nós já temos nosso webservices pronto para funcionar. Lembrando que o webservices é como se fosse um website então se quisermos botar para funcionar devemos simplesmente criar o diretório virtual no IIS, mas como estão rodando nossa aplicação no VS 2008 ele criará o web Server virtual para nós.

Iremos criar agora uma aplicação web e montar nossa tela de input. Vamos adicionar um projeto a nossa solução

Nossa tela ficará assim:

De um Build na solução para ver se não tem nenhum erro.

Agora iremos adicionar a referencia do nosso WebService ao nosso projeto web para que possamos consumir e chamar o método que criamos.

Para adicionar a referencia, clique com o botão direito em cima do projeto web no solution Explorer e clique em Add Service Reference

Depois na próxima tela clique em Discovery , selecione o nosso webservices que ele achou automaticamente e clique em OK.

Feito isso iremos programar um pouco.
De um duplo clique no botão da tela e insira o seguinte código:

Agora podemos rodar nossa aplicação e testar nossa “super” calculadora.

Boa sorte a todos e qualquer dúvida pode perguntar.

Abraços

Lineker Tomazeli


Isolamento de Classes – .NET


Muitas dúvidas tem surgido sobre isolamento de classes e então resolvi escrever este pequeno artigo. Vamos lá.

Quando usamos isolamento de classes ?
Iremos usar diferentes tipos de isolamento de classe quando queremos proteger uma classe de ser estanciada ou herdada.
Quem mais utiliza isto?
Podemos encontrar essa prática em muitos componentes prontos que são vendidos.

Nós temos 3 tipos de isolamento de classes:

  • Classe abstrata ( abstract ) – Não é possível estanciar mas pode ser herdada

Exemplo:
abstract class  MinhaClass {    }

  • Classe de construtor privado ( private ) – Não é possivel estanciar a classe mas pode ser herdada

Exemplo:

private MinhaClasse()
{
}

  • Classe Isolada ( sealed ) – Não pode ser herdada mas pode ser estanciada

Por tanto se você juntar um construtor privado com uma classe isolada você terá uma classe extremamente protegida.

Deixe seu comentário.

Abraços

Lineker Tomazeli


Usando Multithread no Framework .NET


Depois de um final de semana ensolarado estamos de volta com mais um dos assuntos comentadissimos no momento , threads ou melhor multithread, que é nada mais nada menos do que muitas várias ações ocorrendo ao mesmo tempo.

Iremos fazer um exemplo hoje usando uma aplicação windows services onde teremos 2 threads rodando ao mesmo tempo.

Primeiramente vamos criar o projeto windows form application.

Depois adicione duas classes chamadas class1.cs e class2.cs

Abra o Form1.cs e vamos codificar um pouco.

Declare o namespace System.Threading.

using System.Threading;

Abra as classes que que foram criadas e crie um método em cada, pois chamaremos estes métodos para iniciarmos a thread.

Voltando para o Form1.cs em Design Mode de um duplo clique no form para criar o evento Form1_Load no code behind e então vamos adicionar as seguintes linhas de codigo para iniciarmos as thread .

//Estanciando a class1
Class1 objC = new Class1();
//Criamos um objeto ThreadStart que serve para setar qual método irá iniciar a Thread.
ThreadStart obj1 = new ThreadStart(objC.FazerAcao1);
//Criamos um objeto do tipo Thread e passamos como parametro o objeto ThreadStart
Thread th = new Thread(obj1);
//Iniciamos a Thread
th.Start();

Class2 objC2 = new Class2();
ThreadStart obj2 = new ThreadStart(objC.FazerAcao1);
Thread th2 = new Thread(obj2);
th2.Start();

Coloque um break point no Form1_Load método e rode a aplicação,passe passo-a-passo usando F11 e perceba que as thread são iniciadas e a aplicação continua rodando. Usando esta técnica você pode fazer e tomar varias acões ao mesmo tempo na sua aplicação.

Vale lembrar que multithread também funcionam para aplicação .NET, incluindo web. Lembre-se que quanto mais threads mais memória será consumida na máquina.

Um exemplo prático da utilização disto é quando você tem um windows services que fica fazendo algum tipo de verificação no seu sistema, pode ser feito um unico serviço que faça várias verificações ao mesmo tempo, conecte com outros serviços e por ai vai.

Coloquei o arquivo fonte com os exemplo abaixo e qualquer dúvida e sugestões são sempre bem-vindas.

snap6

Abraços

Lineker Tomazeli


Usando a comparação “Is” no C#


O comando de comparação Is é utilizado para comparar objetos. Veja o exemplo abaixo:

Criei um botão na tela e codifiquei uma verificação.

if (Button1 is Button)
{
Response.Write(“Button1 é um botão!”);

}

Claro que este é um exemplo muito simples e inútil mas podemos utilizar num ambiente mais complexo e usando heranças, vejam:

Imagine que temos 2 classes uma chamada Gerente e outra Pessoa e a classe Gerente herda Pessoa.

public class Pessa
{ ….. }
public class Gerente:Pessoa
{ …… }

Private void teste()
{
Gerente objGerente = new Gerente();
if(objGerente is Pessoa)
{

Response.Write(“A classe Gerente é Pessoa”)
}
else
{ … }
}

Qualquer duvida perguntem…. e deixe seu feedback

Abraços

Lineker


Mapa de Certificações Microsoft


Olá pessoal,

Para aqueles que ainda tem dúvidas sobre a seqüencia das certificações da microsoft, segue abaixo um
mapa para facilitar o entendimento. Qualquer dúvida não existe em perguntar.

Abraços

Lineker Tomazeli


Exception + Sender


Hoje falaremos um pouco sobre tratamento de excessões e sobre o objeto Sender.

Exceptions

Para fazermos o tratamento de excessões utilizaremos o Try Catch do c#.
É muito simples e muito importante também, vamos a uma demonstração.

Definições:
Try = tenta
Catch = pega

Estrutura:

  Try
  {
      //Entao aqui vem o seu codigo e se houver algum excessão ( erros ) e ele cairá no Catch conforme
      // exemplo abaixo onde estamos tentando converter uma string para int.
      string texto = “Teste”;
      int numero = Convert.ToInt32(texto);
  }
  Catch(Exception ex)
  {
      //Cai estamos tratando o erro e mostrando na tela.
      Console.WriteLine(“Ocorreu um erro : ” + ex.toString());
    
  }

Podemos ter varios tipo de excessões desde SQL como uma simples conversão como mostrada acima.
Sempre devemos colocar os catchs (excessões) da mais complexa para a mais simples, no caso a mais basica (simples ) é a somente Exception. Portanto poderemos ter varios Catch ( cada um com seus exception especifico) para cada Try. Então você dera dizer “Se ocorrer um erro de SQL faça isso” , “Se ocorrer um erro de dados faça isso” e assim por diante.

Mas Lineker, como posso ver qual foi o erro ?
Quando você coloca “Catch(SQLException ex)” , ex pode ser qualquer nome que você quiser, estaremos atribuindo a excessão ao objeto ex. Se quisermos mostrar na tela o erro vamos passar o ex.toString() para aonde desejarmos. Dica: use o intellinsense para ver a propriedades das excessões ( ex: ex.[ira aparecer as propriedades])


Sender

Você perceberá este objeto quando criar um evento para por exemplo um botão. Faça o teste crie um projeto windows form, coloque um botão na tela e clique 2 vezes nele e você verá:
 
               private void button1_Click(object sender, EventArgs e) {  }

O sender nada mais é do que o objeto em si, neste caso o button.
Então se por exemplo você quer mudar a cor do botão quando ele for clicado usando o sender ficaria assim:

 private void button1_Click(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            btn.BackColor = Color.Red;
        }

Claro que essa aplicação é simple e não faz muito sentido pois poderiamos fazer isso de maneira muito mais facil mas espero ter ajudado e esclarecido algumas duvidas dos novatos.

Abraços

Lineker Tomazeli