MAC 312/759 - Sistemas de Objetos Distribuídos

Segundo Semestre de 1997

Prof. Francisco Reverbel

Informações Gerais
Avisos (Leia os que tiverem uma bola vermelha!)
Tópicos Tratados em Aula
Leitura Recomendada
Bibliografia
Recursos Adicionais na Internet

Esta página estará em permanente construção até o final do semestre...


Informações Gerais

Local: IME-USP, bloco B, sala B-6
Horário: quartas das 10:00 às 11:40 e sextas das 8:00 às 9:40
Pasta Xerox CAMAT: número 116
Avaliação: uma prova em classe (dia 15 de outubro), um ou mais trabalhos


Avisos

15/08/97: A leitura recomendada está disponível tanto em formato PostScript (vide ponteiros abaixo) como em papel (no xerox do CAMAT).
29/08/97: Em conformidade com os calendários de graduação e pós-graduação, não haverá aula na semana de 1 a 7 de setembro (Semana da Pátria).
10/09/97: O Orbix 2.2 MT foi instalado na rede do IME, no diretório /usr/local/Orbix_2.2MT. O Programming Guide e o Reference Guide desse ORB estão disponíveis em formato html.
10/09/97: O compilador C++ requerido pelo Orbix estará disponível em breve. Enquanto isso, comece a examinar a documentação do Orbix (Veja a Leitura Recomendada!) e a se familiarizar com os exemplos no diretório de demos, mas não perca seu tempo tentando compilar esses exemplos com o g++!
12/09/97: O C++ e o Orbix estão disponíveis. Para usá-los, voce precisará preparar o seu environment: as instruções estão aqui. Comece o quanto antes!
02/10/97: A página sobre o projeto do curso está aqui.
03/10/97: O OMG publicou recentemente a revisão 2.1 da especificação CORBA. Nesta página foram atualizados os ponteiros que referenciavam a revisão 2.0; eles agora apontam para uma cópia local da especificação CORBA 2.1.
13/10/97: Haverá prova no dia 15 de outubro.
22/12/97: Última atualização desta página. Foram incluídos ponteiros para textos sobre ODBMSs, para um artigo sobre integração ORB/ODBMS e para artigo que compara CORBA e DCOM.


Tópicos Tratados em Aula

Aula 1 (13/08/97): Apresentação. Visão geral da arquitetura do OMG. Introdução a CORBA. Leitura Recomendada.
Aula 2 (15/08/97): IDL, construções IDL, exemplo. A interface do ORB, operações sobre object references. Mapeamento de IDL para C++, exemplo de cliente C++. Transparências.
Aula 3 (20/08/97): Exceções e seu uso em clientes C++. Object references em C++, os tipos _ptr e _var, uso de tipos _var. O lado do servidor: introdução ao Basic Object Adapter (BOA). Figuras.
Aula 4 (22/08/97): O BOA: ativação de implementações e de objetos, políticas de ativação de implementações, interação com o servidor para geração e interpretação de object references, problemas de portabilidade. Implementação de interfaces IDL em C++: heranca e delegação. Transparências.
Aula 5 (27/08/97): Exemplo: servidor C++ simples, baseado no BOA do Orbix e implementado com o uso de herança.
Aula 6 (29/08/97): Exemplo: o mesmo servidor C++, reimplementado com o uso de delegação. Ativaçao de objetos no Orbix: loaders. Transparências.
Aula 7 (10/09/97): Recursos adicionais (não padronizados) do Orbix: filtros, modos secundários de ativação de servidores. Leitura Recomendada.
Aula 8 (12/09/97): O Internet Inter-ORB Protocol (IIOP), comparação com o protocolo nativo do Orbix. Interoperable Object References (IORs) e object references nativas do Orbix. Transparências.
Aula 9 (17/09/97): Implementação de servidores: quando e como usar ativação dinâmica de objetos (loaders do Orbix).
Aula 10 (19/09/97): Receituário operacional (aula prática na sala de terminais X).
Aula 11 (24/09/97): Apresentação do Patient Identification Service (PIDS), por Paulo Roberto de Lima Lopes.
Aula 12 (01/10/97): Discussão sobre o projeto do curso.
Aula 13 (03/10/97): O Portable Object Adapter (POA). Leitura recomendada.
Aula 14 (08/10/97): O Naming Service. Leitura recomendada.
Aula 15 (10/10/97): O Event Service. Leitura recomendada.
Aula 16 (15/10/97): Prova.
Aula 17 (17/10/97): Resolução de dúvidas sobre o projeto do curso.
Aula 18 (22/10/97): O Trading Service.
Aula 19 (29/10/97): O Transaction Service.
Aula 20 (31/10/97): Resolução da prova. Introdução aos Bancos de Dados Orientados a Objetos.
Aula 21 (05/11/97): Bancos de Dados Orientados a Objetos. Leitura: o relatório técnico de Frank Manola.
Aula 22 (07/11/97): Persistência de objetos CORBA: a abordagem do Object Database Adapter. Leitura: meu artigo na COOTS '97.
Aula 23 (12/11/97): Discussão sobre a segunda etapa do projeto. Introdução ao COM.
Aula 24 (14/11/97): COM: a interface IUnknown, criação e inicialização de objetos, reutilização de objetos via delegação e via agregação.
Aula 25 (19/11/97): COM: dispinterfaces, automação, persistência de objetos, monikers.
Aula 26 (26/11/97): Comparação entre CORBA e DCOM, apresentada por Gabriel M. H. Narvaez. Leitura recomendada.
Aula 27 (28/11/97): Apresentação dos projetos.


