terça-feira, 29 de setembro de 2009

.net Magazine 66

Lançamos a .net 66 como uma matéria muito especial sobre Design Patterns com C#, em uma aplicação real. Além disso, muito material excelente sobre novidades, incluindo ASP.NET AJAX 4 em conjunto com ADO.NET Data Services, arquitetura que provavelmente vai ser a frebre das aplicações RIA daqui para frente. O tema aborda arquitetura REST, JSON, client-templates e muito mais.

Confira a lista de artigos e demais materiais da edição (que também está disponível em formato digital):

.Net Brasil
Silverlight 3
Rodrigo Sendin

Encarando o Desenvolvedor
Submarinos Voadores
Mauro Sant'anna

Quick Update
Delphi Prism - Visual Studio ganha um aliado de peso
Guinther Pauli

ASP.NET 4.0
Rodrigo Sendin

ADO.NET Data Services
Thomas Semple

NF-e
Rodrigo e Marcelo Rocha

Design Patterns
Gustavo Velasquez

NHibernate
Rodrigo Sendin

DDD - Domain-Driven Design com .NET
Carlos Alberto Meyer Lopes

JavaScript e CSS
Vladmir Rech

E Mais!

Palestra (vídeo) de quase 1 hora sobre Delphi Prism
Guinther Pauli

Vídeo-Aula ASP.NET Chart
Guinther Pauli

Entrevista em vídeo sobre ASP.NET AJAX 4, com Rodrigo Sendin

Apresentações em PPT

Enquete, QUIZ e muita interatividade.

Acesse agora mesmo a Revista .net Magazine 66

ClubeDelphi 110

Em primeiro lugar, é um prazer enorme comunicar que, após 7 meses, estou novamente à frente como editor geral da maior revista de Delphi do país. Lançamos a edição 110 com excelentes artigos, abaixo você pode conferir a lista dos artigos deste mês:

Quick Update - Firebird, Ajax e Delphi Prism
Guinther Pauli

Otimizando funções da VCL
Thiago Borges de Oliveira

Curso de Delphi Prism – Parte 3
Guinther Pauli

POO – Crie sistemas flexíveis, expansíveis e com baixo custo de manutenção
Rafael Stavarengo

Introdução à POO – Parte 3
Guinther Pauli

Formulários em abas
Rafael Stavarengo

Web Services – Parte 2
Rodrigo Carreiro Mourão

A grande novidade da edição é que agora você pode acessá-la em formato digital, via Web, onde constam artigos extras, material digital, interatividade, vídeos e mais.

terça-feira, 15 de setembro de 2009

Interessante comentário nos fontes do Indy - Delphi 2010

Enquanto debugava uma aplicação DataSnap para testar o suporte ao JSON / REST no novíssimo Delphi 2010, encontrei o seguinte comentário nos fontes da biblioteca Indy, que centralizar os protocolos internet no Delphi. Lembre-se de ler, como o comentário faz questão de deixar bem, mas muito bem claro :)

Teste seus conhecimentos em C#!

domingo, 13 de setembro de 2009

Entrevista com Marcus Paulino - Desenvolvedor .NET do Departamento de Polícia (Texas)



Marcus Paulino (marcus_paulino@hotmail.com) tem 15 anos de experiência na área de desenvolvimento e arquitetura de software e banco de dados, dos quais 6 anos dedicados a Visual Basic, 2 anos com ASP clássico e os últimos 7 anos com .NET. Também atua como DBA para Oracle e SQL Server. Vasta experiência com migração de sistemas VB/Access para .NET/SQL Server e desenvolvimento de interfaces para integração de sistemas utilizando plataformas e bancos de dados distintos. 2004 Fort Worht Police Department Civilian Employee of the Year.

Guinther Pauli (GP) – O Marcus Paulino é um grande desenvolvedor .NET que trabalha nos Estados Unidos para o departamento de polícia de Fort Worth, no Texas. Nesta entrevista vamos conhecer um pouco do trabalho do Marcus, e principalmente, observar como os projetos são desenvolvidos por lá, trocar experiências sobre arquitetura, tecnologias, metodologias e muito mais.

