Escolar Documentos
Profissional Documentos
Cultura Documentos
POWERED BY
e-magazine
CODIFICANDO.NET
O U T / N O V 2 0 0 7
E D I Ç Ã O 5 N Ú M E R O 4 A N O I
Editorial
Após 2 meses finalizamos a quinta edição da Codificando.Net Magazine. Realmente não é fácil manter
uma revista mensal com um nível como gostaríamos, por isso tomamos uma decisão... Teremos a partir
de agora a revista a cada dois meses, ou bimestral para quem preferir :)
Em 2 meses muitas coisas acontecem, por exemplo o São Paulo sagrou-se Penta Campeão Brasileiro.
Nesta edição temos uma entrevista internacinal (mais uma), Alfred nos EUA entrevista 2 mulheres do
time do VB na Microsoft!
Temos nossos colunistas mantendo suas colunas sempre atualizadas e artigos técnicos de muita qualida-
de .
Alexandre Tarifa
editor@codificandomagazine.net
Equipe
Editor:
Alexandre Tarifa
Emerson Facunte
Reporter
Alfred Myers
Colaboradores:
Feio Tomaz
Maurício Wieler
Diego Nogare
Alexandre Lopes
3
Entrevista - Amanda e Lisa
Alfred Myers, MVP de C#, esteve em Redmond em setembro e aproveitou a estada pra entrevistar Lisa Feigen-
baum e Amanda Silver sobre o Visual Basic e suas carreiras na Microsoft.
ALFRED: Na tua opinião, quais são os recursos mais interessantes da IDE no novo Visual Basic?
LISA: O Intelisense está muito legal e é muito importante porque trás altos ganhos de produtividade. Eu posso
afirmar com certeza que assim que você começar a usar o VB 2008, você vai economizar tempo com menos
digitação, menos erros, gastando menos tempo tentando lembrar o nome das variáveis. Essencialmente, estamos
mostrando Intelisense em muito mais lugares que antes.
ALFRED: Então podemos esperar que o Visual Basic funcione no Moonlight que é a versão Linux do SilverLi-
ght?
AMANDA: Não sei dizer.
ALFRED: Vocês ainda usam personas para representar os tipos de usuários de cada linguagem? Havia muita
conversa sobre Mort, Einstein e Elvis nos primeiros dias do .NET Framework.
AMANDA: Nós temos uma relação de amor e ódio com os personas. No início era muito difícil falar sobre o
usuário típico das linguagens aqui dentro da Microsoft. Os personas nos ajudaram a falar sobre estes usuários
típicos, mas isto é uma faca de dois gumes. Tem muita gente que acha que todos os programadores VB são
“Mort” e isto não é verdade. Nós temos todo tipo de usuário VB desde Arquitetos Seniores até gente que aca-
bou de baixar o VB Express e estão aprendendo a programar. Agora não falamos tanto de personas, e sim do
tipo de programador. Agora temos o termo “desenvolvedor oportunista” que é aquele cara orientado a tarefas,
que quer terminar o serviço.
ALFRED: Voltando ao Visual Studio 2008, alguma coisa mudou nos bindings de teclado no VB 2008?
LISA: Migrando do 2005 para o 2008, só há uma nova combinação de teclas. Nada foi removido. Nós adiciona-
mos um para quando o Intellisense está visível ficar transparente. Nós queremos manter aqueles atalhos de te-
clado antigos, então estamos mantendo aqueles atalhos do VB 6.
ALFRED: Ao contrário do C#, o Visual Basic 2005 não veio com refactoring. Este era fornecido por terceiros.
Alguma coisa mudou no VB 2008?
LISA: Não foi incorporado ao produto ―principal‖, mas estamos bastante contentes com a solução atual de se
baixar separadamente o add-in do MSDN Dev Center gratuitamente. Como a gente não colocou isto dentro do
produto, tivemos tempo para trabalhar com outras coisas e colocá-las no produto. A Developer Express, desen-
volvedora do add-in, fez um excelente trabalho e agora temos o dobro de “refactorings” que tínhamos na ver-
são 2005.
5
Entrevista - Amanda e Lisa
ALFRED: Muito se tem falado de LINQ. Por onde você navegue você vê material sobre LINQ. Você acha que
tem alguma coisa que não esteja sendo divulgado o bastante? Recursos interessantes sobre os quais as pessoas
não estejam falando?
AMANDA: Eu acho que uma das coisas que é particular ao VB 9 é a integração com XML que é parte do
LINQ e que basicamente te permite copiar um documento XML e colá-lo dentro do editor de Visual Basic e
você terá uma experiência semelhante ao que você tem com o editor XML hoje. Não é somente sobre copiar e
colar blocos estáticos de XML. Você também pode usar aquelas expressões conhecidas do ASP clássico “<%=”
e “%>” e inserir no meio qualquer expressão válida do Visual Basic. Ex.:
Isto faz com que o recurso seja bastante poderoso e faz com que seja bastante fácil escrever o seu documento
XML dinâmico, mas combinado com LINQ, você pode incluir uma query expression dentro do documento X-
ML. Isto significa que o VB agora pode substituir o XSLT em alguns cenários. É bastante poderoso.
ALFRED: Era o que eu ia dizer: É realmente bastante poderoso. E nós não temos este recurso no C#.
AMANDA: Este recurso é específico ao VB. Em C# você usaria uma construção funcional usando a API Linq to
XML. Para criar o mesmo XML você faria algo como:
DateTime d = DateTime.Today;
XElement x = new XElement("ProcessLog",
new XElement("Process", d));
Você pode usar o C# como uma espécie de XSLT, mas é o recurso de XML literal do VB que elimina a barreira
da API. Você não precisa pensar na API. Você pensa somente no documento.
ALFRED: É bem legal não ter que pensar na API. Eu vi o mesmo tipo de coisa sendo feita em outras linguagens
com relação ao processamento de textos. Realmente facilita a nossa vida.
Que tipo de coisa podemos esperar do VB na versão que virá depois do Orcas? Eu soube que existe um protó-
tipo chamado VBx que será hosteado.
AMANDA: O que estamos tentando fazer é pegar a experiência de usar o VB a linguagem, o compilador a ex-
periência de edição e hospedá-lo num contexto fora do Visual Studio. Uma das coisas interessantes a se pensar
é como usar esta tecnologia na console de linha de comando para que você possa usar a API do PowerShell para
escrever scripts usando VB. Ainda estamos bem no comecinho do estágio de planejamento e brincando com
protótipos. Parece que vai ficar bom.
6
Entrevista - Amanda e Lisa
ALFRED: Vai ser um ciclo de produto mais longo do que foi o Orcas?
AMANDA: Está muito cedo para saber, mas o Orcas teve um ciclo bem curto quando comparado com a ver-
são anterior. Acho que vamos tentar seguir esta tendência.
ALFRED: Qual foi o recurso mais solicitado que não deu para encaixar no Orcas?
LISA: Estamos dando uma olhada em algumas coisas sobre as quais tivemos bastante feedback como por exem-
plo, remover line continuations, ou seja, tirar a necessidade de usar o “_” para continuar um comando na linha
de baixo. Propriedades automáticas – a idéia de não precisar mostrar o getter e o setter para as propriedades
mais simples. Estes são recursos da linguagem e da IDE que foram bastante solicitados.
AMANDA: Também estamos dando uma olhada em como melhorar a experiência de navegação no Visual Stu-
dio, como passar do código para um modo de visualização da classe, este tipo de coisa.
Recentemente lançado, o Microsoft BizTalk Server 2006 R2 é a quinta versão do produto. Por ser, fundamentalmente, um release de atualização, a mudança
não foi tão radical comparada às anteriores, mas as novidades são muito interessantes e algumas eram bastante aguardadas, como o alinhamento do produto as
novas tecnologias Microsoft.
A nova versão inclui algumas coisas realmente novas, além da atualização de algumas características importantes, que aumentam bastante as capacidades do
Servidor BizTalk, como veremos a seguir.
EDI
O EDi (Electronic Data Interchange – Troca Eletrônica de Dados) é um dos meios predominantes de troca de dados eletronicamente. Pouco
utilizado no Brasil (eu mesmo nunca tive oportunidade de trabalhar com esse formato em anos de experiência com BizTalk Server) represen-
ta aproximadamente 75 por cento de todas as transações eletrônicas e cresce em média de 5 a 7 por cento por ano, segundo dados da Mi-
crosoft.
O uso de EDI implica sintaxe de mensagem e padrões (incluindo ANSI X12 e UN/EDIFACT), protocolos de mensageria e transportes.
O BizTalk Servidor 2006 R2 processa mensagens de EDI usando Receive e Send pipelines específicos que podem fazer o parse e a serialização
de mensagens EDI. As funcionalidades referentes ao EDI foram atualizadas sensivelmente melhorando em muito a sua performance.
AS/2
As transações de EDI transmitidas pela Internet (EDI over the Internet - EDIINT) são uma alternativa crescentemente popular a enviar e rece-
ber EDI usando value-added networks (VANs). Usar a Internet para troca de dados reduz custos, aumenta eficiência, e tem vantagens em ter-
mos de redundância e escalabilidade.
Para dar suporte a esta tendência de crescimento, o BizTalk Servidor 2006 R2 suporta EDIINT AS/2 (Applicability Statement 2). AS/2 é uma
especificação que permite o transporte de dados de negócio usando a Internet de maneira segura. O BizTalk Servidor 2006 utiliza “AS/2-
defined methods” para enviar, receber, encriptar, decriptar, comprimir, descomprimir, assinar e verificar assinaturas entre parceiros usando
HTTP sobre a Internet. O BizTalk Server ajuda a assegurar a segurança das mensagens pelo uso de chaves de encriptação, assinaturas digitais
e certificados.
O EDI e AS/2 do Microsoft BizTalk Server 2006 R2 executa os seguintes processamentos AS/2:
Por questões referentes a custos, o RFID ainda é uma tecnologia não muito implementada. Mas é uma das novidades mais interessantes pre-
sente no BizTalk Server 2006 R2 porque, ao serem superadas as questões de custo dos chips, o mercado espera por larga utilização da tecno-
logia RFID.
O Microsoft BizTalk RFID é projetado para fornecer uma plataforma escálavel e expansível para desenvolver, instalar, e administrar RFIDs.
Incluído nos componentes chave podemos encontrar uma framework de abstração dos dispositivos e um conjunto robusto de ferramentas
que capacitam a construção de RFID baseados em tecnologia .NET e aplicações de sensores com:
Serviços plug and play para suporte a diversos dispositivos RFID usando o Device Service Provider Interface (DSPI).
Serviços de aplicação para interação com dispositivos e leitores de tags para filtragem, transformação e agregação de eventos.
Ferramentas para gerenciamento de dispositivos e desenvolvimento de processo de negócio baseados em RFID (RFID Manager).
Pontos de extensibilidade (event handlers) para implementar soluções baseadas em padrões.
Principais Benefícios
Gerenciamento e configuração uniforme para dispositivos RFID heterogêneos.
Simplicidade Operacional.
Inovadora arquitetura de processos que separa as atividades de design das atividades de deployment.
Comunicação síncrona e assíncrona com dispositivos RFID.
Plataforma de desenvolvimento extensível para criação de event handlers customizados.
Parte integrante do Windows Server System.
O RFID também permite a clientes e parceiros de negócio a criação de soluções fim a fim e real-time que:
Conectem a aplicações line-of-business (LOB) usando adaptadores que podem executar workflow de negócios de longa duração
(controle de inventários, por exemplo) fazendo uso de todo potencial de business-to-business (B2B) e business process management
(BPM) do BizTalk Server.
Uso de aggregations e views do Business Activity Monitoring (BAM) no BizTalk Server para a visualização fim a fim do processo e a visão
analítica do fluxo de eventos RFID durante a execução do processo de negócio.
Utilização do SQL Server para o gerenciamento de dados e Business Intelligence.
Criação e deploy de regras de negócio utilizando o Business Rules Engine (BRE) para executar as decisões de negócio baseado nos even-
tos de entrada.
Utilização do Microsoft Operations Manager (MOM) para monitoração e troubleshoot que adicionarão escalabilidade e tolerância a falhas
a soluções RFID já implementadas em ambiente produtivo.
Adaptador WCF
Penso que é essa a novidade mais interessante presente na nova versão do BizTalk Server. O BizTalk WCF (Windows Communication Foun-
dation) adapters possibilita ao Microsoft BizTalk Server 2006 R2 comunicação com aplicações WCF.
Se você ainda não sabe o que é o WCF recomendo que procure mais informações, pois aplicações WCF são a nova estratégia da Microsoft
para aplicações distribuídas, com especial atenção a SOA (Service Oriented Architecture – Arquitetura Orientada a Serviços) e deve ser am-
pla e rapidamente adotada.
9 Artigo: Novidades do Biztalk Server 2006 R2
WCF-WSHttp adapter: Oferece suporte aos padrões WS-* sobre o transporte HTTP. Este adaptador implementa as seguintes especifica-
ções: WS-Transaction para as interações transacionais entre aplicações externas e o MessageBox, WS- Security para segurança de mensagem
e autenticação. O transporte é HTTP ou HTTPS, e o encoding da mensagem pode ser Texto ou MTOM (Message Transmission Optimization
Mechanism).
WCF-BasicHttp adapter: Possibilita a comunicação com Web Services baseados em ASMX, clients ou outros serviços em conformidade
com o WS-I Basic Profile 1.1. O transporte é HTTP ou HTTPS, e o encoding da mensagem pode ser Texto ou MTOM (Message Transmission
Optimization Mechanism).
WCF-NetTcp adapter: Fornece suporte aos padrões WS-* sobre transporte TCP. Oferece comunicação eficiente em ambiente WCF-
WCF. Este adaptador implementa as seguintes especificações: WS-Transaction para as interações transacionais entre aplicações externas e o
MessageBox, WS- Security para segurança de mensagem e autenticação. O transporte é TCP, e o encoding da mensagem é a codificação biná-
ria.
WCF-NetMsmq adapter: Oferece suporte para messaging assíncrono usando Microsoft Message Queuing (MSMQ) como um transporte, e
capacitando o suporte para aplicações fracamente acopladas, isolamento de falhas e operações desconectadas.
WCF-NetNamedPipe adapter: Oferece comunicação segura e está otimizado para comunicação ―on-computer cross-process‖, Utiliza
transporte seguro para transferência segura, named pipes para entrega de mensagens e codificação binária.
WCF-Custom adapter: Possibilita o uso das características de extensibilidade do WCF. O adaptador permite que operadores selecionem e
configurarem o binding WCF, o comportamento, e as extensões de comportamento para o Receive Location e Send Port.
WCF-CustomIsolated adapter: Possibilita o uso das características de extensibilidade do WCF sobre o transporte HTTP. O adaptador
permite que operadores selecionem e configurarem o binding WCF, o comportamento, e as extensões de comportamento para um Receive
Location rodando em um Isolated Host.
BizTalk WCF Service Publishing Wizard: Usado para criar e publicar orquestrações e schemas do BizTalk como um serviço WCF. Esse
wizard é bem parecido com o já bem conhecido BizTalk Web Services Publishing Wizard.
BizTalk WCF Service Consuming Wizard: Usado para gerar artefatos BizTalk, como orquestrações e tipos, assim como arquivos de
binding para criação de Send Port, para consumir um serviço WCF baseado no documento de metadado do serviço WCF.
BAM interceptor
No BizTalk Servidor 2006, o BAM é uma coleção de ferramentas, APIs, e serviços que permitem administrar aggregations, alertas, e profiles.
Com o BAM você pode também instrumentalizar processos automatizados para que enviem eventos a serem monitorados por métricas rele-
vantes no processo. Juntos, fornecem visibilidade end-to-end a um processo de negócio.
Os interceptores de BAM (BAM interceptors) estendem esta mesma funcionalidade ao Windows Workflow Foundation (WF), Windows
Communication Framework (WCF), e outros runtimes. Usando os interceptores de BAM, você pode rastrear seus processos de negócio sem
a necessidade de recompilar sua solução WF ou WCF. A integração é feita por um arquivo de configuração.
Além de continuar suportando Excel 2003, o BAM XLA foi atualizado para suportar o Microsoft Office Excel 2007.
10 Artigo: Novidades do Biztalk Server 2006 R2
Conclusão
Sempre alinhado as novas tendências e tecnologias (tanto as do universo Microsoft, quanto dos padrões de mercado que se consolidam), o
Microsoft BizTalk Server 2006 R2 mais uma vez prepara um grande salto para o futuro das aplicações distribuídas com os novos adaptadores
WCF.
A constante evolução e atualização do produto se mostra presente nas importantes atualizações implementadas na versão R2 e nos dão uma
boa idéia do que está por vir para a próxima versão, que deve ser lançada no final de 2008 ou começo de 2009.
Espera-se que no futuro o BizTalk Server esteja ainda mais profundamente alinhado aos investimentos recentes da Microsoft na frame-
work .NET, especialmente ao Windows Communication Foundation e Windows Workflow Foundation.
É esperar para ver.
Antes de mais nada, vamos começar esclarecendo algumas coisas para evitar confusão. Na área de desenvolvimento, o ter-
mo “factory” (fábrica) é utilizado em pelo menos três diferentes situações (até onde eu conheço!), embora elas possam es-
tar relacionadas. Primeiro, traduzindo para o português, chamamos de “Fábrica de Software”, a empresa que executa servi-
ços de tercerização para a construção de softwares. Esse uso é bastante conhecido no Brasil, e diversas empresas oferecem
esse serviço. Uma determinada empresa interessada na produção de um “sistema” transfere parte ou todo o trabalho de
construção do mesmo para uma fábrica de software. Nesta fábrica existe toda a estrutura (ou deveria existir!) para que este
sistema seja produzido da forma mais rápida e barata possível, seguindo um modelo de fábrica realmente, com processos e
funções bem definidos.
Um outro uso do termo “factory”, embora menos conhecido, mas que pode causar alguma confusão aos desavisados, são
os padrões “factories” de projeto, que estão relacionados à orientação a objeto (“Factory Method” e “Abstract Factory”).
Já no terceiro uso do termo, “Software Factory” diz respeito a um conjunto de ferramentas, modelos, wizards, arquivos de
configuração, application blocks, geradores de código, padrões, documentos e outros, que podem ser utilizados pelos arqui-
tetos e desenvolvedores com a finalidade de agilizar a entrega de um produto de software. E é exatamente deste tipo de
“factory” que iremos falar neste artigo.
Schemas : você pode pensar em um schema como uma ―receita‖. Aliás, é exatamente esse o termo usado (recipe). Sche-
mas descrevem a arquitetura e o relacionamento entre seus componentes.
Templates : eles contém os componentes listados na receita e fornece os padrões, guias, frameworks, ferramentas de
edição de DSL e outros ingredientes.
Mobile Client Software Factory : fábrica para aplicações Windows para dispositivos móveis.
Smart Client Software Factory : fábrica para aplicações smart-clients, ou seja, aplicações com recursos Windows que
podem ser disponibilizadas através de um browser.
Web Client Software Factory : fábrica para aplicações ASP.NET 2.0 e Windows Workflow Foundation.
13 Artigo: Introdução às “Fábricas de Software”
Fique atento aos pré-requisitos para a instalação, que dependem da fábrica que será instalada. Eles podem variar desde o
GAX (Guidance Automation Extensions), que é o ―run-time‖ necessário para que o Visual Studo 2005 seja capaz de execu-
tar os pacotes, até o .NET Framework 3.0, Microsoft SQL Server 2005 Compact Edition Runtime, e outros componentes
opcionais como o GAT (Guidance Automation Toolkit) e Visual Studio 2005 extensions para .NET framework 3.0 (WCF &
WPF).
Um componente interessante citado é o GAT, que é exatamente a ferramenta que possibilita a criação de pacotes novos
de guias. Ou seja, É através do GAT que o arquiteto da sua empresa poderá criar um determinado guia de desenvolvimento
(que inclui código, documentação, templates, wizards, etc) e distribuir para os demais desenvolvedores da equipe.
http://msdn2.microsoft.com/en-us/practices/default.aspx
Conclusão
Espero que este artigo tenha dado uma idéia do que se tratam as software factories. Para aqueles que estão chegando agora,
realmente, existe um “mundo novo” a ser explorado. Termos novos, ferramentas novas e conceitos novos. A medida que
caminhos da produção artesanal de software para a produção “automatizada”, ferramentas que viabilizem essa transição
tornam-se fundamentais. A idéia de “operários de software” nunca me agradou muito, mas podemos encarar as coisas por
um outro ângulo : todo o esforço de codificação realizado até agora em processos repetitivos e entediantes poderá ser
“deslocado” para áreas mais “nobres” durante a construção de uma aplicação. Essas áreas seriam exatamente onde o desen-
volvedor é insubstitível, ou seja, nas coisas que não podem ser automatizadas.
Para quem não conhece, o R3 é um ERP da empresa alemã SAP, atualmente na versão 6 o R3 (da versão 6 em diante é co-
nhecido como ECC), está presente em 53% das grandes empresas do planeta, e no Brasil ele é usado por empresas como
Petrobras, Vivo, Claro, TIM, Embratel, Eletropaulo entre outras. O R3 possui uma linguagem própria, o ABAP, também pos-
sui uma camada de gerenciamento de acesso a tabelas, ou seja, um programador ABAP não acessa diretamente o banco de
dados, tudo é feito no R3 e o próprio internamente persiste as informações no banco de dados.
Devido a facilidade de criação de telas de gerenciamento e relatórios, tornou-se interessante para as empresas terem aplica-
ções externas que conversam diretamente com o R3, até pelo fato da aplicação poder acessar informações do negócio em
tempo real, por exemplo um software de ponto de venda, sites con informações detalhadas até mesmo aplicações para efei-
tos gerênciais.
Em uma parceria feita entre SAP e Microsoft foi desenvolvido um componente para o Visual Studio 2003 chamado de SAP-
DotNetConnector, este consegue acessar RFCs que estão flegadas com acesso remoto no R3.
Esse projeto será demonstrado no Visual Studio 2003, porém, para as pessoas que já usam o Visual Studio 2005, como eu,
podem apenas criar uma DLL no VS2003 e usa-la no VS2005 acessando todos os seus recursos.
Primeiro é necessário instalar o SAPDotNetConnector 2.0, essa instalação já aplica algumas coisas no VS2003 para facilitar o
acesso à RFCs.
Na figura abaixo, estou mostrando uma RFC que criei como exemplo, esta estará recebendo um parametro que será o ID
de um cliente (parâmetro opcional) e estará retornando uma tabela de Clientes com todos ou apenas um referente ao ID
passado.
Parâmetro de entrada
15 Artigo: Integrando aplicações .Net com SAP R3
Parâmetro de Saída:
Código da função:
16 Artigo: Integrando aplicações .Net com SAP R3
Execução da função:
Resultado:
Nesse momento, a parte que será feita no R3 está pronta, observem na ultima figura que quando não passamos nenhum
parametro a função returna todos os usuários.
17 Artigo: Integrando aplicações .Net com SAP R3
PROJETO
Já com o SAPDotNetConnector instalado, vou criar um projeto Windows Application. Indo ao “Server Explorer”, ao pres-
sionar o botão Refresh vai aparecer um icone do SAP, Vou expandindo em “Application Servers” e adiciono uma conexão
com o servidor do ambiente no qual desenvolvi a RFC, expando para Functions e efetuo um “filtro” para ver as RFCs, veja
va figura abaixo.
Feito isso, adiciono uma classe no projeto, selecionando “New Item”, mais aparecerá outro tipo de classe, veja na imagem
abaixo.
18 Artigo: Integrando aplicações .Net com SAP R3
PROJETO
Para poder usar a RFC, apenas arrasto do Server Explorer para o container criado pelo VS, observem na imagem abaixo.
Aqui é importante dizer que, por traz, o SAPDotNetConnector, lê as informações da RFC cria um método, que é a chama-
da da RFC e quando a mesma recebe ou retorna tabelas, ele cria o mapeamento dessas tabelas, observe que ele criou o
metodo com o mesmo nome da RFC, criou uma estrutura com os campos da tabela KNA1 (Clientes) e uma coleção que
seria a tabela, esse conceito é bem parecido com o que temos no DataSet Tipado.
Feito isso, voltarei ao Formulário e vou adicionar uma Grid (dgClientes) e no Load do formulário, vou adicionar o seguinte
código:
dgClientes.DataSource = t_kna1;
}
19 Artigo: Integrando aplicações .Net com SAP R3
Após exetutar o projeto aparecerá todos os clientes na grid conforme mostra a imagem abaixo.
A versão do R3 usada na demonstração é a versão 4.6C, a partir da versão 6 a SAP implantou o conceito de SOA no ECC, dessa forma é
possível acessar qualquer informação de RFC por meio de Web Services.
Conclusão: Com esse artigo, eu quis demonstrar como é possível fazer acessos remotos à RFCs no R3. Atualmente as gran-
des empresas estão querendo cada vez mais aplicações que conectem em tempo real com informações do negócio, o SAPDot-
NetConector ajuda e muito à acessar essas informações. Até o próximo artigo.
Weliton Carlos Flor é MCTS Web Applications e analista de sistemas na Stefanini, trabalha com .Net a 4 anos
sendo 2 focado em SAP
20 Artigo: Mundo Acadêmico
Queria contar-lhes uma experiência que creio que é comum a todos no ambiente universitário, principalmente. Ouvimos
que o Java é a linguagem ideal para o ambiente universitário, que ela tem isso, tem aquilo, é orientada a objetos, que é a úni-
ca capaz de ensinar aos alunos o verdadeiro conceito de programação orientada a objetos. Dentre outros mitos, ouvimos
que as linguagens C#, Visual Basic.NET e outras não “servem” para que aprendamos o básico de algoritmos e fluxogramas,
isto é, que não são próprias para dar os primeiros passos no estudos das linguagens de programação.
Vamos desmistificar essa série de besteiras e “mitos” bobos e ver quão práticas são essas linguagens para a aprendizagem
nas disciplinas de Algoritmos e Linguagens de Programação.
Vamos abordar aqui um problema bem simples, que é a resolução de uma equação de segundo grau, da forma:
ax²+bx+c = 0
em que
x é a raiz da equação de segundo grau,
além disso, dá-se o nome de delta (∆) é
chamado de discriminante da equação e
quem nos permite dar casos condicionais
para a resolução da equação de segundo
grau, como segue:
Em que ∆ = b2 – 4ac.
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleEquacao2Grau
{
class Program
{
static void Main(string[] args)
{
double A, B, C, DELTA, RAIZ, X1, X2;
string nomeUsuario;
DELTA = (B * B) - (4 * A * C);
if (DELTA >= 0)
{
RAIZ = System.Math.Sqrt(DELTA);
else
{
Console.WriteLine("Caro {0}, o valor de DELTA é {1}\n", nomeUsuario,
DELTA);
22 Artigo: Mundo Acadêmico
Console.WriteLine("Portanto, o valor de DELTA é negativo!\n");
Console.WriteLine("Pressione ENTER ou qualquer tecla para finali-
zar!");
Console.ReadLine();
}
}
}
}
O projeto, em Windows Forms, usando a linguagem C#, criaria um layout como segue:
23 Artigo: Mundo Acadêmico
Seu código fonte de implementação fica desta forma:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Equacao2Grau
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// Declarando variáveis
// Nesse caso é convertido tudo que o usuário digitar
// que é considerado string (texto) e o .Net Framework 2.0
// através da classe "Convert" converte para o tipo "Double" para que a
lógica
// do sistema funcione.
A = Convert.ToDouble(txtA.Text);
B = Convert.ToDouble(txtB.Text);
C = Convert.ToDouble(txtC.Text);
24 Artigo: Mundo Acadêmico
// Fórmula do Báskara
D = (B * B) - (4 * A * C);
else
{
// Se delta for menor que zero
{
// Exibindo a mensagem caso o DELTA for menor que ZERO!
txtMensagem.Text = "Delta é menor que zero";
}
}
}
}
}
25 Artigo: Mundo Acadêmico
E, funcionando, teremos:
Quaisquer dúvidas e/ou esclarecimentos, por favor, não hesitem em escrever para meu email:
mauricioow@gmail.com
Até a próxima e poderiam, para o próximo número da revista, pensar em como resolveriam um sistema de duas equações linares
a duas incógnitas em C#, em modo console e em modo Windows Forms.
Desde já, obrigado e não se esqueçam, senhores:
“No stress, think .NET !”
Abraços a todos
MAURICIO WIELER
Palestras 15
Nesta série de artigos para a revista Codificando.net, estou demonstrando o uso de XML com SQL Server 2005. Os seguintes
tópicos estão sendo abordados:
Os 3 primeiros tópicos foram abordados anteriormente, restando os demais para serem desvendados posteriormente. Antes
disso, será preciso explicar o que venha a ser “XML Schema”.
“XML Schema” descreve a estrutura e o conteudo de um documento XML. Abaixo encontra-se um exemplo que será utilizado,
pode-se notar que é bastante parecido com a definição de uma tabela e seu conteúdo (dados). Sendo assim, salve o conteudo
abaixo em um arquivo (pode ser logRecordSchema.xsd) e vamos para a próxima etapa.
<xsd:simpleType name="flagEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="warning" />
<xsd:enumeration value="information" />
<xsd:enumeration value="failure" />
<xsd:enumeration value="custom" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="eventEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="appStart"/>
<xsd:enumeration value="appClose"/>
<xsd:enumeration value="logIn"/>
<xsd:enumeration value="logOut"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="logRecordType">
<xsd:choice maxOccurs="unbounded">
<xsd:element name="information" type="informationType"/>
<xsd:element name="error" type="errorType"/>
<xsd:element name="post" type="postType"/>
</xsd:choice>
<xsd:attribute name="machine" type="xsd:string" />
<xsd:attribute name="timestamp" type="xsd:dateTime" />
</xsd:complexType>
<xsd:complexType name="postType">
32 Coluna: Desvendando o SQL Server
<xsd:sequence>
<xsd:element name="moreInformation" type="xsd:string" maxOccurs="1" minOc-
curs="0"/>
</xsd:sequence>
<xsd:attribute name="eventType" type="eventEnum"/>
</xsd:complexType>
<xsd:complexType name="informationType">
<xsd:sequence>
<xsd:element name="message" type="xsd:string" />
</xsd:sequence>
SQL SERVER
<xsd:complexType name="errorType">
<xsd:sequence>
<xsd:element name="message" type="xsd:string" />
<xsd:element name="module" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="number" type="xsd:int" />
</xsd:complexType>
</xsd:schema>
Na edição anterior, criamos o banco de dados “codificandoxml” e a tabela “tabelaexemploxml” (a ser utilizada futuramente em
outros artigos). Para isso, estando no SQL Server Management Studio, digitamos o seguinte comando que irá, ao mesmo tempo,
carregar o arquivo codificando.xsd e criar a tabela a ser utilizada nos próximos exemplos:
USE codificandoxml
Go
USE CodificandoXML
GO
<post eventType="appStart">
<moreInformation>All Services starting</moreInformation>
</post>
</logRecord>')
<module>AppLoader</module>
</error>
<post eventType="appStart"/>
</logRecord>')
Até o momento preparamos todo o nosso ambiente de estudos criando o database, as tabelas, XML schema e inserimos os
dados que serão utilizados na próxima etapa.
Por enquanto ficaremos por aqui, no próximo artigo continuaremos a desvendar o uso de XML com SQL Server explicando
como os dados XML se comportam com a tecnologia SQL Server, modificaremos os dados XML inseridos neste segundo artigo
e também será explicado a criação de indices XML. Preparem-se, a viagem promete!
Abraços,
Alexandre Lopes
Alexandre Lopes atua como consultor especialista em SQL Server em projetos da Y2K-TI (http://www.y2k-ti.com.br).
Possui mais de 10 anos de experiência na área de TI, sendo certificado Microsoft com os títulos MCT, MCSE e MCDBA. Como
instrutor MCT (Microsoft Certified Trainer) possui cerca de 4.200 horas ministrando treinamento oficial Microsoft.
36
Cinema
TROPA DE ELITE
Debugar, debugar e debugar.... Uma tarefa muito comum em nossas vidas e que graças as evoluções das ferramentas conseguimos
fazer cada vez melhor.
Principalmente em momentos de bugs absurdos, o Debug é parceiro fiel para qualquer desenvolvedor... O Visual Studio já nos ofere-
ce um debug muuuuito bom, com recursos sensacionais ainda mais para fãs de trabalhar com coleções, o Debug é sensacional.
O time de produto do Visual Studio 2008 surpreendeu ao anunciar um novo recurso de Debug... A partir da próxima versão, sim-
plesmente poderemos navegar pelo debug na implementação na Biblioteca de Classes do Framework... Isso mesmo, na implementa-
ção de código feita pela Microsoft.
Dá para imaginar no trabalho que devem ter tido para fazer isso? Imaginem a limpeza no código, tirar as soluções técnicas alt ernati-
vas (gambiarras), tirar os comentários do tipo: “Não sei o que faz, mas não apaguem”, etc etc etc... Mas até ai, o trabalho que isso
deu para fazer não é muito problema nosso :) , mas o recurso sim e nosso e os debugs de quem utilizar Visual Studio 2008 vão ser
muito mais profundos...
Alexandre Tarifa é MVP Visual Developer Visual Basic .Net, bacharel/pós graduado em Ciência da Computação, trabalha em
diversos projetos. Tem participado de diversos projetos que começam como Web e terminam com Smart Client.
Especialista .Net e Líder de Projetos na ITGROUP (www.itgroup.com.br), editor da revista Codificando e-Magazine e fanático
torcedor do São Paulo Futebol Clube. Blog: www.vstsrocks.com.br/alexandretarifa.