Leitura Recomendada

Em 13/08/97:

Steve Vinoski, CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments, IEEE Communications Magazine, Vol. 14, No. 2, Feburary, 1997.

Uma visão geral de CORBA e da arquitetura do OMG como um todo. Bom artigo para começar.

Netscape Communications Corp., CORBA: Catching the Next Wave.

"White paper" com a visão da Netscape. Escrito com propósitos promocionais (divulgar a estratégia e os produtos da Netscape), mas interessante mesmo assim. Contém uma breve introdução a CORBA.

CORBA Overview, o capítulo 2 da especificação CORBA 2.1.

A íntegra da especificação CORBA 2.1 (que é longa) encontra-se aqui.

Em 10/09/97:

"Getting Started on Unix", capítulo introdutório do Orbix Programming Guide.

Uma leitura bem rápida.

Capítulos 2 a 4 do Orbix Programming Guide:

Para usar o Orbix, convém ler com atenção. Se preferir, deixe para depois os detalhes do capítulo 3. (Faz mais sentido olhar em detalhe o mapeamento de IDL para C++ quando voce estiver precisando disso.)


Bibliografia

CORBA

As principais especificações do OMG:
  • CORBA 2.1 (787 páginas - ps.gz, pdf);
  • CORBAservices (1076 páginas - ps.gz, pdf);
  • Portable Object Adapter (POA) (276 páginas - ps.gz, pdf);
  • IDL/Java Language Mapping (90 páginas - ps.gz, pdf).

