(PT)
Quando estamos a desenvolver soluções em .NET e necessitamos de garantir a segurança entre Threads de forma a manter a solução a funcionar de uma forma coerente. Duas das opções que temos são a utilização de Monitor ou lock. Mas o que acontece exactamente quando utilizamos um e ou outro? Qual é a diferença entre eles?
Básicamente a diferença é que o lock quando compilado emite um código que coloca o Monitor dentro de um bloco de try...finally. Por isso a diferença é que o lock na realidade fornece-nos um Monitor à prova de excepções, pois garante-nos que ainda que exista uma excepção o nosso lock vai ser retirado libertando o objecto.
Vamos então ver um exemplo:
Imaginem o seguinte código utilizando o lock.
1: object something = new object();
2: lock (something)
3: {
4: var query = new TargetProcessEntities()
.Bug.Where(bug => bug.BugID > 100);
5:
6: foreach (var bug in query)
7: {
8:
9: Console.WriteLine("{0}", bug.BugID);
10:
11: }
12: }
O código gerado será: (using .NET Reflector)
1: object CS$2$0000;
2: object something = new object();
3: bool <>s__LockTaken0 = false;
4: try
5: {
6: Monitor.Enter(CS$2$0000 = something,
ref <>s__LockTaken0);
7: IQueryable<Bug> query = from bug in
new TargetProcessEntities().Bug
8: where bug.BugID >= 100
9: select bug;
10: foreach (Bug bug in query)
11: {
12: Console.WriteLine("{0}", bug.BugID);
13: }
14: }
15: finally
16: {
17: if (<>s__LockTaken0)
18: {
19: Monitor.Exit(CS$2$0000);
20: }
21: }
Então o que podemos ver é que o lock que colocamos na linha 2 do código original deu lugar a um bloco try…finally como podemos ver nas linhas 4…6 e 14…21.
Por isso mesmo quando necessitarmos de utilizar bloquear recursos de forma a garantir a segurança entre threads e a coerência dos resultados da utilização de multi-threading, deveremos utilizar o lock ao invés de Monitor.Enter e Monitor.Exit, uma vez que o lock na realidade nos fornece uma forma optimizada da utilização da classe Monitor.
Gostaria de agradecer ao Richard Blewett pela sua excelente explicação.
(EN)
When we want to develop ThreadSafe solutions .NET two of the options that we can use are Monitor and lock. But what exactly happens when we use one and another? What are the differences between one and the other?
Basically the difference is that lock really emits code that places a a Monitor inside a try...finally block. So the real difference is that lock really gives us a exception proof Monitor, since it makes sure that it gets free of that locking even if an exception occurs.
So lets see a sample of that:
Imagine this as the code that we write using lock.
1: object something = new object();
2: lock (something)
3: {
4: var query = new TargetProcessEntities()
.Bug.Where(bug => bug.BugID > 100);
5:
6: foreach (var bug in query)
7: {
8:
9: Console.WriteLine("{0}", bug.BugID);
10:
11: }
12: }
The generated code will be: (using .NET Reflector)
1: object CS$2$0000;
2: object something = new object();
3: bool <>s__LockTaken0 = false;
4: try
5: {
6: Monitor.Enter(CS$2$0000 = something,
ref <>s__LockTaken0);
7: IQueryable<Bug> query = from bug in
new TargetProcessEntities().Bug
8: where bug.BugID >= 100
9: select bug;
10: foreach (Bug bug in query)
11: {
12: Console.WriteLine("{0}", bug.BugID);
13: }
14: }
15: finally
16: {
17: if (<>s__LockTaken0)
18: {
19: Monitor.Exit(CS$2$0000);
20: }
21: }
So as we can see the lock that we placed in the original code at line 2, really gave place to a try…finally block like we can see at lines 4…6 and 14…21.
Basically when we need to use locks in order to have Thread Safety, than we should use lock instead of Monitor.Enter and Monitor.Exit, since lock really gives us an optimized way to use the Monitor class.
I’d like to thank Richard Blewett for his great explanation of it.
(PT)
Outra das sessões que fiz durante o Microsoft TechDays 2010 Portugal foi sobre a Evolução da Microsoft Entity Framework 4.0 e as funcionalidades que poderemos esperar para o futuro. Sendo esta uma sessão de nível 400 tentei que a mesma fosse o mais orientada a exemplos e interactiva possível, através de diversas questões aos participantes relativamente ás maiores dificuldades enquanto utilizam a Entity Framework ou qualquer outra framework de ORM, e com base nisso mostrar exemplos de como o efectuar. Infelizmente não houve tanta interactividade como eu esperava, mas conseguimos ver as mais recentes evoluções desta tecnologia.
Este é o sumário da sessão:
- Uma breve introdução à Entity Framework e como é faz parte do Data Platform Group, e que outros elementos também fazem parte desse mesmo grupo, e eles são:
- Visual Studio Integration
- Quadrant
- Entity Framework
- WCF Data Services
- OData
- ADO.NET
- “M” / EDM
- SQL Server
- SQL Azure
- SQL Modeling Services
- …
- Novas funcionalidades
- Model-First Development
- A partir deste momento podemos optar por uma abordagem de criação do model de EF em primeiro lugar e com base nele gerar a base de dados, ou então apenas efectuar o mapeamento para o seu modelo de base.
- Pluralização automática
- O modelo agora tem a capacidade de ao invés de nomear a lista de entidades como sendo o nome da entitdade com o sufixo Set(ex. Person, PersonSet), agora podemos optar por pluralizar automáticamente esses contentores(ex. Person, People)
- Chaves estrangeiras no modelo
- Anteriormente não tinhamos no modelo as chaves estrageiras das propriedades de navegação do nosso modelo. Agora temos.
- Suporte a POCO (Plain Old CLR Object)
- Carregamento Retardado
- Neste momento o carregamento retardado está ligado por defeito e sem necessitarmos de colocar o Include na query, com acontecia antes.
- Geração de código com T4
- Um conjunto completo de templates T4 que poderemos utilizar para personalizar e definir como desejamos que os ficheiros sejam criados
- Personalização dos Templates (Igual ao anterior)
- IObjectSet
- Agora temos um interface, IObjectSet, que é a base dos EntitySet, e que nos permite criar os nossos próprios POCO com suporte a tracking
- Método SaveChanges marcado como virtual
- Nesta versão o método SaveChanges foi marcado como virtual, e por isso permite-nos extender o próprio método e colocar o nosso próprio código dentro dele.
- ObjectStateManager object
- Manages the state of our objects
- Entidade Auto geridas
- Capacidade de criar entidades que são responsáveis pela sua própria manutenção das alterações
- Melhorias na geração de SQL
- Enorme salto em termos de performance, pois bastante foi efectuado para melhorar o sql gerado com base nas queries de LINQ. Exemplo disso é a utilização da clausula Like em SQL quando no Linq é utilizado o método Contains, ao invés do que acontecia antes, pois era utilizado o CharIndex.
- Suporte a mais operadores Linq
- Contains
- DefaultIfEmpty
- Single, SingleOrDefault (com base na projecção)
- ExecuteStoreQuery e Translate
- Extensibilidade do Linq
- ExecuteStoreQuery
- ExecuteStoreCommand
- Melhorias na importação de Stored Procedures
- Possibilidade de importar as Store Procedures para o modelo como métodos, e o mesmo com as funções
- Funções definidas no Modelo (Igual ao anterior)
- Integração do Designer em WPF
- O novo designer do VS2010 foi criado em WPF
- Desenvolvimento apenas com código (Apenas com a EF Features CTP3)
- Possibilidade de ter modelos de EF aoenas em código, por isso sem a utilização de ficheiros edmx, csdl, ssdl ou msl. Tudo é descrito por código.
- Possibilidade para a utilização da Entity Framework
- Iniciar pela Base de Dados
- Iniciar pelo Modelo
- Iniciar com base em código
Podem encontrar esta apresentação aqui e no SlideShare:
TechDays 2010 Portugal - Entity Framework 4.0 Evolution and Future - 16x9
Mais apresentações pelo Nuno.Godinho.
Gostaria bastante de ter feedback sobre esta apresentação e também sobre os conteúdos da mesma.
(EN)
So another session that I did at Microsoft TechDays 2010 Portugal was around Microsoft Entity Framework 4.0 Evolution and features we can expect in the future. And being a 400 Level session I tried to do it as much sample based and interactive as possible, by asking the attendees what were their normal pains when using Entity Framework or any other ORM framework that they were working on, and show a sample of how to do that. Unfortunately there wasn’t as much interaction as I was expecting, but still we could see the most recent evolutions on this technology.
Here’s a summary of what this session was:
- Slight Introduction to Entity Framework and how that is part of the Data Platform Group, and what other elements are also at that group, and those are:
- Visual Studio Integration
- Quadrant
- Entity Framework
- WCF Data Services
- OData
- ADO.NET
- “M” / EDM
- SQL Server
- SQL Azure
- SQL Modeling Services
- …
- New features
- Model-First Development
- We are now able to achieve an approach where we do the EF Model first and after that we generate the database based on that, or only map the Storage Model into it.
- Automatic Pluralization
- The model now has the capability of instead of making the EntitySets named something like the name of the entity and adding Set to the name (ex. Person, PersonSet), we now have the option to pluralize that and it will do that automatically for us (ex. Person, People)
- Foreign Keys in models
- Previously we didn’t had the foreign keys of the navigation properties on our models, now we do.
- POCO Support
- Lazy Loading
- Now lazy loading is on by default and really works without having to use Include like it was previously
- T4 Code Generation
- A complete set of T4 templates we can use and customize to define how we want our code files to be generated
- Template Customization (same as before)
- IObjectSet
- Now we have an interface that is IObjectSet that is the basis of out EntitySet, and what this allows us to do, is create our our POCO classes that are Self-tracking
- Virtual SaveChanges method
- In this version we have SaveChanges marked as virtual, and so we can override that and place our own code in there.
- ObjectStateManager object
- Manages the state of our objects
- Self-tracking Entities
- Capability of doing some entities that are responsible for their own change management, and also aware of those changes
- SQL Generation Improvements
- Huge leap in terms of performance, since a lot was done in order to get the best possible sql code generated based on the Linq query. Examples like the usage of Like clause in SQL when we in Linq use the Contains method, instead of the previously used CharIndex.
- More Linq operator support
- Contains
- DefaultIfEmpty
- Single, SingleOrDefault (in top projection)
- ExecuteStoreQuery and Translate
- Linq Extensibility
- ExecuteStoreQuery
- ExecuteStoreCommand
- Stored Procedures Import improvements
- Capability of having Store Procedures imported to the model as Methods, as well as having also functions as part of the model methods
- Model defined functions (same as above)
- WPF designer integration
- New Designer in VS2010 is done in WPF
- Code-only development (Only at EF Features CTP3)
- Possibility of having all the EF model being done in code without using edmx, csdl, ssdl or msl files. All of this will be described in code.
- Possible Routes using Entity Framework
- Start with the database
- Start with the Model
- Start with .net classes
You can find this presentation here and on SlideShare:
TechDays 2010 Portugal - Entity Framework 4.0 Evolution and Future - 16x9
View more presentations from Nuno.Godinho.
I would enjoy very much to ear your thoughts about this presentation.
(PT)
Já passou bastante tempo desde a última vez que escrive sobre as minhas sessões no Microsoft TechDays 2010 Portugal, e para ser mais correcto, já passou bastante tempo desde a última vez que escrevi alguma coisa, mas aqui vou eu recomeçar com a minha escrita.
Por isso, uma outra sessão que fiz no evento Microsoft TechDays 2010 Portugal foi sobre Microsoft Silverlight Analytics Framework, e esta foi em conjunto com o meu amigo Ricardo Castelhano. O propósito desta sessão foi apresentar uma visão de 360 graus sobre esta nova Framework para o Silverlight e o que ela poderia significar para as nossas soluções. E como todos sabemos a análise é uma das partes bastante importantes das nossas aplicações, e não estou apenas a falar sobre a análise relativamente ao número de hits na págins, ou qualquer outra que habitualmente o pessoal do Marketing necessitam de medir, pois necessitamos bem mais do que isso. Imaginem se fosse possível compreendermos a forma como a nossa solução está a funcionar através da utilização destes dados de análise, e ao fazer isso estariamos na realidade a fazer a instrumentação da nossa. Foi exactamente sobre isto que falamos.
Em resumo a sessão abordou os seguintes pontos:
- Objectivos durante o Desenho
- Suportar toda as possibilidades de utilização de soluções Silvelright, e não apenas quando elas correm dentro do browser
- Suporte para diversos serviços de análise a funcionar ao mesmo tempo sem que isso tenha impacto na performance
- Simplificar a utilização dos mesmos por parte dos Designers
- Suportar Testes A/B
- Suportar protótipos em SketchFlow
- Suportar a Silverlight Media Framework
- Arquitectura
- A este nível o que acontece é que existem 3 (três) elementos associados à forma como a framework funciona, e eles são:
- Controlo de Silverlight
- Objecto que será analisado
- Receptor dos Dados
- Elementos que irá receber todas as informações relativas à análise que está a ser efectuado, e que por sua vez irá reencaminhar para o Log de Eventos
- Log de Eventos
- Elemento que irá receber e guardar todas as informações analisadas
- Ex. Event Viewer
- Como e que funciona?
- Todos os objectos da Silverlight Analytics Framework são na realidade Behaviors (comportamentos) de Silverlight que podem interagir com um elemento especifico
- Extensibilidade
- Existem 3 (três) formas que esta framework poderá ser extensida, e elas são:
- Analysis Services
- Incluí a criação de novos Behaviors
- Diversos parceiros Microsoft e outros fornecedores estão a fazer isto para nós
- Fornecedores de Controlos
- Templates de Visual Studio
- Templates que estão disponíveis para o Visual Studio de forma a aumentar a velocidade de construção e utilização de behaviors analiticos.
- Parceiros
- Parceiros presentes no lançamento
- Incluídos na Instalação da Framework
- AT internet
- Comscore
- GlanceGuide
- Google Analytics
- Nedstat
- Preemptive Solutions
- Quandcast
- Suportados pela Biblioteca de Controlos
- Outros Parceiros já Comprometidos
- Anvato
- Conviva
- Nielsen
- Skytide
- Visible Measures
- Webtrends
- Unica
- Infragistics
- Caso de Estudo
- Plataformas
- Informação sobre o Lançamento
- Release da versão Beta no MIX10
- Silverlight 3
- Blend 3
- VS2008
- Microsoft Silverlight Media Framework 1.0
- Smooth Streaming Media Element
- SDK RTW
- Silverlight 4
- Blend 4
- VS2010
- Microsoft Silverlight Media Framework 1.0
- Smooth Streaming Media Element
- Disponibilização
- http://msalf.codeplex.com
- Open Source – MS PL
- Desenvolvimento pela comunidade
- Em versão beta
- Aprender a partir do código
- Microsoft Silverlight Analytics Framework
- Microsoft Silveright Media Framework
- Managed Extensibility Framework
- Framework Installer and Source Code
- http://msaf.codeplex.com
- Gratis, Licença Open Source (MS-PL)
- Inclui desenvolvimentos efectuados pela comunidade
- Fornecedores de elementos de Análise
- Fornecedores de Consolos
- Designers
- Developers
- Microsoft Corporation
Poderão encontrar esta apresentação aqui e no SlideShare:
Gostaria bastante de ouvir os vossos comentários sobre esta sessão e relativa apresentação.
(EN)
It has been a while since I last wrote about my Microsoft TechDays 2010 Portugal sessions, and being really true, it’s been a while since I wrote anything at all, but here I go now of to another start in writing.
So another session that I did at the Portuguese TechDays 2010 event was about Microsoft Silverlight Analytics Framework, and this was done with my friend Ricardo Castelhano. The purpose of this presentation was to give a 360° view of this new Silverlight Framework and what it could mean for our solutions. And as you know Analytics is a very important part of our applications, and I’m not only talking about analytics of page hits, or that sort of things that normally Marketing people want measured, because we need more than that. Imagine if we could understand how our application is working by using this Analytics capabilities, and by doing that we would be instrumenting our application. This was exactly what we talked about.
The summary of this session is the following:
- Design Goals
- Support All the possible usages of Silverlight Applications, and not only when they are on the browser
- Support for multiple analytics services to work simultaneously without impacting the Performance
- Giving Support for Designers to easily use this framework
- Support A/B Testing
- Support for event SketchFlow prototypes
- Support for Silverlight Media Framework
- Architecture
- At this level what happens is that we have 3 (three) elements associated with the way this works, and those are:
- Silverlight Control
- Object that will be analyzed
- Data Collector
- Element that will receive every analysis information and send it to the right Event Log
- Event Log
- Element that will receive and store the analysis information
- Ex. Event Viewer
- How does this work?
- All Silverlight Analytics Framework objects are really Silverlight Behaviors that interact with some specific element
- Extensibility
- There are 3 (three) ways that this framework is being extended, and those are:
- Analysis Services
- This includes the creation of new behaviors
- Several Microsoft Partners and other vendors are doing this for us
- Control Vendors
- Visual Studio Templates
- Templates that are available for Visual Studio in order to ramp-up the new analytical behaviors.
- Partners
- Launch Partners
- Included in the Framework installer
- AT internet
- Comscore
- GlanceGuide
- Google Analytics
- Nedstat
- Preemptive Solutions
- Quandcast
- Supported by Control library
- Additional Committed Partners
- Anvato
- Conviva
- Nielsen
- Skytide
- Visible Measures
- Webtrends
- Unica
- Infragistics
- ShowCase
- Platforms
- Release Information
- Beta Release at MIX10
- Silverlight 3
- Blend 3
- VS2008
- Microsoft Silverlight Media Framework 1.0
- Smooth Streaming Media Element
- SDK RTW
- Silverlight 4
- Blend 4
- VS2010
- Microsoft Silverlight Media Framework 1.0
- Smooth Streaming Media Element
- Availability
- http://msalf.codeplex.com
- Open Source – MS PL
- Community Development
- Beta Status
- Learn from Code
- Microsoft Silverlight Analytics Framework
- Microsoft Silveright Media Framework
- Managed Extensibility Framework
- Framework Installer and Source Code
- http://msaf.codeplex.com
- Free, Open Source (MS-PL) License
- Community Development Including
- Analytics Vendors
- Control Vendors
- Designers
- Developers
- Microsoft Corporation
You can find this presentation here and on SlideShare:
I would enjoy very much to hear your thoughts about this presentation.
(PT)
Durante o TechDays 2010 em Portugal fiz uma sessão com o tema “Event-Driven Architectures: Como, Quando e Porquê?”. Esta foi uma sessão de nível 300e olhamos para situações reais onde poderiamos utilizar a abordagem EDA. O objectivo desta sessão era demonstrar o Porquê de necessitarmos de outra abordagem além do SOA, e Quando é que o EDA seria uma melhor abordagem que o SOA. Para finalizar olhamos para Como implementar WDA, bem como os componentes utilizados por esta abordagem e o seu mapeamento a produtos.
Esta sessão foi baseada no seguinte:
- Introdução
- Pensamentos comuns relativamente ao SOA e EDA
- SOA é apenas mais um RPC síncrono (maioritáriamente utilizando Web Services)
- EDA é SOA
- Não. EDA não é definitivamente o mesmo que SOA. “Event-driven architecture pode complementar a service-oriented architecture (SOA) pois os serviços poderão ser activados por triggers que serão disparados no momento em que chegam determinados eventos. Este paradigma é particularmente interesante sempre que o repositório não disponibilize quaisquer indormações sobre a sua execução” de acordo com a Wikipedia.
- O melhor do EDA e SOA foi combinado no SOA 2.0
- Verdade. O SOA 2.0 é também conhecido por Event-Driven SOA. É “a capacidade de criar eventos de negócios em alto nível a partir de um conjunto numeroso de eventos de sistema de baixo nível. Eventos criados através da filtragem de dados em tempo real (a partir do middleware, aplicações, based de dados, e Web Services, …) e complementando-os com um maior nível de detalhe como dependências ou relacionamentos causais descobertos através da correlacção de eventos.” de acordo com a Wikipedia.
- Porque necessitamos disto?
- Basicamente devido a uma alteração da forma como os negócios funcionam, para um abordagem muito mais “A Pedido”, devido a:
- Reestruturações sucessivas da estrutura organizacional
- Outsourcing the processos para parceiros externos
- Visão dos Departamentos e Unidades de Negócio como sendo Fornecedores de Serviços
- Necessidade de ter aplicações cada vez mais independentes
- Um exemplo disto mesmo é o EAI. Formas de efectuar o EAI?
- Transferência de Ficheiros
- Problemas
- Diversos formatos não Standard
- Necessidade de tradução de um formato para outro
- Carregamento Manual
- Bases de Dados Partilhadas
- Problemas
- Dados altamente interligados entre as diversas aplicações
- Updates Incrementais e Parciais tornam-se impossíveis
- Web Services
- Problemas
- Necessitam de estar disponíveis no momento da chamada
- Resulta em diversas chamadas
- Consumidor intensivo de recursos
- Mais uma outra forma de Remote Procedure Call (RPC, COM, Corba, DCOM, ...)
- Messaging
- Benefícios
- Definição de um formato de dados
- Operações assincronas
- Minimização das Interdependências
- Tolerancia a falhas
- Frescura de Dados
- Problemas
- Praticamente impossível de criar soluções “reactivas”
- Eventos
- Beneficios
- Representam uma alteração de estado
- Auto-contidos
- Identificados Univocamente
- Relevantes no tempo, mas não sensiveis ao tempo
- Enviados utilizando messaging
- Observáveis
- Tipos de Eventos
- Execução
- Ciclo de Vida
- Gestão
- Negócio
- Event Driven Architecture
- O que é o EDA?
- Padrão de arquitectura que efectua a orquestração de comportamentos em volta da:
- Produção
- Detecção
- Consumo de eventos bem as respostas às chamada por si efectuadas.
- Forma de criação de Sistemas Empresariais em que os eventos fluem entre componentes e serviços independentes
- Um Modelo de fácil manutenção, sustentável e extensível de criar aplicações complexas e distribuídas
- Óptimo para ambientes assincronos e imprevissíveis
- Componentes extremamente Independentes
- Inversão da Comunicação
- Em contraste com a comunicação directa que é frequentemente utilizada numa composição SOA, ou noutros tipos de padrões de arquitectura, a comunicação é efectuada de uma forma assincrona através da comunicação de eventos
- Porque necessitamos do EDA?
- As empresas têm de gerir e reagir em tempo real a um enorme conjunto de eventos que acontecem todos os dias
- Sistemas de Troca de Acordos em tempo real
- Sistemas de Reserva de Voos
- Streaming de dados de Bolsa
- Localização de veículos em tempo real por parte das empresas de transporte
- Sistemas de Mercados de Valores
- Os arquitectos de sistemas normalmente têm de suportar ambos os sistemas, quer de Eventos ou de Serviços
- Os sistemas têm de se tornar cada vez mais “Orientados ao Negócio”
- Tipos de EDA?
- Simple Event Processing
- Habitualmente utilizado para transportar em tempo real um fluxo de trabalho, desta forma conseguinto cortar o tempo de “reacção” e os custos na gestão dos negócios
- Event Stream Processing
- Normalmente utilizado para transportar em tempo real um fluxo de informação interna e sobre a concorrência da empresa, que permitem um processo de decisão bastante mais eficiente
- Complex Event Processing
- Normalmente utilizado para detectar e responder a anómalias, ameaças ou oportunidades de negócio.
- Componentes
- Camadas do Fluxo de Eventos
- Gerador de Eventos
- Cada evento é gerado por uma origem. A origem pode ser uma aplicação, uma base de dados, um serviço, um processo de negócio, um transmissor, um sensor ou uma ferramenta de colaboração (IM, email). Um evento ”normal” poderá ser avaliado sobre a sua notoriadade por um processador de eventos (filtragem e routeamento), resultando na geração de um novo evento notável/importante.
- Devido a uma enorme variedade de geradores de eventos, nem todos os eventos serão gerados no formato necessário pelo processador de eventos. Nesses casos, os eventos necessitam de ser transdormados para o standard utilizado pela empresa antes de serem colocados no Canal de Eventos.
- Canal de Eventos
- O Canal de Eventos, que é tipicamente uma base de Messaging, transporta os eventos com um formato standard entre o gerador de eventos, o motor de processamento de eventos e os subscritores.
- Motor de Processamento de Eventos
- Nesta camada, após a recepção os mesmos são analisados relativamente regras de processamento e com base nisso, serão despoletadas acções. Estas regras de processamento e acções são definidas de acordo com as necessidades das partes interessadas e não pelos geradores desses mesmos eventos.
- As acções incluêm camadas a serviços, iniciar processos de negócio, publicação de eventos para o Hub de subscrição, notificação directa de humanos ou outros sistemas, geração de novos eventos, e/ou captura de eventos por razões de histórico.
- Os eventos são processados por motores. Um motor simples processa cada ocurrência de um eventode forma independente.
- Um motor complexo processa uma ocurrência de um novo evento em contexto com eventos passados ou futuros.
- Actividade de Envio
- Um evento simples, ou uma correlação poderão iniciar diversas actividades de envio. A invocação da actividade poderá ser um “push” por parte do motor de processamento de eventos (chamada a serviços, inicio de processos de negócio, notificações) ou “pull” por parte dos subscritores das publicação de eventos.
- Os Subscritores poderão ser humanos, aplicações, processos de negócio activos, data warehouses, dashboards de performance, e/ou agentos automatizados.
- Os eventos deverão ser publicados num formato de eventos standard. A transformação para formatos específicos dos subscritores é tipicamente efectuado após, no motor de Integrações do cliente.
- SOA vs EDA
- SOA
- Aplicações compostas na altura do desenho
- Fluxo linear entre os serviços
- Comportamento previsível
- Normalmente a utilização do Pedido/Resposta, e que é muitas vezes usado em demasia
- EDA
- Aplicações compostas em funcionamento / run-time
- Componentes Assincronos
- Comportamento Reactivo
- Onde se aplica o SOA?
- Integração Vertical entre as diversas camadas funcionais da aplicação
- Processo funcional de pedido-resposta como nos dialogos homem-máquina; O utilizados fica a aguardar uma resposta
- Processas de natureza transacional que requerem as capacidades de commit e rollback
- Enriquecimento dos dados da mensagem que será publicada por forma a transformar a mensagem original de acordo com o formato formal utilizado
- Onde se aplica o EDA ?
- Comunicações horizontais entre as camadas da cadeia de processos
- Processos do tipo Workflow
- Processos que cruzam fronteiras funcionais conhecidas da organização, externas (B2B) e internas
- Conlusão
- Não existe o SOA vs EDA, eles na realidade funcionam bastante bem em conjunto pois completam-se
- Como Implementar
- Utilizando as tecnologias de Web Services disponíveis, e adicionalmente uma infraestrutura de Message Queuing.
- As Infraestruturas actuais de ESB disponibilizam uma forma de combinar o Message Queuing com as tecnologias de Web Services.
- As implementação de SOA e EDA deverão ter em conta o contexto de Business Process Management (BPM)
- Ferramentas BPM modernas são baseadas em BPEL (Business Process Execution Language)
- A implementação actual do BPEL está fortemente focada no modelo the command-and-control, na Orquestração de Serviços, e por isso mesmo em SOA
- Além da Orquestração o BPEL – até certo ponto – também suporta Workflows, uma forma coreografada que vai na diração do EDA
- BPEL é procedimental por natureza
- EDA necessita de um modelo declarativo.
- Passos de Preparação:
- 1. Modelar os requisitos de negócio em funções de uma granularidade de acordo com a autonomia desejada.
- 2. Definir a base da aplicação de forma a identificar todos os sistemas afectados.
- 3. Mapear a base da aplicação para o modelo funcional do negócio.
- 4. Identificar as aplicações que cruzam as fronteiras funcionais como potenciais "bottlenecks ágeis" (associas uma prioridade especial alta para essas aplicações que necessitam de atravessar as fronteiras organizacionais para o exterior).
- Bases para o decoupling dos serviços
- Recursos
- Livros
- Enterprise Integration Patterns (Gregor Hohpe and Bobby Woolf)
- Patterns for Enterprise Architecture (Martin Fowler)
- SOA Patterns (Arnon Rotem-Gal-Oz, Eric Bruno, Udi Dahan)
- Event Processing: Designing IT Systems for Agile Companies (K. Chandy , W. Schulte)
- Event-Driven Architecture: How SOA Enables the Real-Time Enterprise (Hugh Taylor, Angela Yochem, Les Phillips, Frank Martinez)
- SOA Design Patterns (The Prentice Hall Service-Oriented Computing Series from Thomas Erl)
- Sites
Podem encontrar esta apresentação aqui e no SlideShare:
Gostaria de ouvir os vossos comentários e questões relativamente a esta sessão.
(EN)
During TechDays 2010 in Portugal I did a session about “Event-Driven Architectures: Why, When and How?”. This was a level 300 session and we looked at real situations where we could make use of the EDA Approach. The purpose of this session was to show Why we need another approach other then SOA, and When is EDA a better approach than SOA. To finalize we looked at How we can implement EDA, as well the components that this approach uses, and their product mapping.
So the session was based on the following:
- Introduction
- Common Thoughts about SOA and EDA
- SOA is just a Synchronous RPC (mostly over Web Services)
- EDA is SOA
- No. EDA is not SOA. “Event-driven architecture can complement service-oriented architecture (SOA) because services can be activated by triggers fired on incoming events. This paradigm is particularly useful whenever the sink does not provide any self-contained executive” according to Wikipedia.
- The Best of EDA and SOA is combined in SOA 2.0
- That’s right. SOA 2.0 is also known and Event-Driven SOA. “the ability to create high-level business events from numerous low-level system events. Events are created by filtering real-time data (from middleware, applications, databases, and Web services, for example) and infusing it with defining detail such as dependencies or causal relationships discovered by correlating other events.” according to Wikipedia.
- Why do we need this?
- Basically due to a Trend Change that move to a more On-Demand Business, due to:
- The several organization structure changes
- Outsourced processes to External Partners
- Departments and Business Units are now seen as Service Providers
- Loose Coupling of application components
- Example of this is EAI. Ways to achieve this?
- File Transfer
- Problems
- Various non-Standard Formats.
- Translation is needed from one to another format
- Manually Loaded
- Shared Databases
- Problems
- Data is tightly coupled to multiple applications
- Impossible to make incremental or partial updates
- Web Services
- Problems
- Requires services to be available at invocation
- Results in multiple call stacks
- Resource consuming
- Yet another Remote Procedure Call (RPC, COM, Corba, DCOM, ...)
- Messaging
- Benefits
- Defined data format
- Asynchronous Operations
- Minimized Coupling
- Fault Tolerance
- Data Freshness
- Problems
- Almost Impossible to make “reactive” applications
- Events
- Benefits
- Represent a change in state
- Self-Contained
- Uniquely indentified
- Time relevant, not time sensitive
- Sourced using messaging
- Observable
- Event Types
- Execution
- Lifecycle
- Management
- Business
- Event Driven Architecture
- What is EDA?
- Architecture pattern that orchestrates behavior around:
- Production
- Detection
- Consumption of events as well as the responses they invoke.
- Method for building enterprise systems in which events flow between decoupled components and services
- A maintainable, sustainable and extensible model for building complex, distributed applications
- Suited for Asynchronous, unpredictable environments
- Extremely Loosely Coupled
- Inversion of communication
- In contrast to the direct communication frequently used in a composite SOA, or other architectures, communications is done asynchronously through publishing events
- Why do we need EDA?
- Companies must manage and react to a large number events every day in real time
- Real time trade settlement systems
- Flight reservation system
- Streaming stock data
- Real time vehicle location for transportation companies
- Stock Exchange Market systems
- System designers normally must support both events and Services
- Systems must be “Business Oriented”
- Types of EDA?
- Simple Event Processing
- Commonly used to drive the real-time flow of work—taking lag time and cost out of a business
- Event Stream Processing
- Commonly used to drive the real-time flow of information in and around the enterprise, which enables in-time decision making
- Complex Event Processing
- Commonly used to detect and respond to business anomalies, threats, and opportunities.
- Implementation Components
- Event Flow Layers
- Event Generator
- Every event is generated from a source. The source might be an application, data store, service, business process, transmitter, sensor, or collaboration tool (IM, email). An ordinary event may be evaluated for notability by an event preprocessor (router, filter), resulting in the generation of a new notable event.
- Because of the variety of event generators, not all events will be generated in the required format for event processing. In those cases, the events need to be transformed to the required (enterprise standard) format prior to being deposited in the event channel.
- Event Channel
- The event channel, typically a messaging backbone, transports standard formatted events between event generators, event processing engines, and downstream subscribers.
- Event Processing Engine
- In the event processing layer, upon receipt, events are evaluated against event processing rules, and actions are initiated. The event processing rules and actions are defined in accordance to the needs of the interested parties, not of the event generators.
- The actions include invoking a service, initiating a business process, publishing the event out to a subscription hub, directly notifying humans or systems, generating a new event, and/or capturing the event for historical purposes.
- Events are processed by engines. A simple engine processes each event occurrence independently.
- A complex engine processes new event occurrences in context of prior and future events.
- Downstream Activity
- A single event, or event correlation, may initiate numerous downstream activities. The invocation of the activity might be a push by the event processing engine (service invocation, business process initiation, notification) or a pull by subscribers of event publications.
- Subscribers might be humans, applications, active business processes, data warehouses, performance dashboards, and/or automated agents.
- Events should be published in the standard event format. Transformation to subscriber-specific formats is typically done by an enterprise integration backbone.
- SOA vs EDA
- SOA
- Applications are composed in design-time
- Linear flow between services
- Predictable behavior
- Request/Response is common, and often overused
- EDA
- Applications are composed at run-time
- Asynchronous components
- Reactive behavior
- What do SOA applies to?
- Vertical interaction between the hierarchical layers of functional decomposition
- Functional request-and-reply processes such as man-machine dialogues; the user waits for an answer
- Processes with a transactional nature which require commit and rollback facilities
- Data enrichment in a message to be published to bring the message to its full content in a formal format
- What do EDA applies to?
- Horizontal communication between tiers in a process chain
- Workflow type of processes
- Processes that cross recognizable functional organization borders, external (B2B) as well as internal
- Conclusion
- There’s no SOA vs EDA, they really work very well together and complete one another
- How to Implement
- Using Web service technologies today, and additional SOAP-aware message queuing infrastructure.
- Current ESB infrastructures provide a way of message queuing combined with Web service technologies.
- SOA and EDA implementations must be regarded in the context of Business Process Management (BPM)
- Modern BPM-tools are based on BPEL (Business Process Execution Language)
- Current BPEL implementation focuses strongly on the command-and-control model, the orchestration of services, and so on SOA
- Beside orchestration BPEL - to a certain extend - also supports workflow, a kind of choreography, which goes in the direction of EDA
- BPEL has a procedural nature
- EDA would rather be a declarative model.
- Preparation Steps:
- 1. Model business requirements into functions at the granularity level of the desired autonomy.
- 2. Outline the application landscape to identify all affected systems.
- 3. Map the application landscape to the business function model.
- 4. Identify applications that cross functional borders as potential "agility bottlenecks" (assign a special high priority to those applications that are required to cross external organization borders).
- Basics for the decoupled service boundaries
- Resources
- Books
- Enterprise Integration Patterns (Gregor Hohpe and Bobby Woolf)
- Patterns for Enterprise Architecture (Martin Fowler)
- SOA Patterns (Arnon Rotem-Gal-Oz, Eric Bruno, Udi Dahan)
- Event Processing: Designing IT Systems for Agile Companies (K. Chandy , W. Schulte)
- Event-Driven Architecture: How SOA Enables the Real-Time Enterprise (Hugh Taylor, Angela Yochem, Les Phillips, Frank Martinez)
- SOA Design Patterns (The Prentice Hall Service-Oriented Computing Series from Thomas Erl)
- Sites
You can find this presentation here and on SlideShare:
I would enjoy very much to ear your thoughts about this presentation.
(PT)
Durante o TechDays 2010 em Portugal fiz uma sessão sobre “Introdução ao Silverlight 4.0”, que foi na realidade uma sessão de nível 200, o que significa que fizemos na verdade uma introdução às novas funcionalidades do Silverlight 4.0, tendo uma noção clara do que poderemos fazer, e quem está neste momento a utilizar a tecnologia e com que resultados.
Por isso mesmo a sessão foi baseada no seguinte:
- Introdução ao Silverlight
- Nesta fase falamos um pouco relativamente à história do Silverlight, em termos do que conseguimos fazer, como funciona e como tem crescido.
- Casos de Sucesso
- Multimédia
- Alguns casos de sucesso sobre Multimédia:
- nbcsports.msnbc.com (NFL Sunday Night Football)
- Roland Garros 2009 Tennis Tournment
- NBCOlympics
- NetFlix
- Exemplos em Portugal:
- Aplicações de Negócio
- Algumas histórias de Aplicações de Negócio
- Exemplos em Portugal:
- RIA
- Algumas histórias sobre RIAs
- Exemplos em Portugal:
- Marketing Digital
- Histórias de Marketing Digital
- Exemplos em Portugal:
- Funcionalidades específicas do Silverlight 4.0
- Analisadas nas seguintes áreas
- Multimédia
- Experiências Ricas
- Aplicações de Negócio
- Para além do Browser
- Ferramentas de Desenvolvimento
Podem encontrar esta apresentação aqui e no SlideShare:
Espero ouvir as vossas opiniões e comentários sobre esta apresentação.
(EN)
During TechDays 2010 in Portugal I did a session about “Introduction to Silverlight 4.0”, that was really a level 200 session, which means that we were doing a lot of Intro to the New features of Silverlight 4.0, and having a clear insight about what we can do, and who is currently using it and with which results.
So the session was based on the following:
- Introduction to Silverlight
- Here we talked a little bit about the history of Silverlight, in terms of what it can do, where it works, how it works, and how it is growing.
- Customer Stories
- Media
- Some Silverlight Media Stories were presented like:
- nbcsports.msnbc.com (NFL Sunday Night Football)
- Roland Garros 2009 Tennis Tournment
- NBCOlympics
- NetFlix
- For Portuguese examples we saw:
- Business Applications
- Some LOB Stories
- For Portuguese examples we talked about:
- RIA
- Some RIA Stories
- For Portuguese examples we saw:
- Digital Marketing
- Some Digital Marketing Stories
- For Portuguese examples we saw:
- Silverlight 4.0 specific features
- Analysis in the following areas
- Media
- Rich Experiences
- Business Applications
- Beyond the Browser
- Developer Tools
You can find this presentation here and on SlideShare:
I would enjoy very much to ear your thoughts about this presentation.
(PT)
No TechDays 2010 Portugal fiz uma sessão relativa a “Workflow Services e Windows Server AppFabric – A Dupla Perfeita”. Basicamente esta sessão esteve dividida nas seguintes partes:
- Introdução
- O que são os Workflow Services?
- O que é o Windows Server AppFabric?
- Como conseguir coordenação de trabalho
- Como conseguir efectuar correlacção com base nas Mensagens
- Como podemos utilizar o Windows Server AppFabric para Monitorizar os serviços e Workflows
- Como podemos utilizar o Windows Server AppFabric para gerir a persistência dos Workflows
- Em termos de disponibilização numa Farm, Como é que o Windows Server AppFabric nos poderá ajudar
Então estes foram os diversos tópicos abordados nesta sessão e poderão encontrá-la aqui.
(EN)
So in TechDays 2010 Portugal I did a session about “Workflow Services and Windows Server AppFabric – How they work great together”. Basically this session was sliced in the following parts:
- Introduction
- What are the Workflow Services?
- What is Windows Server AppFabric?
- How to achieve Coordination Of Work
- How to achieve Message Correlation
- How to do Monitoring with Windows Server AppFabric
- How to do Persistence with Windows Server AppFabric
- In terms of Farm Availability, How does AppFabric helps
So these were the several topics of my presentation that can be found here.
(PT)
O TechDays 2010 Portugal já terminou e foram 3 dias de evento muito interessantes. Em termos de conteúdos penso que foi o melhor que alguma vez assisti, por isso penso que está tudo dito.
No evento deste ano fiz diversas sessões em diversas áreas diferentes e obtive um feedback bastante positivo relativamente ás mesmas, e também bastante construtivo que irei incorporar nas minhas próximas apresentações.
Por isso, e de forma a manter as sessões a correr, mesmo após o evento terminar, irei disponibilizar todos os materiais utilizados e gostaria de ouvir mais dos vossos comentários sobre os diversos assuntos, bem como responder ás vossas questões e olhar em maior detalhe para alguns dos conteúdos das sessões.
Então aqui fica uma lista das minhas sessões no TechDays 2010 Portugal:
- “Workflow Services e Windows Server AppFabric – A Dupla Perfeita”
- “Como garantir a escalabilidade da sua camada de dados com o Windows Server AppFabric”
- “Event Driven Architecture: Como, Quando e Porquê?”
- “Introdução ao Silverlight 4.0”
- “Microsoft Silverlight Analytics Framework - “Do Geral ao Detalhe””
- “WCF RIA Services – “Do Geral ao Detalhe””
- “Evolução da Entity Framework 4.0 e o seu futuro”
Espero que considerem estas diversas sessões interessantes.
(EN)
So TechDays 2010 Portugal already ended and it was a very interesting 3 day Event. In terms of Contents I would say that it was one of the best I’ve ever been, and so I think that tells it all.
In this years event I did several talks, in several different areas of expertise and I got some very positive feedback and also some very helpful feedback, that I’ll take into account in my next presentations.
So in order to maintain the Sessions running, even though the event already ended I’ll post my materials here and would like to ear more comments from you, as well as answer all your questions, and do some more deep dive into the session contents and also the areas we talked about.
So here’s a list of my TechDays 2010 Portugal talks:
- “Workflow Services and Windows Server AppFabric – How they work great together”
- “Scale your Data-tier with Windows Server AppFabric Caching”
- “Event Driven Architecture: When, Why and How?”
- “Introduction to Silverlight 4.0”
- “Microsoft Silverlight Analytics Framework”
- “WCF RIA Services – Deep-Dive”
- “Entity Framework 4.0 and Beyond”
I hope you find this several Sessions interesting.
Sendo a agenda um dos grandes desafios neste tipo de eventos, parece-me que seria interessante fazer algumas sugestões relativas à agenda do evento, de acordo com o tipo de conteúdos e pessoa que olhar para a agenda. Por isso aqui ficam as minhas sugestões para Arquitecto:
- Track de Web e UX
- Track de Arquitectura
- Track de Desenvolvimento
- Track de Windows
- Track de Bases de Dados
- Track de Office
- Track de Virtualização
- Sessões
- Instructor-Led HOL
- Track Académica
Espero que gostem, e acima de tudo não se esqueçam que estes eventos servem também para fazer networking, por isso aproveitem para falar com as outras pessoas, e até a ir a sessões fora dos vossos conhecimentos, pois o que se aprende torna-se uma mais valia na forma como olhamos para os desafios no futuro.
Sendo a agenda um dos grandes desafios neste tipo de eventos, parece-me que seria interessante fazer algumas sugestões relativas à agenda do evento, de acordo com o tipo de conteúdos e pessoa que olhar para a agenda. Por isso aqui ficam as minhas sugestões para Hardcore Developer:
Hardcore Developer – Developer com muita experiência e com preocupações muito mais profundas sobre as soluções.
- Track de Web e UX
- Track de Arquitectura
- Sessões
- Instructor-Led HOL
- Track de Desenvolvimento
- Sessões
- Instructor-Led HOL
- Track de Windows
- Track de Bases de Dados
Espero que gostem, e acima de tudo não se esqueçam que estes eventos servem também para fazer networking, por isso aproveitem para falar com as outras pessoas, e até a ir a sessões fora dos vossos conhecimentos, pois o que se aprende torna-se uma mais valia na forma como olhamos para os desafios no futuro.
Sendo a agenda um dos grandes desafios neste tipo de eventos, parece-me que seria interessante fazer algumas sugestões relativas à agenda do evento, de acordo com o tipo de conteúdos e pessoa que olhar para a agenda. Por isso aqui ficam as minhas sugestões para Developer:
Developer – Developer que desenvolve soluções, nomeadamente o nível abaixo da UX.
- Track de Web e UX
- Track de Arquitectura
- Sessões
- Instructor-Led HOL
- Track de Desenvolvimento
- Sessões
- Instructor-Led HOL
Espero que gostem, e acima de tudo não se esqueçam que estes eventos servem também para fazer networking, por isso aproveitem para falar com as outras pessoas, e até a ir a sessões fora dos vossos conhecimentos, pois o que se aprende torna-se uma mais valia na forma como olhamos para os desafios no futuro.
Sendo a agenda um dos grandes desafios neste tipo de eventos, parece-me que seria interessante fazer algumas sugestões relativas à agenda do evento, de acordo com o tipo de conteúdos e pessoa que olhar para a agenda. Por isso aqui ficam as minhas sugestões para Hardcore Web Developer:
Hardcore Web Developer – Web Developer com características muito mais profundas do que apenas a UX.
Track de Web e UX - Sessões
- Instructor-Led HOL
- Track de Windows Phone
- Track de Arquitectura
- Sessões
- Instructor-Led HOL
- Track de Desenvolvimento
Espero que gostem, e acima de tudo não se esqueçam que estes eventos servem também para fazer networking, por isso aproveitem para falar com as outras pessoas, e até a ir a sessões fora dos vossos conhecimentos, pois o que se aprende torna-se uma mais valia na forma como olhamos para os desafios no futuro.
Sendo a agenda um dos grandes desafios neste tipo de eventos, parece-me que seria interessante fazer algumas sugestões relativas à agenda do evento, de acordo com o tipo de conteúdos e pessoa que olhar para a agenda. Por isso aqui ficam as minhas sugestões para Devigners:
Devigner – Este nome estranho para alguém que faz Design e Desenvolvimento ao mesmo tempo (Não, não fui eu que inventei o nome agora mesmo), mas que maioritáriamente tem a UX como objectivo Espero que gostem, e acima de tudo não se esqueçam que estes eventos servem também para fazer networking, por isso aproveitem para falar com as outras pessoas, e até a ir a sessões fora dos vossos conhecimentos, pois o que se aprende torna-se uma mais valia na forma como olhamos para os desafios no futuro.
Sendo a agenda um dos grandes desafios neste tipo de eventos, parece-me que seria interessante fazer algumas sugestões relativas à agenda do evento, de acordo com o tipo de conteúdos e pessoa que olhar para a agenda. Por isso aqui ficam as minhas sugestões para Designers:
Espero que gostem, e acima de tudo não se esqueçam que estes eventos servem também para fazer networking, por isso aproveitem para falar com as outras pessoas, e até a ir a sessões fora dos vossos conhecimentos, pois o que se aprende torna-se uma mais valia na forma como olhamos para os desafios no futuro.
Sempre que existem este tipo de eventos muito grandes, e com um elevado número de sessões e conteúdos diferentes torna-se complicado escolher qual a sessão que iremos assistir, e muitas vezes nem todos têm uma noção exacta sobre o nível de dificuldade das sessões. Tendo isto em conta resolvi dar uma ajuda e explicar a forma de descobrirem qual o nível de dificuldade de uma determinada sessão.
A Microsoft utiliza normalmente 4 níveis para as sessões neste tipo de eventos, sendo eles os seguintes:
- 100 – Introdutório: Funcionalidades do Produto/Tecnologia, Visão Geral dos Benefícios
- Normalmente não existem muitas destas sessões neste tipo de eventos.
- 200 – Intermédio: Visão mais aprofundada sobre um Produto ou Técnologia especifica
- 300 – Experiente: Migração de produtos, deployment, arquitectura, Deep-Dive na Tecnologia ou Produto
- 400 – Avançado/Expert: Desenvolvimento Avançado, Boas Práticas, Desenho de Soluções, Resolução de Erros
Com base nestes níveis de sessões poderemos então olhar para o a agenda com identificando o nível da sessão com base no primeiro dígito do código da mesma, ou seja, se a sessão é WUX223, então trata-se de uma sessão de nível 200, se for WIN303 trata-se de uma sessão de nível 300 e assim sucessivamente.
Uma das boas práticas utilizadas pelos Oradores quando estão a criar as sessões é criarem as mesmas para um nível 50 pontos acima, ou seja, se for um nível 200 colocamos conteúdos para a tornar um pouco mais detalhada de forma a não defraudar as expectativas dos participantes, sendo que por vezes alguns slides e demos deixam de fazer parte da apresentação, com base nos conhecimentos e expectativas dos participantes.
Para os Instructor-Led HOL (Hands-on-Labs) não deverão utilizar o mesmo tipo de análise pois a numeração tem a ver com apenas com a empresa responsável pelos mesmos. Como identificar os HOL? Em vez de estar definido o número da sala aparece “Sala Flag”, “Sala Rumos” ou “Sala Galileu”.
Espero que tenha ajudado a melhor escolherem as vossas sessões para o TechDays 2010.
Será já na próxima terça-feira dia 20 de Abril que irá ter inicio o maior evento técnico da Microsoft Portugal. Este é um evento de 3 dias irá ser bastante intenso em termos de conteúdos, intensidade de sessões e networking. Será a primeira vez que teremos um evento tão intenso em Portugal, pois eventos temos um enorme conjunto de sessões inclusivamente durantes as horas de almoço, proporcionando a todos a possibilidade de tirarem o máximo proveito do seu investimento na inscrição do mesmo. Pessoalmente, este é o tipo de eventos que mais gosto.
O evento irá ser um misto de IT Pros, Developers, Estudantes e pela primeira vez para Designers, pois iremos ter diversas tracks de forma a conseguir chegar a todos os diferentes públicos alvo. Para isso o mesmo encontra-se dividido nas seguintes áreas:
- Académico
- Arquitectura
- Base de Dados
- Desenvolvimento
- Design aplicado á Tecnologia
- Dynamics
- Management
- Windows Phone
- Office
- Segurança
- Unified Communications
- Virtualização
- Windows
- Web e UX
- 20/10
- Este é um espaço muito interessante de mini-sessões, que serão levadas a cabo por diversas pessoas que irão partilhar as suas experiências, num verdadeiro espirito de comunidade.
- Muito interessante o conceito, e parabéns pela ideia.
Espero que possam estar presentes neste evento de forma a demonstrar-mos que este tipo de eventos são muito importantes, e começarmos a desenvolver melhores soluções e resolver melhor o problema dos nossos clientes.
Eu irei estar presente e irei efectuar algumas sessões (http://www.techdays2010.com/Event/Speaker/Details/nuno-godinho) que penso serem bastante interessantes, e se quiserem dar o vosso contributo sobre o que gostavam de ver respondido nessas sessões podem deixar aqui as vossas sugestões, e prometo que as terei em conta. Até poderemos fazer uma coisa que é colocarem as vossas sugestões por Twitter para @NunoGodinho ou utilizando as seguintes hashtags:
Podem vir ter comigo durante o evento sempre que quiserem, só pedia para evitarem durante as idas à casa de banho (o ambiente é capaz de não ser o melhor), e durante as sessões (os outros participantes são capaz de não ficar muito contentes se não conseguir dar todo o conteúdo e responder a todas as perguntas). :)
Podem encontrar mais informações sobre o local, horários, speakers, etc no site do evento em http://www.techdays2010.com. Para começarem a predefinir as sessões que tem interesse em assistir podem utilizar o pdf da agenda que foi disponibilizado em http://www.techdays2010.com/Content/templates/Agenda%20Techdays%20v1.3.pdf.
Durante este evento irão também estar presentes as diversas comunidades, sendo que as mesmas irão fazer algumas acções.
O que acham de haver um “Code Challenge” durante o evento, em que é colocado um problema, ou um conjunto de problemas por áreas e em que a solução mais criativa e que funcione será a vencedora? Se acham interessante então dêem as vossas opiniões e votem em http://techdays2010ptcodechallenge.uservoice.com. Para votar e sugerir tópicos para o Code Challenge vão a http://techdays2010ptcodechallengetopics.uservoice.com. Quantas mais pessoas demonstrarem interesse nesta iniciativa mais interessante se poderá tornar em termos de conteúdos, e prémios. Se tiverem dúvidas contactem-me. As votações serão posteriormente analisados e entregues às diversas comunidades para que em conjunto as promovam. O que acham desta ideia?
Vamos fazer deste evento o melhor de sempre. :)
Mais Entradas
Página seguinte »