GP - Marcus, agradeço sua participação. Vamos começar essa entrevista falando um pouco sobre você e seu trabalho.

Marcus Paulino (MP) - Sou natural do Rio de Janeiro, mas já moro em Fort Worth, Texas, há 10 anos. Trabalho para o Fort Worth Police Department como Senior Developer/Analyst há 5 anos, tendo sido voluntário durante 1 ano inteiro antes da minha contratação. Também trabalhei por 2 anos para uma empresa chamada Insala como Web Developer e depois promovido a Business/System Analyst.

GP - Em que projetos já trabalhou usando .NET, e em que projeto está trabalhando atualmente? Quais as tecnologias do .NET foram utilizadas nestes projetos?

MP - Comecei a trabalhar com .NET 1.1 em 2002, quando fui contratado pela Insala. Até então eu só tinha experiência com ASP clássico e praticamente tudo que eu fazia era em VB 6. Tudo que desenvolvíamos era web-based e eu rapidamente me familiarizei com .NET, sendo que a maioria dos meus projetos eram em ASP.NET por causa do meu background. Meus maiores projetos enquanto na Insala foram um webmail que era integrado facilmente integrado/adicionado aos vários produtos da empresa, e um report builder utilizando XML para a estrutura do relatório e GDI para criar gráficos e estatísticas em real-time. O webmail utilizava um componente .NET adicional que compramos por causa variedade de recursos oferecidos. A empresa mesmo era responsável por hosting, a conta de e-mail em nossos servidores, e o webmail possuía todas as características de uma conta normal, tais como: agenda de endereços, gerenciamento de anexos, opção para formatação de mensagens em HTML entre outras. Já o report builder permitia usuários a criar seus próprios relatórios selecionando campos do banco de dados, determinando critérios de filtragem e ordenação, Tudo isso era armazenado em arquivos XML individuais, por usuário, e ainda havia a opção de incluir gráficos que eram criados baseados em estatísticas, usando GDI.

GP - Como iniciaram os trabalhos no departamento de polícia?

MP - Eu fui contratado em 2004 principalmente para desenvolver um portal de informações e aplicações interno, rodando em nossa intranet. Como responsável principal pelo projeto, apenas o conceito me foi apresentado pelos comandantes e toda a parte técnica ficou por minha conta. Por causa dos meus 2 anos de experiência com .NET na Insala e levando em conta que todos os setores da polícia estavam finalmente integrados à rede, foi uma decisão óbvia de desenvolver em .NET 1.1 usando SQL 2000 como banco de dados. Esse portal utiliza Windows Authentication para validar os usuários, uma vez que cada empregado tem seu próprio login e e-mail, fazendo com que o portal seja “login-free”. Essa informação é checada contra nosso banco de dados de pessoal, e a partir daí é determinado que tipo de acesso o usuário possui. Alguns acessos são baseados em patente. Officers possuem um tipo de acesso básico, Detetives outro tipo de acesso, Sargentos, Tenentes, Capitães até o Chefe de Polícia. Todo acesso é controlado através de arquivos XML usados pelo menu principal do portal. Dependendo do seu nível de acesso, você tem ou não determinados menus. Em 2006 nós migramos o portal para .NET 2.0 e no início desse ano nos migramos para 3.5 (Visual Studio 2008) e os bancos de dados de SQL 2000 para SQL 2005. Nós temos atualmente em torno de 3.000 usuários e uma média de 35.000 acessos por mês, sendo que esperamos que o número de acessos aumente consideravelmente, pois agora o portal pode ser acessado diretamente dos carros de polícia através de Wifi/VPN. Para este tipo de acesso, nós temos uma versão “light” do portal, onde retiramos todos os tipos de gráficos e mídia (vídeos principalmente) e utilizamos componentes básicos de menu ao invés dos “sliding” e “fading”. O acesso via WiFi/VPN é identificado através do IP do cliente. Trabalhando juntamente com nosso pessoal de rede e Motorola (computadores dos carros) nós alocamos um determinado range de IPs para essas conexões, o qual foi adicionado ao Web.Config. Caso o processo rodando no servidor identifique a conexão vindo de um desses IPs, os componentes ascx de menu, cabeçalho e rodapé automaticamente mudam para a versão “light”, e o XML controlador do menu automaticamente “esconde” os menus que contêm mídia, na intenção de diminuir o consumo bandwidth WiFi dado o grande número de carros que possuímos. Com essa solução, conseguimos manter apenas um portal ao invés de ter que desenvolver um totalmente novo só para ser utilizado via WiFi/VPN, mantendo o mesmo endereço HTTP que todos os usuários estão acostumados.

