sexta-feira, 20 de fevereiro de 2009

Criando componentes COM+ com C#

Ao contrário do que parece, o processo para criação de um COM+ usando C# é bem tranquilo. Não tão tranquilo quanto no famoso VB6, mas é simples.

Para isso crie um novo projeto Class Library e utilize o pacote (alguns preferem chamar de namespace) System.EnterpriseServices.

Agora devemos especificar a transação requisitada pelo componente. Para isso coloque a seguinte linha antes da declaração de sua classe:

[Transaction(TransactionOption.Required)]

Sua classe deverá herdar a ServicedComponent:

public class COMplus : ServicedComponent

Agora vem a parte que pode dar um pouco mais de trabalho: Criar uma chave de assinatura.

1º Acrescente a seguinte linha ao arquivo de informações do Assembly (AssemblyInfo.cs):

[assembly: AssemblyKeyFileAttribute("..\\..\\snEnterprise.snk")]

2º Execute o prompt de comando do Visual Studio (Iniciar > Todos os programas > Microsoft Visual Studio 2008 > Visual Studio Tools > Visual Studio 2008 Command Prompt) e digite a seguinte linha:

sn.exe -k c:\ProjetoCOMplus\snEnterprise.snk

Agora é só compilar e registrar a DLL. Aí entra, digamos assim, 'o segredo'. As DLL's COM+ em C# não são registradas no padrão regsvr32 e sim utilizando o regasm que vem no Framework .Net.

Para registrar sua DLL, no mesmo prompt de comando aberto anteriormente digite:

regasm c:\ProjetoCOMplus\bin\Debug\Arquivo.dll /tlb /codebase

Pronto. Seu componente está criado e registrado. Dessa forma seu código pode ser tranquilamente utilizado em outras plataformas de desenvolvimento como ASP e Delphi.

sábado, 7 de fevereiro de 2009

Triste - Até mais amigo


Em uma grande fatalidade, Solon Henrique, o Cavacava, é mais um amigo que se vai. Descanse em paz meu brother. Você está nos nossos corações.

quarta-feira, 4 de fevereiro de 2009

Registrar script em páginas com UpdatePanel

No ASP.Net podemos registrar scripts facilmente em um Postback atráves do método RegisterClientScriptBlock da classe Page no pacote System.Web.UI, ex.:

Page.RegisterClientScriptBlock("clientscript", "alert('Teste');");

Porém quando trabalhamos com UpdatePanel esse recurso "deixa" de funcionar, pois a página não é carregada totalmente.

Para resolver esse problema foi criado o método RegisterClientScriptBlock na classe ScriptManager, que assim como a classe Page está no pacote System.Web.UI.

Veja um exemplo:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "clientscript", "alert('Teste');", true);

terça-feira, 3 de fevereiro de 2009

C# - Inner Class

Assim como o Java, o C# também nos permite trabalhar com o conceito de Classes Internas (Inner Class).

Inner Class são vantajosas vistas pelo lado de sua "relação especial" com a classe externa. Para traçarmos tal relação imagine que esteja criando uma classe e identifique no meio do percurso funcionalidades/eventos únicos e exclusivos dessa classe. Existem formas simples e rápidas de resolvermos esse problema (como por exemplo criar uma nova classe no projeto), porém uma forma "orientadamente" correta de se fazer seria utilizando as classes internas, organizando de forma mais clara a classe externa e o projeto em si.

Na prática vamos imaginar a seguinte situação: você está construindo a classe Aluno. Uma série de eventos são acionados por essa classe tendo em vista o período em que o aluno está na Faculdade. Esses eventos estão intimamente ligados a classe Aluno, podendo assim ser caracterizado como uma nova classe somente para tratamentos desses eventos. Mas, contudo, todavia, no entanto, entretanto... (hehe) esta classe de eventos não é uma entidade no contexto do projeto e sim apenas para o Aluno.

Vamos ao código: (Clique na imagem abaixo para ampliar)


Viu só como é simples? parece confuso no começo, mas depois tudo fica mais claro.

Para finalizar é notório que a classe de eventos não existe por sí só, ela é totalmente dependente da classe Aluno, podendo ser definida como um membro da classe externa.

domingo, 25 de janeiro de 2009

Android no HTC Touch! O sonho começa a virar realidade

Vi um video hoje que está me dando esperanças de em breve ter em meu HTC Touch o Android instalado.

Esse aí é o HTC Touch da Spring, que é CDMA. Agora fica a torcida para a chegada em breve para o HTC Touch GSM.


quarta-feira, 10 de dezembro de 2008

De que adianta tecnologia se o método continua o mesmo?

Hoje estava navegando pelo meu blog e na aba 'Videos' (Último item a direita) vi um video interessante e acho que é bastante interessante e relevante destacá-lo aqui.

Vale a pena assistir.

domingo, 30 de novembro de 2008

Um pouco sobre cinema - Parte 2

Taí um filme legal. Uma típica produção 'hollywoodiana', com muitos exageros, mas que te atrai do começo ao fim.

O filme expõe uma crise ambiental de larga escala que força a humanidade a combater a natureza para sobreviver. A crise é iniciada por uma suposta toxina invisível, que leva a população à loucura e induz ao suicídio. Wahlberg interpreta Elliot Moore, um professor de ciências que tenta proteger os seus filhos da fúria da natureza.

Vale a pena conferir.