Deste ultimo dia, destaco estas duas apresentações, ainda na linha do que designei de W*F (aka, Windows "qualquer coisa" Foundation :)):
DEV020 - Extensibilidade do Windows Workflows Foundation com Custom Activities
DEV024 - Construir Serviços WCF com WWF - Presente e Futuro
E sobretudo estas duas, que gostei bastante:
DEV027 - LINQ - .NET Language Integrated Query Framework
DEV025 - Segurança na Windows Communication Foundation: objectivos, modelos, padrões e pontos de extensão
Cá seguem os meus resumos:
DEV020 - Extensibilidade do Windows Workflows Foundation com Custom Activities
O WWF foi lançado em Novembro/06 como parte do Windows Vista/.Net 3.0.
Nesta sessão foi relembrado o conceito de Workflow como implementação de processo ou lógica de negócio. Foi ainda relembrado o concieto de actividade, um passo no workflows (e/ou uma classe .Net)
Fazendo a analogia com a UI:
- workflow = form
- actividade = controls
As Custom Activities são escritas quando há necessidade de reutilização.
Como fazer uma Custom Activity:
- derivar da base-class Activity
- usar o namespace System.Workflows.ComponentModel
É possivel tirar partido do XAML.
Sequência do workflow: é colocada no ficheiro XOML (o editável do XAML), na forma de tags
A máquina de estados da actividade inclui o seguinte:
- Initialize()
- Execute()
- Cancel()
- Compensate()
Uma excepção no workflow é uma Fault, que é passada para a actividade Faulting, onde é depois tratada.
Uma actividade é single threaded, logo não convém colocar nada pesado no workflow.
Benefícios do WWF:
- transparência
- serviços
- modificação dinâmica
As actividades são unidades fundamentais de Execução, Reutilização e Composição.
DEV024 - Construir Serviços WCF com WWF - Presente e Futuro
O que é o WCF e o WWF? E o que não são?
- são Frameworks de desenvolvimento de vanguarda
- não são pensadas para trabalhar em conjunto, dado que foram desenvolvidas em paralelo
- não são produtos! São frameworks.
Arquitecturas sincronas:
- utilizam o paradigma pergunta-resposta
- não utilizam toda a funcionalidad WWF.
- dificuldades:
. passagem de parâmetros
. leitura/resposta
. sincronização de threads
Arquitecturas assíncronas:
- permitem usar todas as funcionalidades do WWF
- o WWF foi pensado para esta abordagem
- o que preciso ter mais?
. passo o id do workflow que quero executar (formas de passar o id: com cookies, soap header, customizada - ie, passo o id como parte da interface, mas não é uma boa solução - )
- mapeamento de inputs/outputs: External Data Exchange (construido para o SharePoint, é complexo de usar; válido mas limitado em termos de evolução futura; não vai ser abandonado)´
Como configurar uma External Activity:
- definir a interface
- criar um objecto que implementa a interface
Class MyFile PersistenceService: classe que permite guardar os dados em File System (ie, em suportes de dados persistentes)
WWF/WCF em .Net 3.5:
- duas novas actividades: send e receive (correlation tokens: associam a pergunta à resposta
- porque na versão 3.0 não é muito simples de implementar, a versão 3.5 traz algumas vantagens:
. queues (transparentes para o user)
. suporte a gestão de permissões
. suporte a conversações
Com o ORCAS (futura versão do Visual Studio) há problemas actuais que são resolvidos. A integração com o WCF e WWF passa a ser mais natural.
DEV027 - LINQ - .NET Language Integrated Query Framework
O LINQ é uma nova linguagem de query integrada na plataforma de desenvolvimento.
Não exige alterações à plataforma, mas às linguagens de programação (outra forma de fazer as coisas).
Efectua queries sobre objectos, e funciona com extensões ao C# 3.0.
Inovações no C# 3.0:
- inferência no tipo de variáveis locais
- expression tree
- tipos anónimos
- métodos de extensão
Os Standard Query Operators são os métodos disponiveis. Os Extension Methods podem ser utilizados acrescentando a referência de onde os métodos se encontram (ex.: System.Query).
Utiliza Deferred Query Execution, ie, a query só é executada quando tento iterar sobre os dados.
LINQ para SQL:
- actualmente:
. mando os dados da BD para um objecto (com open, datareader, etc...)
. desvantagens: pode haver incompatibilidades de data types (não há verificação em compile time)
- com o LINQ:
. os dados também são enviados para objectos
. as classes descrevem os dados (a classe é Strongly Typed)
. as tabelas são apenas colecções
. a ligação também é Strongly Typed (ex.: Northwind db = new Northwind(........);)
. a linguagem suporta sintaxe para queries
O ORCAS foi referido como facilitador para a integração com o LINQ.
Grande vantagem do LINQ: unifica o modelo de programação (não necessito saber XML, ou SQL, ou o que quer que seja, para aceder aos dados)
Outras vantagens:
- compile-time type checking
- intellisense
LINQ para XML:
- actualmente:
. modelo imperativo
. centrado no documento
. não tem querys integradas
. o DOM carrega tudo para memória (torna-se pesado)
- com o LINQ:
. centrado nos elementos
ex.:
xElement contacts = new xElement("contacts",
from c in customers
where c.Country = "USA"
Select new xElement("contact",
new xElement("nome", c.CompanyName),
new xElement("phone", c.CompanyPhone)
)
);
. modelo declarativo
. queries integradas
. menos código. E mais eficiente.
Principais caracteristicas:
- linguagem integrada de query (XPath, XQuery)
- melhor manipulação do DOM
Arquitectura LINQ:
- source implementa a IEnumerable
- source implementa a IQueryable
DEV025 - Segurança na Windows Communication Foundation: objectivos, modelos, padrões e pontos de extensão
Objectivos na troca de mensagens:
- confidencialidade
- autenticidade
- integridade
- autorização
- ...
Transporte vs. mensagem:
- segurança ao nivel da mensagem (XML-DSIG, XML-ENC, WS-*)
- segurança ao nivel do transporte (SSL, Kerberos, ...)
Ambos têm vantagens e desvantagens.
Segurança na WCF - é implementada ao nivel do channel Stack:
- Binding: define o formato da pilha de protocolos
. stack do cliente tem de igual ao stack do servidor
. não é no binding que defino o ssecurity token a usar (quem o define são os behaviors - clientCredentials, ServiceCredentials - ao nivel do Protocolo e do Transporte)
- authorization behaviors (definidos no Dispatcher, do lado do serviço)
Modos de binding:
- Transporte
- Mensagem (username, certificados X.509, Herberos, IssuedToken)
- Hibrido
Credenciais do cliente:
- ao definir as credenciais do cliente, defino também as credenciais do serviço
- qual escolher? Depende do cenário: Internet, Intranet, ambos, Federação
Componentes de um cenário de Autorização:
- Bindings
- Source Credentials
- ServiceAuthorizationBehaviors
Padrões de Autenticação:
- Arquitectura
- Desenho
- Implementação
WSSF - Web Service Software Factory:
- implementação de padrões para a WCF
NTLM: um protocolo de segurança que pode ser usado em alternativa ao Kerberos, mas é menos seguro => realça a importância de usar padrões, soluções testadas, em vez de usar configurações ad-hoc (exemplo de alteração de parâmetros de false para true, quando o Kerberos não funcionou. Passou a usar NTLM, baixando os niveis de segurança)
"O Admirável Mundo Novo" da Segurança:
- IdentityMetaSystem (entidades externas que verificam a identidade - IdentityProvider)
- a identidade é constituida por um conjunto de claims, transportadas em SecurityTokens, e representam uma identidade digital (como que um documento de identificação digital - tipo um BI digital, um Contribuinte digital, etc...)
Federação - um cenário mais complexo:
- posso criar uma cadeia de identity providers
- a comunicação é feita por WS-Trust
- como funciona:
. WSDL + WS-Policy (WS-MEX): para representar as politicas de segurança (obter metadata)
. WS-Trust: para enviar as mensagens (comunicar)
Pontos de extensão - autorização baseada em claims:
- claim: "the expression of a right with respect to a particular value"
- são implementadas em claimsets (o SecurityToken tem um claimset)
IdentityModel: utilizado para implementação de segurança com autorização baseada em claims
Pontos de extensão no WCF:
- validação de SecurityTokens (username tokens, validação de certificados X.509)
- definição de Thread.CurrentPrincipal (associação de roles)
- politicas de autorização
- SecurityTokens proprietários (Provider, Serializer, Authenticator)
- Canais de protocolos
No comments:
Post a Comment