GP - Como foi o processo de migração, em 2006, do portal para o .NET 2.0? Vocês utilizaram novos recursos que foram introduzidos no ASP.NET 2.0, ou simplesmente recompilaram o sistema na nova versão do framework? Quais foram as principais dificuldades encontradas?

MP - A conversão foi toda feita pelo próprio VS 2008 e foi bem mais tranquila do que a nossa tentativa com o VS 2005. Quando experimentamos com o 2005, várias páginas tiveram sérios problemas e muitas das coisas, especialmente relacionadas a ADO.NET, deveriam ser corrigidas manualmente. Assim sendo nós desistimos da ideia inicialmente até que tentamos novamente com o 2008 e aí sim foi bem tranquilo. Muito poucas páginas tiveram que ser manualmente corrigidas. O único problema mesmo foi com os add-ons do Crystal Report que pararam completamente de funcionar, até que atualizamos todas as DLLs e re-adicionamos os componentes de volta ao projeto.

GP - Como foi a migração do SQL Server 2000 para o SQL Server 2005? Algum recurso de migração foi utilizado? Algum novo recurso do SQL 2005 foi empregado ou simplesmente foi portado para rodar na nova versão?

MP - A migração dos bancos de dados foi totalmente gerenciada pelos DBAs do departamento de TI da prefeitura. Nossos servidores (web e BD) são mantidos por eles. Nós (polícia) temos acesso de administradores, mas todas as atualizações e migrações necessárias são realizadas por eles. Nós mesmos fazemos o design dos bancos de dados, criamos tabelas, PKs, indexes, triggers, relacionamentos etc.

GP – No portal, qual foi a metodologia de desenvolvimento utilizada? Alguma Best Pratice? Enterprise Library? Algum framework de persistência? Foram criadas classes de negócio? Foi feito utilizando multicamadas? O código de acesso a dados estava em uma classe à parte? Como a estrutura da aplicação está organizada? E a Orientação a Objetos como foi empregada?

MP - Nós temos várias classes criadas, tanto para acesso a dados, como, por exemplo, para os diversos worksheets que temos. Com relação à Best Practices, acho que o melhor que posso dizer é que nós utilizamos várias metodologias contidas no livro "Code Complete", documentando cada módulo e mantendo nossos ERDs atualizados e código com o máximo de comentários possíveis.

GP - Os carros então acessam via Wifi o mesmo sistema do portal, que ao ser identificado, gera uma versão mais light. Como é feita essa identificação? Manual ou com recursos do framework?

MP - A identificação é praticamente manual. O portal possui 3 componentes OCX básicos utilizados em todas as páginas (cabeçalho, menu lateral e rodapé), sendo que o cabeçalho possui gráficos e fotos, enquanto o menu e rodapé possuem sliding menus (componente .NET adicional que compramos). O departamento de TI da prefeitura reservou um bloco de IPs específico para serem usados pelas conexões VPN via Wifi nos carros. Esse bloco de endereços de IP está configurado no Web.Config, e os 3 componentes checam o IP do cliente para ver se está dentro do bloco reservado. Se for identificado que a chamada está vindo de uma conexão VPN, o código então constroi o componente sem gráficos, fotos, sliding menus e qualquer outro conteúdo que consuma bandwidth desnecessária. Menus que fazem links para páginas com áudio, vídeo e fotos são simplesmente ignorados e não aparecem na versão "light".

GP - Existe algum plano de migrar o sistema ou mesmo desenvolver algum módulo dele, utilizando tecnologias mais recentes, como ADO.NET Entity Framework, LINQ, ASP.NET AJAX 4, Silverlight 3, ADO.NET DataServices, ou mesmo rodar nas nuvens com Azure?

