quinta-feira, 29 de julho de 2010
Busca  
Porta 80 Web Hosting
 :: Acessibilidade
Ir para conteúdo principal: ALT + 1
 :: Participe
Seja um autor de CD/DVD de Treinamento
Publique um artigo
Publique uma oportunidade
Publique uma notícia
Publique um curso
Publique uma dica
Publique um código
 :: Informativo
Receba nossos informativos por e-mail.
E-mail:   
 
Digite a palavra abaixo:  
 
 
 :: Oportunidades
Cadastrar oportunidades
Gerenciar suas oportunidades
Cadastrar nova empresa
 :: Especiais
Básico de C++
C++ Builder
Curso ASP.NET 3.5 em VB.NET e C#
Guia Prático de HTML
Testes com Visual Studio Team System 2008
 :: Desenvolvimento
ActionScript
ADO.NET
ASP
ASP.NET
Automação Comercial
C#
C/C++
Coldfusion
CSS
Delphi
Disp. Móveis
HTML
Java
Javascript
LSL (Second Life)
Modelagem
PHP
Python
Sharepoint
Silverlight
SQL
VBA (Office)
Visual Basic
Visual Basic .NET
Visual Fox Pro
WCF/WPF
Web Services
XML
 :: Infra
BizTalk Server
CRM
Exchange Server
ForeFront / Antigen / IAG
Interoperabilidade
ISA Server
Linux
MOF
MS Dynamics CRM
Network
OCS / LCS
Outlook
Powershell e Scripts
Redes
Segurança
System Center e Gerenciamento
Virtualização
Windows
Windows Server
 :: Banco de Dados
Access
Caché
Firebird
Interbase
MySQL
Oracle
SQL Server
Sybase
 :: Gerência
Arquitetura
Ciclo de Vida de Desenvolvimento
Controle de Versão
Estimativas
Metodologias
MOF
Qualidade e Testes
 :: Design
Corel
Flash
Photopaint
Photoshop
 :: Livros
Análise Sistemas
Aplicativos
Banco de Dados
Certificação
Design e CAD
Gerência
Hardware
Internet
Programação
Programação Web
Rede
Segurança
Servidores
Sistemas Operacionais
 :: CDs/DVDs
Desenvolvimento
Infra
Design
 :: E-Books
.NET 2.0 (VS 2005)
.NET 1.1 (VS 2003)
SQL Server
Excel 2007
Excel 2003
Access 2003
ASP 3.0
Delphi
Java
Artigos
db4o - Banco de Dados Orientado a Objetos - Parte II - Modos de Acesso, Configuração, Performance e Outras Opções
Por: Cassio R. Eskelsen
[Entre em contato com o autor ]
Desenvolvedor C# desde 2001. Atualmente trabalha como desenvolvedor independente de soluções na área de CRM e mantém um site relacionado ao projeto Mono e a Linguagem Boo: http://www.br-mono.org.
Feed de artigos.
Feed de artigos deste autor.
Gere seu feed personalizado  
db4o - Banco de Dados Orientado a Objetos - Parte II - Modos de Acesso, Configuração, Performance e Outras Opções
Publicado em: 07/03/2006

Parte II - Modos de Acesso, Configuração, Performance e Outras Opções

O primeiro artigo da série dessa série teve uma repercussão surpreendente. Imaginava que havia um interesse por tecnologias pós-relacionais, mas não imaginei que o interesse fosse tão grande assim. Em contato com a equipe do db4o  foi me revelado que houve um número alto de visitas a partir do site Linha de Código e que antes desse artigo o Brasil já era o 7º colocado em visitas, dentre os mais de 190 países que já visitaram o site www.db4o.com e com isso, conquistamos um fórum em português no site do db4o.

Nesse segundo artigo vou começar a aprofundar alguns detalhes na utlização do db4o: modos de acesso, configuração, performance, índices, operações em cascata, etc.

Modos de Acesso

O db4o possui 3 modos de acesso: direto, cliente/servidor e cliente/servidor embutido.

Acesso direto

