Com a introdução de classes no ambiente 4D, a necessidade de armazenar os seus dados em objectos, e especialmente em blobs, tem aumentado. É por isso que 4D v19 R2 lhe permite encapsular os blobs em objectos.
Para além do aspecto do armazenamento, uma vez que o objecto blobs é um tipo de referência, o seu desempenho em termos de ocupação de memória e velocidade será grandemente melhorado.
Pode agora atribuir um blob como atributo de um objecto, como faz para números, texto, ou outros tipos:
$o:=New object("blob"; $blob)
ou por conversão implícita:
$o:=New object
$o .blob:=$blob
ou com um objecto partilhado:
$sObj:=New shared object("blob"; $blob)
Em muitos casos, é melhor usar um objecto blob (tipo 4D.Blob) em vez de um tipo Blob. Por exemplo, quando se passa um objecto Blob num método ou num parâmetro de comando, este não é duplicado como um tipo Blob, mas passado por referência, tal como qualquer outro objecto 4D. Isto é mais rápido e consome menos memória:
var $blobObj : Object
// Download your MIME in a blob object
$blobObj :=IMAP_transporter.getMIMEAsBlob ( $msgID )
// The BLOB object is then passed to the AddToArchives method by reference.
AddToArchives (
$blobObj)
// Unlike when you pass a Blob type, the blob is not duplicated when handled using a blob object.
Mas o tipo padrão de Blob não é depreciado. Cada tipo de bolha tem as suas vantagens. Utilize a tabela seguinte para determinar qual deles se adapta às suas necessidades:
Blob | 4D.Blob | |
---|---|---|
Alterável | Sim | Não |
Partilhável em objectos e colecções | Não | Sim |
Aprovado por referência* | Não | Sim |
Desempenho ao aceder aos bytes | + | – |
Tamanho máximo | 2GB* | Memória |
*Este limite de tamanho pode ser inferior dependendo do seu sistema operativo e de quanto espaço está disponível.
Consulte a documentação para saber mais sobre este novo tipo de atributo!
Agora que os blobs são geridos em objectos, há apenas mais um passo para que seja gerido em ORDA. Fique atento!