MP - Sim, nós já temos pequenas aplicações "stand alone" utilizando AJAX, por exemplo, e pretendemos aplicar AJAX no portal inteiro. Silverlight não nos interessa por ser um portal interno (intranet) e puramente para aplicações e bancos de dados, sem a necessidade de animações.

GP - Você se sente realizado profissionalmente?

MP - Meu trabalho para a polícia de Fort Worth é bastante interessante e definitivamente o melhor trabalho que já tive, e onde eu pretendo trabalhar durante muitos anos. Uma das coisas que o torna tão interessante, primeiro é o fato de que eu sempre admirei e respeitei o trabalho policial pelo serviço à comunidade. Segundo pelo fato de que eu faço o que gosto e o que escolhi como profissão e carreira. Terceiro pela diversidade de sistemas com os quais eu trabalho e desenvolvo. E quarto pelo acesso que tenho à tecnologia e treinamentos.

GP - Como é trabalhar no departamento de polícia em um país como os EUA?

MP - Pode não parecer, mas quando você desenvolve sistemas para um departamento de polícia, isso envolve várias unidades internas que coletam e geram informações e estatísticas diferentes, como por exemplo, a aplicação que coleta as atividades da unidade de repressão a narcóticos é totalmente diferente da aplicação para SWAT, mesmo com as duas unidades trabalham em conjunto muitas das vezes.

GP - Como hierarquias superiores têm acesso às informações geradas pelo sistema?

MP - O resultado final é a extração de dados estatísticos de todos os bancos de dados, gerando o relatório mensal que é apresentado ao prefeito e câmara de deputados pelo Chefe de Polícia. Cada unidade tem um Analista de Criminalidade que é responsável pelo relatório da unidade, e a unidade de Planejamento e Desenvolvimento coleta todos os relatórios das unidades criando o relatório final do Chefe de Polícia.

GP - Algum trabalho na área de TI é terceirizado?

MP - Como qualquer instituição, o departamento de polícia também possui vários sistemas administrativos que foram da mesma forma desenvolvidos internamente, mas dois de nossos maiores e mais importantes sistemas foram adquiridos diretamente de empresas especializadas no desenvolvimento de tais. Um é o nosso Computer Aided Dispatch (CAD), desenvolvido pela TriTech usando SQL Server 2005. O outro é o nosso Automated Report System (ARS) e Records Management System (RMS), desenvolvido pela Tiburon usando Oracle 9i. O primeiro sistema é para a comunicação e despacho de policiais captando todas as informações relacionadas à chamada por serviço de polícia. Já o segundo sistema é responsável por gerenciar toda a informação gerada pelo evento da chamada inicial, significando informação de vítimas e suspeitos, policiais envolvidos na chamada, detetives investigando o evento e qualquer relatório suplementar que venha a ser adicinado ao caso.

GP - Como é trabalhar com componentes terceirizados? Pessoalmente sempre tive receio quanto a isso em meus projetos...

MP - Por serem sistemas caros não só de serem adquiridos, mas também instalados e treinados, qualquer tipo de costumização pode chegar a dobrar e às vezes triplicar o preço final do projeto. E assim sendo, foi determinado durante o processo de análise do projeto que nenhum tipo de costumização seria solicitada. Tal fato nos levou à necessidade de desenvolver “in-house” qualquer tipo de interface com esses dois sistemas. Essas aplicações são obviamente desenvolvidas em .NET e fazem parte do nosso portal interno, e a maior vantagem de serem desenvolvidas internamente é justamente a habilidade de conectar simultaneamente aos dois bancos de dados (Oracle and SQL Server) e consolidar informações em uma única aplicação.

GP - Existe alguma ideia de expandir o sistema para outras unidades?

MP - Tais aplicações já despertaram o interesse de outros departamentos de polícia, como Dallas, Austin e Houston, e até mesmo das empresas que desenvolvem CAD e ARS/RMS. Nosso trunfo é ter desenvolvedores .NET que entendem bem como CAD e ARS/RMS funcionam e são bastante familiarizados com a estrutura dos bancos de dados de cada sistema, pois todos também desenvolvem Crystal Reports baseados nos dois sistemas.