O acesso direto foi o modo utilizado no exemplo do primeiro artigo. Nesse modo acessamos o arquivo com os objetos diretamente, da mesma forma que se faz quando se trabalha com uma "base" Access:

 ObjectContainer _container = Db4o.OpenFile("arquivo.yap");
Conexão direta(C#)  

Esse modo de acesso deve ser utilizado preferencialmente apenas em aplicações desktop standalone, aplicações para dispositivos móveis e aplicações embarcadas. Em aplicações onde há acesso simultâneo de 2 ou mais usuários (aplicações web e c/s) esse tipo de acesso não é recomendado.

Em aplicações standalone você pode abrir um ObjectContainer no início da aplicação e deixá-lo aberto por todo tempo de vida da aplicação. Isso vai facilitar o seu desenvolvimento.

Acesso client/server

Essa é a clássica forma onde há um programa "servidor" e um ou mais programas"clientes" acessando esse servidor.

O db4o permite trabalhar com servidores de uma forma transparente. A classe container é a mesma, mas agora ela é instanciada através de Db4o.OpenClient ao invés de Db4o.OpenFile. Obviamente você precisa criar uma aplicação a mais, que será o seu "servidor".

O programa servidor deverá ter as seguintes linhas de código:

ObjectServer db4oServer = Db4o.OpenServer("arquivo.yap", porta); 
db4oServer.GrantAccess(nomeusuario1,senhausuario1); 
db4oServer.GrantAccess(nomeusuario2, senhausuario2); 
... 
db4oServer.GrantAccess(nomeusuariox,senhausuariox);
            
Servidor db4o(C#)  

Db4o.OpenServer abre um arquivo com objetos e monta o servidor na porta indicada (um número de porta TCP/IP). Não existe um valor padrão para a porta.

db4oServer.GrantAccess define o nome e senha dos usuários que podem acessar esse servidor. Você pode criar um  usuário padrão ou definir um nome e senha para cada usuário.

Do lado cliente, você deverá fazer:

 
ObjectContainer _container = Db4o.OpenClient(host, porta, usuário, senha);
                
Cliente db4o(C#)  

O host pode ser o nome da máquina (se for uma rede local) ou o número do IP do servidor.

Algumas observações sobre o modo cliente/servidor:

  • As operações cliente/servidor são realizadas na forma read commited, ou seja, um container só verá as alterações já "commitadas" por outros. Não é necessário abrir uma transação explicitamente: o db4o sempre mantém uma transação ativa para cada container, no entanto, para confirmar a transação é necessário chamar o método Commit() do container;
  • O servidor deverá ter conhecimento das mesmas classes que o cliente, ou seja, se você tiver um projeto com suas Classes e/ou regras de negócio, você deverá fazer referência a esse projeto em seu projeto de Servidor.
Acesso client/server embutido

O db4o permite que você inicie um servidor no mesmo escopo de sua aplicação, ou seja, ao invés de ter um servidor "externo", você terá um servidor dentro de sua aplicação. Isso é especialmente útil em aplicações WEB, onde você tem várias usuários acessando a mesma aplicação ao mesmo tempo e não tem como iniciar um servidor em separado (afinal, como você faria para iniciar um servidor dentro de uma máquina de um provedor?). Também é interessante usar esse método quando suas aplicações standalone necessitarem abrir vários containers simultâneos.

Para iniciar um servidor embutido, você usuará o mesmo método OpenServer do modo cliente/servidor mas iniciará o servidor na "porta" zero. Não é necessário definir os usuários que podem acessar pois o servidor será visível apenas dentro da sua aplicação. Uma aplicação externa não terá acesso pois o container deverá ser iniciado a partir do ObjectServer criado, dessa forma:

            ObjectServer server = Db4o.OpenServer("arquivo.yap", 0);
            try
            {
                ObjectContainer client = server.OpenClient();
                // operações......
                client.Close();
            }
            finally
            {
                server.Close();
            }
                
Cliente/Servidor embutido  

Fora esses detalhes na conexão, o restante das operações é idêntico ao modo Cliente / Servidor.

Como muitos já devem estar imaginando, o objeto "ObjectServer" deve ser instanciado uma única vez em toda a aplicação. Esse é um caso típico para aplicação do pattern Singleton. Segue abaixo uma sugestão de aplicação do pattern para garantir que você terá sempre apenas um objeto Server:

class Server
{
    private static ObjectServer server;   

    private static object syncLock = new object();

    protected Server()
    {
        server = Db4o.OpenServer("arquivo.yap", 0);
    }

    public static ObjectServer GetServer()
    {
        if (server  == null)
        {
            lock (syncLock)
            {
                if (server  == null)
                {
                    new Server();
                }
            }
        }

        return server;
    }
}                   
Cliente/Servidor embutido  

Para obter uma instância de ObjectContainer, você faria:

ObjectContainer client = Server.GetServer().OpenClient();
                
Usando o singleton  





MS TechEd 2010



 

Inclua um comentário sobre o artigo Topo
Elogios e críticas são muito bem vindos, porém o comentário deve ter referência ao artigo em pauta.
O portal e o autor agradecem.
Nome:    
E-mail:      
Comentários:    
Digite a palavra abaixo:  
Para dúvidas técnicas, NÃO UTILIZE ESTE ESPAÇO, utilize nosso fórum de discussão.
http://linhadecodigo.com.br/cs2/forum
 
Comentários sobre o artigo Ver Todos comentários
Cara, muito obrigado, eu tava perdido porque eu só sabia fazer tcp/ip assíncrono em c++ e achava que o c# teria as mesmas bibliotecas, mas me dei mal. Valeu mesmo.
Quem enviou: João Carlos Cunha
Postado em: 26/9/2007 0:00:00
Sou universitária e além de pesquisar sobre o tema abordado,tive a sensação de dever cumprido.Obrigada e parabéns.
Quem enviou: Pen Lopes Yoon Soo Capuzzo
Postado em: 4/7/2007 0:00:00
Caro colega, gostei muito do seu artigo ele ta bem esclarecedor, porem estou com umas duvidas, estou usando a tecnologia Java, Toda vez que eu insiro um elemento no BD eu abro e fecho o banco ObjectContainer db = Db4o.openFile(DB_FILE_NAME);
... cd.close(); tudo ocorre bem mais quando vou fazer uma consulta eu abro BD, consulto mais quando eu vou fechar e da um erro ''ourgridMetics.yap'' is closed. close() was called or open() failed. Porque esta dando esse erro? O que eu faço? Grato.
Quem enviou: Celso
Postado em: 13/6/2006 0:00:00
Caro colega, gostei muito do seu artigo ele ta bem esclarecedor, porem estou com umas duvidas, estou usando a tecnologia Java, Toda vez que eu insiro um elemento no BD eu abro e fecho o banco ObjectContainer db = Db4o.openFile(DB_FILE_NAME);
... cd.close(); tudo ocorre bem mais quando vou fazer uma consulta eu abro BD, consulto mais quando eu vou fechar e da um erro ''ourgridMetics.yap'' is closed. close() was called or open() failed. Porque esta dando esse erro? O que eu faço? Grato.
Quem enviou: Celso
Postado em: 12/6/2006 0:00:00
Outros artigos do autor Topo
db4o - Banco de Dados Orientado a Objetos
Listando arquivos de um diretório para download em ASP.NET
Artigos relacionados Topo
Acesso a Dados com ASP.NET - Parte 4
Acesso a Dados com ASP.NET - Parte 3
Acesso a Dados com ASP.NET - Parte 2
Acesso a Dados com ASP.NET - Parte 1
Usando DataSet Tipado com ASP.NET
Gerenciador de conteúdo ASP.NET MVC 2 - Kooboo
Criando um Leitor de Arquivos em ASP.NET
Criando um Leitor de RSS em ASP.NET
Trabalhando com Update Panel no ASP.NET
Como fazer Deploy no ASP.NET 4?
Utilizando jQuery para invocar Actions
Enviando Emails com ASP.NET usando System.Net.Mail
Criando editor de texto personalizado em Asp.Net
JQuery auto complete em Asp.Net
Autenticação via Claims no ASP.NET MVC
Detectando erro a todo custo
Explorando os módulos do WIF para o ASP.NET
Autenticação via Claims no ASP.NET WebForms
Uma nova forma de Autenticação/Autorização
Autenticação e Autorização no ASP.NET MVC
Explorando Segurança do ASP.NET - Roles
Explorando Segurança do ASP.NET - Membership e MembershipUser
Programação Assíncrona no ASP.NET MVC
Compactação de ViewState em ASP.NET
Criando e utilizando User Controls no Silverlight
Gerando JavaScript do lado do servidor com ASP.NET
Introdução às Dependency Properties
Efeitos de imagem com ASP.NET e LightBox 2
Marca d´agua em imagens usando System.Drawing
Asp.Net + Twitter sem API de terceiros
Produtos relacionados Topo
Pacote: Promoção C# Básico (válido somente para pagamento via boleto bancário)
CD/DVD: CD de Treinamento Criando Aplicações Asp.Net em Camadas (parte integrante do portal de vídeos .Net)
Pacote: Promoção: Portal de Vídeos .Net + CD Novidades das Linguagens (válido somente para pagamento via boleto bancário)
Pacote: Promoção Linq To SQL (válido somente para pagamento via boleto bancário)
Pacote: Promoção ASP.Net com Banco de Dados (válido somente para pagamento via boleto bancário)
Pacote: Promoção Linq + Asp.Net
CD/DVD: DVD de Treinamento E-Commerce com Visual Web Developer
CD/DVD: CD de Treinamento - Office SharePoint 2007 para Desenvolvedores WEB
CD/DVD: DVD de Treinamento - Crie uma aplicação ASP.NET com LINQ TO SQL
Livro: Desenvolvendo para web usando o Visual Studio 2008
CD/DVD: DVD de Treinamento Explorando o LINQ para SQL
Pacote: Pacote: Desenvolvedor Web Kit III (4 CDs)
Pacote: Pacote: Desenvolvedor Web Kit II (3 CDs)
Pacote: Pacote: Desenvolvedor Web Kit I (2 CDs)
CD/DVD: CD de Treinamento - RAD Studio 2007 e ASP.NET 2.0 (Delphi)
Pacote: Pacote ASP.NET - 4 CDs (Implementando AJAX em páginas ASP.NET 3.5 com o Visual Studio .NET 2008 + ASP.NET 2.0 Básico + Um mergulho no Controle GridView do ASP.NET 2.0 + Explorando as novidades)
CD/DVD: CD de Treinamento – Implementando AJAX em páginas ASP.NET 3.5 com o Visual Studio .NET 2008
CD/DVD: CD de Treinamento ASP.NET para Iniciantes - Visual Studio 2008
CD/DVD: CD de Treinamento sobre ASP.NET 2.0 Básico
CD/DVD: CD de treinamento: Um mergulho no Controle GridView do ASP.NET 2.0
E-Book: ASP.NET Ajax com C# e VB.NET (E-Book com entrega via download)
CD/DVD: CD de Treinamento sobre LINQ to SQL para iniciantes com Visual Studio .Net 2008
CD/DVD: CD de Treinamento Introdução a banco de dados com SQL Server 2005 Express
CD/DVD: CD de Treinamento Novidades das Linguagens C# 3.0 e VB 9 (Visual Basic 9)
CD/DVD: CD ASP.NET 2.0 - Atualização Rápida (Visual Studio .NET 2005)
CD/DVD: CD - Treinamento de ASP.NET 2.0 AJAX Extensions
CD/DVD: CD de Treinamento de ASP.NET 2.0 - Explorando as novidades
Livro: ASP.NET para desenvolvedores de web sites
Livro: ASP.NET Utilizando C# - De Programador para Programador
E-Book: E-Book: Tutorial de GridView no ASP.NET 2.0 (via download)
Livro: Guia Prático no Mundo Real SharePoint® 2007
© Copyright 2001-2010 Codeline Editora, Comércio e Tecnologia Ltda. | Política de privacidade e de uso | Anuncie | Fale conosco

» Site hospedado na Porta 80 Web Hosting «
Nossos números
Dicas: 1.314
Códigos/scripts: 279
Funções de VBScript : 90
Funções JScript : 05
Livros: 1.805
Notícias: 2.488
Artigos: 2.972
Cases: 14
Oportunidades: 4.546
Publicidade

Conheça a loja do Linha de Código.

Microsoft indica Linha de Código.

Assine a Revista Mundo .NET
Portal de Vídeos .NET - os melhores vídeos .NET estão aqui
O que você fará com o Visual Studio 2010?
Revista Codificando .Net

Siga-nos no Twitter

Linha de Código no Orkut
Fórum de discussão do portal Linha de Código
Feeds
Oportunidades
Notícias
Artigos
Artigos personalizado
       (Por assunto)
Artigos personalizado
       (Por autor)
Portal Vídeos .NET
Portal Vídeos Delphi
LC Blog
       (Onde você faz a notícia)
Promoções
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
Promoção Mobile com entrega via download (válido somente para pagamento via boleto bancário)
De: R$ 189,00
Por: R$ 126,00
Promoção Wordpress + Tabless (válido somente para pagamento via boleto bancário)
De: R$ 149,70
Por: R$ 99,80
Promoção C# Básico (válido somente para pagamento via boleto bancário)
De: R$ 185,90
Por: R$ 136,00
Promoção PHP + MYSQL Intelimax (válido somente para pagamento via boleto bancário)
De: R$ 308,00
Por: R$ 219,00
Promoção Especial Infra
De: R$ 175,95
Por: R$ 136,00
CDs/DVDs
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
Por: R$ 59,00
DVD Curso de CorelDraw X4
Por: R$ 79,90
DVD Curso de Fireworks CS4
Por: R$ 49,90
DVD Curso de Indesign CS4
Por: R$ 55,00
DVD Curso de Efeitos Digitais
Por: R$ 49,90
Livros
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
De: R$ 129,00
Por: R$ 77,40
Foundation FLASH CS3 para Designers
Ciência Moderna
De: R$ 139,00
Por: R$ 83,40
Recursos Visuais na Web com PHP
Ciência Moderna
De: R$ 49,00
Por: R$ 29,40
Crie um Sistema Web com PHP 5 e AJAX - Controle de Estoque
Erica
De: R$ 99,50
Por: R$ 84,50
Crie Projetos Gráficos com Adobe Photoshop CS4, CorelDRAW X4 e Adobe InDesign CS4 - em Português
Erica
De: R$ 77,50
Por: R$ 65,80
E-Books
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Por: R$ 30,00
Manual de Estudos - Exame 70-291 - Windows Server 2003 (606 páginas) - entrega via download
Por: R$ 30,00
Dominando MS – Visio ® em 20 Passos - Melhores Práticas em Gestão de Projetos (entrega via download)
Por: R$ 30,00
MS-Project® 2007 - Melhores Práticas de Gestão de Projetos - Dominando MS – Project ® em 20 Passos (e-book com entrega via download)
Por: R$ 20,00
Banco de dados com C# e Visual Studio .Net 2005 (entrega via download)
Por: R$ 20,00
Os 10+ | Autores do dia
Israel Aéce
Júlio Cesar Fabris Battisti
Anderson Patricio
Alfred Reinold Baudisch
Luiz Felipe de Freitas
Robert Martim
Ramon Durães
Alessandro de Oliveira Faria
José Carlos Macoratti
Eric C M Oliveira
Os 10+ | Artigos do dia
HTML Básico
HTML Avançado
Criando aplicativos para o Orkut
Tutorial de Tabelas Dinâmicas no Excel – Parte 1
Excel: fórmulas matriciais
ASP.NET 2.0 - Explorando o GridView
Iniciando um projeto de Nota Fiscal Eletrônica - NFe
PL/SQL - Procedures e Funções
Excel: Comparando Listas
PHP: Formulários e upload de múltiplos arquivos e fotos