Atenção: esses documentos são longos. Em vez de imprimir tudo, visualize o pdf e selecione o(s) capítulo(s) que voce deseja imprimir.
Manuais de ORBs disponíveis comercialmente:
Jon Siegel, CORBA - Fundamentals and Programming, John Wiley & Sons, 1996, ISBN 0471-12148-7.
Robert Orfali, Dan Harkey e Jeri Edwards, The Essential Disributed Objects Survival Guide, John Wiley & Sons, 1996, ISBN 0-471-12993-3.
Robert Orfali, Dan Harkey e Jeri Edwards, The Essential Client/Server Survival Guide, Second Edition, John Wiley & Sons, 1996, ISBN 0-471-15325-7.
Robert Orfali e Dan Harkey, Client/Server Proramming With Java and CORBA, John Wiley & Sons, 1997, ISBN 0-471-16351-1.
Sean Baker, CORBA Distributed Objects Using Orbix, ACM Press/Addison-Wesley, 1997, ISBN 0-201-92475-7.
Andreas Vogel e Keith Duddy, Java Programming with CORBA, John Wiley & Sons, 1997, ISBN 0-471-17986-8.
Steve Vinoski, CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments, IEEE Communications Magazine, Vol. 14, No. 2, Feburary, 1997.
"Object Interconnections", a coluna de Doug Schmidt e Steve Vinoski no C++ Report:
  1. Introduction to Distributed Object Computing, Vol. 7, No. 1, January 1995.
  2. Modeling Distributed Object Applications, Vol 7. No. 2, February 1995.
  3. Comparing Alternative Client Distributed Programming Techniques, Vol. 7. No. 4, May 1995.
  4. Comparing Alternative Server Distributed Programming Techniques, Vol 7. No 8. October 1995.
  5. Comparing Alternative Programming Techniques for Multi-threaded Servers -- the Thread-per-Request Concurrency Model, Vol 8. No 2. February 1996.
  6. Comparing Alternative Programming Techniques for Multi-threaded Servers -- the Thread-Pool Concurrency Model, Vol 8. No 4. April 1996.
  7. Comparing Alternative Programming Techniques for Multi-threaded Servers -- the Thread-per-Session Concurrency Model, Vol 8. No 7. July 1996.
  8. Distributed Callbacks and Decoupled Communication in CORBA, Vol 8. No 9. October 1996.
  9. OMG Event Object Service, Vol. 9, No 2. February, 1997.
  10. Overcoming Drawbacks with the OMG Events Service, Vol. 9, No 6. June, 1997.
  11. Object Adapters: Concepts and Terminology, Vol. 9, No 11. November/December, 1997.
Jon Siegel, CORBA Fundamentals and Programming - Tutorial Presentation, notas de um tutorial, 1995 (pdf, ps.gz).

C++ Standard Template Library (STL)

Página STL de David Musser.
Silicon Graphics Standard Template Library Programmer's Guide.
Documentação online da implementação de STL que temos no IME, o Standards<ToolKit> da ObjectSpace.
STL Resource List, por Warren Young.

Bancos de Dados Orientados a Objetos e Objeto-Relacionais

Frank Manola, An Evaluation of Object-Oriented DBMS Developments -- 1994 Edition, GTE Laboratories Technical Report TR-0263-08-94-165, August 1994, 261 pages (ps.gz: part 1, part 2).
R. G. G. Cattell and Douglas K. Barry (eds.), The Object Database Standard: ODMG 2.0, Morgan Kaufmann Publishers, 1997, ISBN 1-55860-463-4. Available in ps.gz format: book extract (including Index) and full text of chapters 1 (Overview), 5 (C++ Binding), 6 (Smalltalk Binding), and 7 (Java Binding).
R. G. G. Cattell, Object Data Management: Object-Oriented and Extended Relational Database Systems (Revised Edition), Addison-Wesley, 1994, ISBN 0-201-54748-1.
Mary E. S. Loomis, Object Databases: the Essentials, Addison-Wesley, 1995, ISBN 0-201-56341-X.
Michael Stonebraker with Dorothy Moore, Object-Relational DBMSs: the Next Great Wave, Morgan Kaufmann Publishers, 1996, ISBN 1-55860-397-2.

COM/DCOM

David Chappel, Understanding ActiveX and OLE, Microsoft Press, 1996.
Dale Rogerson, Inside COM, Microsoft Press, 1977, ISBN 1-57231-349-8.


Recursos Adicionais na Internet

Home page do OMG
Página CORBA do Los Alamos National Laboratory
Página CORBA de Doug Schmidt
Lista de discussão sobre CORBA mantida por Gabriel M. H. Narvaez
Arquivo da lista de discussão corba-dev, mantida por Alan Pope


Last modified: Mon Aug 10 11:47:43 EST 1998
Francisco Reverbel
reverbel at ime.usp.br