GP - Migração para .NET muitas vezes significa esquecer o código legado e reescrever tudo de novo, reaproveitar muitas vezes pode comprometer desempenho, arquitetura, visto as diferenças de plataforma e frameworks. Como é o seu trabalho nesse sentido?

MP - Uma atividade que nos mantêm bastante ocupado é a migração de antigas aplicações Visual Basic/Access para .NET/SQL Server. Dada minha experiência administrando bancos de dados, eu sou responsável por toda a parte estrutural do novo banco de dados em SQL Server 2005 e migração dos dados. Também aproveitamos para realizar qualquer tipo de mudanças e melhorias nas aplicações. Nenhum código VB é aproveitado e toda a aplicação é redesenvolvida do zero, adicionando o módulo de segurança (controle de acesso) e componentes comums do portal. Todo acesso à dados é realizado através de ADO.NET o que acaba automaticamente requerindo código novo.

GP - Quais são os próximos planos?

MP - Nosso principal foco para o próximo ano fiscal é utilizar boa parte do nosso orçamento com cursos, treinamentos e certificações para tirarmos o máximo proveito do framework 3.5. Com uma equipe de apenas 2 desenvolvedores, fica difícil para mim e outros membros da equipe nos afastarmos ou mesmo pararmos nossas atividades mesmo que seja com treinamento. Há coisas como AJAX que queremos passar a implementar e adicionar para melhorar a experiência dos nossos usuários. Tecnologias que melhorem a performance e velocidade como informações são acessadas e transmitidas são sempre bem-vindas, principalmente no nosso ramo de trabalho onde cada segundo faz diferença.

sábado, 12 de setembro de 2009

Enquete - Você pretende usar o Delphi 2010?


Sim

Não, vou ficar com o Delphi 7

Não, vou ficar com o Delphi 2007/2009










Enquete - Você pretende adotar / instalar o Windows 7?


Sim

Não, vou ficar com o Vista mesmo

Não, vou ficar com o XP (ou anterior)

Não, vou esperar o Chrome OS

Não, vou esperar o "Windows 8"










sexta-feira, 11 de setembro de 2009

Artigo completo sobre novidades do Delphi 2010

A Embarcadero disponibilizou um guia sobre as novidades do Delphi 2010.

Principais novidades:

IDE Insight - Um "Googlezinho" que permite ao desenvolvedor encontrar praticamente qualquer coisa dentro do IDE, usando F6

Formatador de código

Menu reopen melhorado

Debugger com novos tipos de visualização de dados (tipo o que faz o VS)

Melhorias no Debugger

Métricas e Auditorias de código (agora na versão Pro)

Gestures, suporte a touch-screen, e componente teclado (touch keyboard)

Suporte ao Firebird no dbExpress (finalmente)

Suporte a REST e JSON no DataSnap (estou fazendo um artigo sobre) - acredito que aqui teremos um grande avanço. Com as bibliotecas AJAX cliente crescendo, e outras tecnologias com Flash e Silverlight, o desenvolvimento de aplicações RIA ficará muito facilitado

Tools API melhorado (esse sempre foi bom)

RTTI melhorada, com suporte por exemplo a atributos, como no C#

TStringBuilder (= ao System.Text.StringBuilder do .NET)

Suporte a Generics aprimorado

Compilação em background

Delphi Prism 2010 com novidades

E para finalizar, agora dá para deixar o IDE com a cara do Delphi 7, principalmente porque a barra de componentes estilo clássico está de volta

O artigo contém também as novidades do Delphi 2009 e 2007.

Uma curiosidade: essa é a versão 14 do Delphi. A 2009 foi a 12. O que houve com a 13, pulou? Superstição? Lembrando uma velha crença da comunidade, que as versões ímpares do Delphi são as melhores... Essa versão deveria ter pulado da 12 para a 15! Lembrando que D14 = D7 * 2.

Clique aqui para ler o artigo

Clique aqui para baixar o artigo em PDF