datasnap e cloud - danysoft · deep dive agenda • rad cloud overview • dbexpress • novo api...

Post on 22-May-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

01/12/2011

1

DataSnap e Cloud

Deep Dive

Agenda

• RAD Cloud Overview

• DBExpress

• Novo API Cloud

• Novidades no DataSnap

01/12/2011

2

API Cloud

01/12/2011

3

O que é novo no API Cloud?

“Delphi API for accessing cloud application services from Amazon and Microsoft Azure.”

Serviços suportados pelo API Cloud

Storage Azure Blobs Service Amazon S3

Table Azure Table Service SimpleDB

Queue Azure Queue Service Amazon SQS

01/12/2011

4

Convenção de nomes

• Amazon e Microsoft utilizam diferentes nomes para as mesmas coisas…

Container = Bucket

Blobs = Object

Page = Multipart

ACL = ACL (Access Control List)

Microsoft Azure

• Blob Storage– Unstructured storage– Defined Container– For storing large pieces of data such as: Images, Video, 

Documents, etc.

• Azure Tables– Scalable structured storage– NOSQL type tables– Entities stored in a table– Different set of properties made up of different types

• Queues– Persistent asynchronous messaging– Each message is up to 8kb long

01/12/2011

5

Amazon WS

• Simple Storage Service (S3)– Blob Storage– Unstructured storage– Defined Container– For storing large pieces of data such as: Images, Video, Documents, 

etc.

• SimpleDB ‐ Tables– Scalable structured storage– NOSQL type tables– Entities stored in a table– Different set of properties made up of different types

• Simple Queue Service (SQS)– Persistent asynchronous messaging– Each message is up to 64kb long

Distribuição para Cloud

• O gestor de distribuição suporta:

– Microsoft Azure

– Amazon EC2

01/12/2011

6

O que há de novo no DataSnap 

O que há de novo no DataSnap

• Enhancements

– Server

– REST Interfaces

– Callback

– Authentication Manager

• New DataSnap Monitoring and Control

01/12/2011

7

Server 

• Suporte de informação de Proxy para ligações DataSnap HTTP em TSQLConnection e TDSRESTConnection

• Novo TDBXChannelInfo.DBXClientInfo(TDBXClientInfo record) que fornece:

– IP Address

– Protocol

– Application Name (se possível) – apenas em HTTP

Suporte HTTPS

• Para servidores stand‐alone DataSnap

• Para servidores stand‐alone WebBroker

• DataSnap wizards actualizados com suporte HTTPS

01/12/2011

8

Gestor de Sessão

• Suporte de sessão para protocolo TCP/IP

• Suporte para “store” e “retrieve” Tobject nas sessões

• Sessões “criadas” e “destruídas” com o protocolo TCP/IP agora notificam o nowAddSessionEvent e RemoveSessionEvent

• Suporte para múltiplos Callback Tunnels na interface DataSnap REST

Gestor Callback Tunnel

• Classe TDSCallbackTunnelManager na unidade DSServer

• Permite o seguimento quando:

– Callback é adicionado ou removido

– Tunnel é criado ou encerrado

01/12/2011

9

Callbacks 

• “Heavyweight callbacks” agora suportam a difusão para callbacks específicos

• GetAllChannelNames adicionado ao DSServerpara obter o nome de todos os canais callback

Eventos Callback no lado cliente

• As notificações de quando o gestor de Tunnelé aberto ou encerrado, ou quando os Callbacks são adicionados ou removidos, são também disponibilizadas para:

– Delphi DBX Client Events

– Delphi REST Client Events

– JavaScript REST Client Events

01/12/2011

10

Eventos cliente Delphi DBX

• Componente TDSClientCallbackChannelManager, evento OnChannelStateChange

• Method signature:(Sender: TObject; const EventItem: TDSClientChannelEventItem);

• TunnelClosedByServer – tipo de evento para ligações fechadas pelo servidor ou perda de ligação

Eventos cliente Delphi REST

• Componente TDSRestClientChannel, evento OnChannelStateChange

• Method signature:(Sender: TObject; const EventItem: TDSRESTChannelEventItem);

• ChannelClosedByServer – tipo de evento para uma perda de ligação não‐esperada com o servidor

01/12/2011

11

Eventos cliente JavaScript

• Cria‐se uma função que devolve um evento quando acontecer uma alteração no canal ou num dos seus callbacksvar channel = new ClientChannel (clientID, channelName);channel.onChannelStateChange = HandleChannelEvent;

• Se o servidor fechar o canal correctamente, o cliente terá um evento do tipo“ClientChannel. EVENT_CHANNEL_STOP”

• Se a ligação for perdida, o cliente terá um evento do tipo“ClientChannel. EVENT_SERVER_DISCONNECT”. 

Suporte de sessão JavaScript

• initSessionData function (inserverFunctionExecutor.js) poderá levar um segundo parâmetro (opcional)

• O parâmetro irá fazer referência à ID geral do cookie – dssessionid

• Vai permitir ter o controlo total sobre que aplicação utiliza cada ID/cookie de sessão

01/12/2011

12

JSON results e REST calls

• O evento OnResult event foi adicionado aos componentes TDSHTTPWebDispatcher e TDSHTTPService

• Permite transformar o formato do resultado JSON em chamada REST

• Method signature:

(Sender: TObject; var ResultVal: TJSONValue; const Command: TDBXCommand; var Handled: 

Boolean);

Query parameters in REST calls

• GetInvocationMetadata().QueryParams

• Devolve uma TStrings que contém os valores dos parâmetros de todas as queries que passaram pelo URL da chamada REST

01/12/2011

13

Monitorização e controloDataSnap

Monitorização e Controlo DataSnap

“DataSnap servers in XE2 are able to easily monitor connections, and close any TCP 

connection they wish.”

01/12/2011

14

O que consegue fazer

• Ter controlo sobre as ligações cliente

• Monitorizar os pedidos cliente

• Limitar o número de pedidos por ligação

• Melhorar a segurança

• E mais…

Como funciona isso?

• Os componentes TDSTCPServerTransport têm dois novos eventos:

– onConnect

– onDisconnect

• As ligações estão relacionadas com um ID de sesão

01/12/2011

15

Estar “à escuta” dos eventos TCP/IP

Detectando o desligar “normal”

• Por defeito, o evento OnDisconnect não será notificado se o cliente perder a ligação de internet de modo não‐esperado

• Este comportamento depende da configuração do sistema operativo

• Utilizar os métodos TDSTCPChannel para controlar este comportamento em cada ligação

– EnableKeepAlive

– DisableKeepAlive

01/12/2011

16

Como utilizar o EnableKeepAlive

• Se a ligação estivar “parada” durante 10 segundos, então envia um pacote para verificar se o client ainda está…

Event.Channel.EnableKeepAlive(10000); 

Como utilizar o EnableKeepAlive

• Se o cliente não responde, o SO irá tentar enviar o pacote X vezes (Win 7 tenta 10x).

• Poderá especificar o número de milissegundos de intervalo entre tentativas se o cliente não responder

Event.Channel.EnableKeepAlive(10000, 100); 

01/12/2011

17

KeepAlive Enablement

• Com o componente TDSTCPServerTransport

• Três novas propriedades:

– KeepAliveEnablement ‐ (Set: Default, Enabled, Disabled)

– KeepAliveTime ‐ Integer Milliseconds value

– KeepAliveInterval ‐ Integer Milliseconds value

Como utilizar o DisableKeepAlive

• Com o canal associado a determinada ligaçãoe chamar:

DisableKeepAlive;

01/12/2011

18

Encerrar as ligações Client

• A ligação pode ser encerrada a qualquer momento

• O Channel fornece a instância da ligação

//Saber o Channel associado a determinada ligação e se conseguir, encerrá‐la

if FConnections.TryGetValue(Connection, Channel) then

Channel.Close; 

Demo

• Fazer o seguimento de todas as ligaçõesTCP/IP e correspondentes sessões

• Como encerrar manualmente uma ligaçãoTCP/IP a partir do servidor

• Como detectar quando um cliente perdeu a ligação à internet durante a ligação

01/12/2011

19

Mais informações

• Mais informações em portugues sobre as novidades e promoções XE2 http://www.danysoft.com/embarcadero.pt

• Tem uma questão? Contacte com Danysoft http://www.danysoft.com/asp/formulario.php?lang=pt | 707 500260

top related