home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / lang / cplus / 16484 < prev    next >
Encoding:
Text File  |  1992-11-17  |  27.0 KB  |  686 lines

  1. Newsgroups: comp.lang.c++
  2. Path: sparky!uunet!charon.amdahl.com!pacbell.com!ames!saimiri.primate.wisc.edu!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!att!att!dptg!ucs!skdutta
  3. From: skdutta@ucs.att.com (Saumen Dutta)
  4. Subject: C++ Product List - Version 2.04 - Part 6/8
  5. Message-ID: <1992Nov18.022923.717@ucs.att.com>
  6. Organization: AT&T Universal Card Services, Jacksonville FL
  7. Date: Wed, 18 Nov 1992 02:29:23 GMT
  8. Lines: 676
  9.  
  10. 3.9.  Zinc
  11. _ _   ____
  12.  
  13. +    Platform: DOS
  14.  
  15. +    This was the most commonly mentioned library  for  DOS.
  16.      It  was  generally  praised.  Several  people noted the
  17.      documentation could be more helpful but the  tech  sup-
  18.      port  phone  people seemed to make up for that failing.
  19.      One respondent noted his release didn't handle variable
  20.      fonts  but  said  that  may  be  fixed  in  the current
  21.      release. The  only  respondant  to  explicitly  mention
  22.      using  Zinc  in  graphics  mode  found  it "intolerably
  23.      slow."
  24.  
  25. +    Information provided by bennett@math.ksu.edu
  26.  
  27. 3.9.1.  Netcomments
  28. _ _ _   ___________
  29.  
  30.       From abw@dsbc.icl.co.uk (Andy Wardley)
  31.  
  32.         POINTS FOR....
  33.  
  34.          The Zinc  Interface  Library  "...gives  a  fast  nice  GUI,  that
  35.          somewhat  reminds me of windows.", "the library is well-designed."
  36.          and "you can get it to do most things and its Windows capabilities
  37.          are at last getting into shape."
  38.  
  39.          "I  will  also  add  that I'm very impressed with the company.  My
  40.          friend who has it told me he got an update  in  the  mail  without
  41.          even  asking  and  he  was  offered a Windows version (beta?) from
  42.          their BBS for free.  Very impressive for a software company."
  43.  
  44.          "For DOS I've heard it's very good but their  Windows  version  is
  45.          buggy,  but  I  think  they're  coming  out  with  a much-improved
  46.          version"
  47.  
  48.          "See a recent c.l.c++ summary of PC GUI libs -- it did well."
  49.  
  50.         "We are developing DOS applications using Zinc (with Borland BC++)
  51.          and are reasonably well-satisfied with it.  Our application is not
  52.          pushing Zinc very hard, however.  We  are  using  it  in  graphics
  53.          mode,  although  we are mostly putting text objects & menus on the
  54.          screen."
  55.  
  56.          "They provide much sample code & studying it is essential."
  57.  
  58.          "Tech support is free & good; they have a BBS."
  59.  
  60.          "But as a UI library it is really great. They have  just  released
  61.          version 2.01 with a lot of bug fixes this means it is pretty solid
  62.          now."
  63.  
  64.          "The design tool  saves  a  lot  of  time.  The  documentation  is
  65.          extensive and good. There is a lot of good example code too."
  66.  
  67.          POINTS AGAINST...
  68.  
  69.          "The  Zinc  designer  has lots of bugs and quirks, but you can get
  70.          around them"
  71.  
  72.          "Some things could have been better done,  and  is  surely  better
  73.          implemented in the OS of the Macintosh."
  74.  
  75.          "For  top-professional  use  there  are  some limitations. We even
  76.          considered returning the package. But if you can  live  without  a
  77.          100% product, but rather a late beta, then this is for you."
  78.  
  79.          "It  took  me  a  while to get into their approach, partly because
  80.          their documentation goes  into  detail  but  seems  to  leave  out
  81.          overviews."
  82.  
  83.          "The  library  is  somewhat  lower  level  than I would like.  For
  84.          example, check boxes and dialog boxes are not built-in,  but  they
  85.          provide examples to show you how to build them."
  86.  
  87.          "They do not currently support variable fonts, although their tech
  88.          support told me it is planned for a future release."
  89.  
  90.          "Incidentally, applications seem to be pretty large with it."
  91.  
  92.          "The major problem I have with it is I wish it worked with  a  DOS
  93.          extender under Zortech"
  94.  
  95.          OTHER POINTS...
  96.  
  97.          "If  you  can't  find  what you need in the docs, then look in the
  98.          sources"
  99.  
  100.          "Rumours says that they are working on Macintosh,  OS/2  and  UNIX
  101.          version  too.  Apple  programmers has seen an early version of the
  102.          mac version."
  103.  
  104.          REVIEWS IN...
  105.  
  106.             Dr. Dobb's (12/90),
  107.             Computer Language (12/90)
  108.             PC Week (12/26?/91).
  109.             Byte (01/91)
  110.  
  111.          SUMMARY...
  112.  
  113.          It seems that generally, people are happy with it and think it's a
  114.          good  UI  library.   The  older  version  (pre V2.01) was slightly
  115.          buggy, particularly in the designer and the MS windows parts,  but
  116.          this  has  mostly  been fixed in V2.01.  Most of the bugs had work
  117.          arounds.
  118.  
  119.          The library is fast and flexible, although  radio  buttons,  check
  120.          boxes  etc,  are  not built in classes and have to be derived from
  121.          existing classes - fairly easy for the more advanced programmer  -
  122.          maybe slightly difficult for others..
  123.  
  124.          Documentation,  was  reasonable  in  the older versions and is now
  125.          greatly improved in the new one, with over 1100 pages.   Technical
  126.          support from the company was generally regarded as VERY good.
  127.  
  128.          Thanks to people who contributed...
  129.  
  130.             pope@daimi.aau.dk (Povl H. Pedersen)
  131.             jamshid@emx.utexas.edu (Jamish Afshar)
  132.             ferdie@coyote.datalog.com (fred jarvis)
  133.             borkoles@dcs.qmw.ac.uk
  134.             ajb@ee.wpi.edu (Arthur J Butler)
  135.  
  136. 3.10.  Starview C++ Graphical User Interface Library
  137. _ __   ________ _   _________ ____ _________ _______
  138.  
  139. +    Designed to be independent of OS and Hardware vendors
  140.  
  141. +    Author:     Andreas Meyer, STAR DIVISION
  142.  
  143.      Contact:
  144.  
  145.      STAR DIVISION GmbH
  146.      Andreas Junge
  147.      Zum Elfenbruch 5-11
  148.      D-2120 Lueneburg
  149.      Phone: ++49 4131 700943
  150.      Fax:   ++49 4131 700921
  151.      Email: ...!unido!starlab!aj
  152.  
  153. +    The development of  large  applications  for  Graphical
  154.      User  Interfaces  (GUI's) like MS-WINDOWS, MS Presenta-
  155.      tion Manager or OSF/Motif is a very time consuming job.
  156.      In  addition,  the  application  programming interfaces
  157.      (API's) of the different GUI's are totally incompatible
  158.      making  a  direct  port  of  source code to another GUI
  159.      platform impossible, almost all code driving the user's
  160.      interface must be re-written by the programmer.
  161.  
  162.      Two years ago, STAR DIVISION decided to develop  a  set
  163.      of  new applications for GUI's which should fulfill the
  164.      requirements of modern software standards this entails:
  165.  
  166.      -    Portability between the operating systems  MS-DOS,
  167.           OS/2, Macintosh and different UNIX flavours
  168.  
  169.      -    At least portable between  the  GUI's  MS-WINDOWS,
  170.           MS-Presentation Manager, MacApp and OSF/Motif
  171.  
  172.      -    Fulfillment of the requirements of  the  different
  173.           GUI Style Guide's
  174.  
  175.      -    Data exchange and direct communication between the
  176.           applications in homogeneous and heterogeneous net-
  177.           works (groupware approach)
  178.  
  179.      Because of the indifferent "political" situation  (i.e.
  180.      MS-DOS  or OS/2 or UNIX or everything, WINDOWS or PM or
  181.      X.11 or everything) we decided  to  develop  a  set  of
  182.      tools  which helps us to be mostly independent from the
  183.      decisions of the OS and hardware vendors.  In  addition
  184.      tools help to improve productivity and are the base for
  185.      a successful software project.  C++ is the  programming
  186.      language  of  our choice because we could use our large
  187.      experiences in C programming and C++ provides all major
  188.      advantages of Object Oriented Programming (OOP) that is
  189.      - from our point of view - the best available  paradigm
  190.  
  191.      for complex software development today.
  192.  
  193. +    Information provided by Dave Riches (dsr@bnr.co.uk)
  194.  
  195. 3.11.  TEGL Library
  196. _ __   ____ _______
  197.  
  198. +    Supported on Borland C++
  199.  
  200. +    Address not known
  201.  
  202. +    Price around $99
  203.  
  204. +    One respondant faulted  it  for  "ignoring  CUA"  while
  205.      another  praised  it  as  having  the  look and feel of
  206.      presentation manager. The source code apparently is not
  207.      highly  polished  and it does recommend using more than
  208.      one mouse button.
  209.  
  210. +    Information   provided    by    Andrew    G.    Bennett
  211.      (bennett@math.ksu.edu)
  212.  
  213. 3.12.  Linpack Math Library
  214. _ __   _______ ____ _______
  215.  
  216. +    MSDOS, UNIX, and many other platforms including a  vec-
  217.      torised version of CRAY
  218.  
  219. +    Commercial software from:
  220.      Rogue Wave Software Inc.
  221.      1325 NW 9th Street,
  222.      Corvallis, OR, 97330,
  223.      (503) 754-2311.
  224.  
  225. +    No information on the compatability with  the  proposed
  226.      ANSI/ISO standard
  227.  
  228. +    The classes are available now.  Prices range from  $199
  229.      to   $995   for   Matrix.h++  and  $299  to  $1195  for
  230.      Linpack.h++.
  231.  
  232. +    Linpack.h++ is an object-oriented C++  version  of  the
  233.      widely used Fortran library.  Linpack.h++ includes 100%
  234.      of the functionality of the Fortran version, plus  much
  235.      more.   Because  Linpack.h++  is  written in C++ it has
  236.      capabilities that far exceed the Fortran version.
  237.  
  238.      Both Matrix.h++ and Linpack.h++ are completely compati-
  239.      ble  with  Rogue  Wave's  other  C++  class  libraries,
  240.      Tools.h++ and Math.h++, which are accepted standards in
  241.      the industry.
  242.  
  243.      Matrix.h++ includes all the funtionality  of  Math.h++.
  244.      For  example:  general  matrices,  vectors, statistics,
  245.      complex numbers, Fast  Forier  Transformation  (FFT's),
  246.      etc.   Matrix.h++  adds specialized matrix classes such
  247.      as  banded,  symmetric,  positive-definite,  Hermitian,
  248.      tridiagonal,    etc.    Because   Matrix.h++   includes
  249.      Math.h++, it can take advantage  of  Math.h++'s  highly
  250.      optimized  low-level  assembly routines, making it fast
  251.      as well as graceful.
  252.  
  253. +    Information provided by Dave Riches (dsr@bnr.co.uk)
  254.  
  255. 3.13.  Objectkit\C++ 1.0
  256. _ __   ___________   _ _
  257.  
  258. +    Commercial software available from:
  259.  
  260.      ParcPlace Systems, Inc.
  261.      999 E. Arques Ave.
  262.      Sunnyvale, CA 94086
  263.      Tel: (408)481-9090
  264.      Sales: 1-800-759-7272
  265.      email: info@parcplace.com
  266.  
  267. +    Features the AT&T Standard Library Extensions:
  268.  
  269.      -    variable length bit strings
  270.  
  271.      -    adjustable  1-d  vectors  of  parameterized   type
  272.           (implemented via macros)
  273.  
  274.      -    classes for date, time-of-day, timezone and  time-
  275.           duration arithmetic
  276.  
  277.      -    finite state machine classes
  278.  
  279.      -    simple exception handling using Objection classes
  280.  
  281.      -    parameterized linked lists  (parameterization  via
  282.           macros)
  283.  
  284.      -    associative arrays (i.e., keys/value associations)
  285.  
  286.      -    fast memory allocation class: Pool
  287.  
  288.      -    program   execution   time   measurement    class:
  289.           Stopwatch
  290.  
  291.      -    String class and specializations of  iostream  and
  292.           streambuf for String
  293.  
  294.      As a convenience for purchasers, Objectkit\C++ 1.0 also
  295.      includes  the  NIHCL  and InterViews class libraries as
  296.      *unsupported* free software.
  297.  
  298.      Objectkit\C++ OI - based on  technology  licensed  from
  299.      Solbourne, OI is a C++ class library for rapid develop-
  300.      ment of graphical user-interfaces  that  allow  runtime
  301.      selection of OSF/Motif or OPENlOOK look-and-feel.
  302.  
  303. +    Information provided by Mike Khaw (khaw@parcplace.com)
  304.  
  305. 3.14.  MFC (Microsoft Foundation Class Library)
  306. _ __   ___  _________ __________ _____ _______
  307.  
  308. +    Included with the MS C7 compiler. Please refer  to  the
  309.      Microsoft Compiler section.
  310.  
  311. +    Includes complete source.  Supports all standard memory
  312.  
  313.      models.
  314.  
  315.      Supports  DLLs  [dynamic  link  libaries   aka   shared
  316.      Libraries].
  317.  
  318.      Also  sometimes  referred  to   as   AFX   "Application
  319.      FrameworX", and/or "The C++ API for Microsoft Windows"
  320.  
  321. +    Information provided by: jimad@microsoft.com
  322.  
  323. 3.14.1.  Introduction
  324. _ __ _   ____________
  325.  
  326.      MFC's primary design goals are to provide an efficient,
  327. compact,  fast,  easy-to-use, typesafe, and portable version
  328. of the Windows API for the C++ programmer.  A secondary goal
  329. is  to provide Collection classes, diagnostic memory manage-
  330. ment, etc, for DOS and Windows programmers.  MFC  is  imple-
  331. mented  without the use of language-extensions, allowing the
  332. library to be  ported  to  other  C++  conformant  compilers
  333. [although  right  now  MFC is only shipping with the C7 com-
  334. piler.]  MFC closely follows the naming conventions and  use
  335. of  the  "C"  Windows API so that programmers experienced in
  336. Windows programming find it easy to switch from C to the C++
  337. APIs.  However the "lower level" aspects of Windows program-
  338. ming are improved upon by MFC.  For example  wparam,  lparam
  339. packing/unpacking  is  handled  automatically  and in a type
  340. safe manner.  Also the main message loop is handled automat-
  341. ically.  Switch statements are replaced with the use of vir-
  342. tual functions and/or cached  message  dispatch  that  avoid
  343. slow message searches.  Finally, the C++ Windows classes are
  344. implemented in such a manner as to  remain  compatible  with
  345. the   C  implementations,  such that Windows programmers can
  346. still use the C APIs  where  desired,  and/or  can  mix  old
  347. implementations  of  Windows classes implemented in "C" with
  348. new Windows classes written  in  C++.  Namespace  collisions
  349. with  other  libraries are avoided by using an uppercase "C"
  350. prefix on the MFC Windows classes.  MFC includes support for
  351. OLE, DDE, Multimedia, and Windows for Pen Computing.  Appli-
  352. cations written using MFC are automatically pen aware.
  353.  
  354. 3.14.2.  Window Application Classes
  355. _ __ _   ______ ___________ _______
  356.  
  357.           CWinApp   Main windows application class
  358.  
  359.           Window Classes
  360.  
  361.           CWnd           Base class for all windows
  362.           CFrameWnd      Main window base class for the SDI (Single Document
  363.                            Interface) desktop window
  364.           CMDIFrameWnd   Base class for the MDI (Multiple Document Interface)
  365.                            desktop window
  366.           CMDIChildWnd   Base class for MDI child windows
  367.           CDialog        Base class for modeless dialog windows
  368.           CModalDialog   Base class for modal dialog windows
  369.           CButton        Button control windows
  370.           CComboBox      Combo box control windows
  371.           CEdit          Edit control windows
  372.           CListBox       List box control windows
  373.           CScrollBar     Scroll bar control windows
  374.           CStatic        Static control windows
  375.  
  376.           GDI (Graphical Device Interface) Classes
  377.  
  378.           CDC           Base class for display contexts
  379.           CClientDC     Display contexts for client areas of windows
  380.           CMetaFileDC   Metafile device contexts
  381.           CPaintDC      Display contexts used in <OnPaint> member functions
  382.           CWindowDC     Display contexts for entire windows
  383.           CGdiObject    Base class for GDI drawing tools
  384.           CBitmap       GDI physical bitmaps
  385.           CBrush        GDI physical brushes
  386.           CFont         GDI physical fonts
  387.           CPalette      GDI physical palettes
  388.           CPen          GDI physical pens
  389.           CRgn          GDI physical regions
  390.  
  391.           Other Windows Classes
  392.  
  393.           CMenu    Menu structures
  394.           CPoint   (X, Y) points in a device context
  395.           CSize    Relative positions or coordinate pairs
  396.           CRect    Rectangular regions in a device context
  397.           OLE (Object Linking and Embedding) Classes
  398.           OLE Classes   Object Linking and Embedding Classes
  399.  
  400.           Run-Time Object Model Class
  401.  
  402.           CObject   Root class in the Foundation class hierarchy
  403.  
  404.           File Classes
  405.  
  406.           CFile        Binary disk files
  407.           CMemFile     In-memory files
  408.           CStdioFile   Buffered stream disk files, usually text mode
  409.  
  410.           Object Input/Output
  411.  
  412.           CArchive       Persistent storage for objects
  413.           CDumpContext   Destinations for diagnostic output
  414.  
  415.           Exceptions
  416.  
  417.           CException               Abstract base class for exceptions
  418.           CArchiveException        Archive-specific exceptions
  419.           CFileException           File-specific exceptions
  420.           CMemoryException         Out of memory exceptions
  421.           CNotSupportedException   Function not supported exceptions
  422.           CResourceException       Windows resource not found exceptions
  423.  
  424.           Collections
  425.  
  426.           CByteArray           Arrays of bytes
  427.           CDWordArray          Arrays of 32-bit double-words
  428.           CObArray             Arrays of CObject pointers
  429.           CPtrArray            Arrays of void pointers
  430.           CStringArray         Arrays of strings
  431.           CWordArray           Arrays of 16-bit words
  432.           <template array class>
  433.  
  434.           CObList              Lists of CObject pointers
  435.           CPtrList             Lists of void pointers
  436.           CStringList          List of strings
  437.           <template list class>
  438.  
  439.           CMapPtrToWord        Mappings of void pointers to 16-bit words
  440.           CMapPtrToPtr         Mappings of void pointers to void pointers
  441.           CMapStringToOb       Mappings of strings to CObject pointers
  442.           CMapStringToPtr      Mappings of void pointers to CObject pointers
  443.           CMapStringToString   Mappings of strings to strings
  444.           CMapWordToOb         Mappings of 16-bit words to CObject pointers
  445.           CMapWordToPtr        Mappings of 16-bit words to void pointers
  446.           <template map class>
  447.  
  448.           Miscellaneous Support Classes
  449.  
  450.           CString     Character strings
  451.           CTime       Absolute time and date values
  452.           CTimeSpan   Relative time and date values
  453.  
  454.           Global Functionality
  455.  
  456.           Diagnostic Services               Global memory diagnostic functions
  457.                                               and macros (Debug only)
  458.           Exception Processing              Global exception throwing and
  459.                                               catching functions and macros
  460.           Message-Map Reference             CWnd message map entries
  461.                                               with message-handler function
  462.                                               prototypes
  463.  
  464. 3.15.  NetClasses
  465. _ __   __________
  466.  
  467. +    Commercial software available from:
  468.  
  469.      PostModern Computing Technologies, Inc.
  470.      1032 Elwell Court, Suite 240
  471.      Palo Alto, California 94303
  472.      Telephone: (415) 967-6169
  473.      Facsimile: (415) 967-6212
  474.      Email: plambeck@cs.stanford.edu
  475.  
  476. +    No information on compatability of the future  ANSI/ISO
  477.      standard.
  478.  
  479. +    NetClasses is a set of C++ class libraries for  distri-
  480.      buted  object-oriented  communications  that will begin
  481.      beta testing June 15 and is  scheduled  for  production
  482.      release in the 3rd quarter of 1992.
  483.  
  484. +    Information   provided    by    Thane    E.    Plambeck
  485.      <plambeck@cs.stanford.edu>
  486.  
  487. 3.15.1.  Introduction
  488. _ __ _   ____________
  489.  
  490.      One of the major stumbling  blocks  of  developing  and
  491. fielding  complex distributed applications is the difficulty
  492. in implementing and debugging using  existing  communication
  493. tools.  The focus of the NetClasses architecture has been to
  494. provide the tools necessary for programmers to develop  com-
  495. plex  distributed  applications  without having to deal with
  496. the esoteric details of low-level communications.
  497.  
  498. NetClasses is a set of C++ class libraries that is organized
  499. as  a  software toolkit.  The typical user of the NetClasses
  500. libraries  will  be  a   distributed   systems   application
  501. developer who requires an object-oriented framework for dis-
  502. tributed, message-passing based programming.  By linking the
  503. appropriate  NetClasses  libraries,  application programmers
  504. are then able to:
  505.  
  506. +    Transport objects over a network.
  507.  
  508.      Currently, there are three object varieties that  NetC-
  509.      lasses can transport:
  510.  
  511.      1.   Arbitrary   C++   objects---once   derived    from
  512.           PostModern's TransObject class
  513.  
  514.      2.   arbitrary  NIH-derived  objects;  and  provide  an
  515.           object-oriented data transport in which the struc-
  516.           ture and  organization  of  network  transportable
  517.           objects  is  specified  externally in configurable
  518.           files  using  a   simple,   programming   language
  519.           independent  abstract  syntax  notation, the NetC-
  520.           lasses Abstract Syntax Notation (NASN).
  521.  
  522. +    Perform remote method invocations (RMI)
  523.  
  524.      Using RMI, an application on machine  B  can  invoke  a
  525.      method on machine A. RMI insulates distributed applica-
  526.      tions from  the  complexity  inherent  in  traditional,
  527.      RPC-based distributed systems development tools such as
  528.      protocol compilers, TCP/IP code writing,  and  detailed
  529.      socket handling.  RMI makes fault tolerance and connec-
  530.      tion management transparent to the application program-
  531.      mer.   The RMI layer is built on top of the distributed
  532.      services package that is described below.
  533.  
  534. +    Build complex information distribution systems  on  top
  535.      of   Distributed   Services,   PostModern   Computing's
  536.      object-oriented approach  to  client-server  connection
  537.      management and fault tolerance.
  538.  
  539. +    Use the NetClasses application programmer interface  in
  540.      order  to create, manipulate, and destroy typed objects
  541.      given NetClasses Typed Object  data  type  definitions.
  542.      (NIH-derived  and native C++ objects are created, mani-
  543.      pulated and destroyed from C++ itself).
  544.  
  545. +    Read and  write  all  three  varieties  of  NetClasses-
  546.      transportable   objects   on   streams  using  machine-
  547.      independent  external   representations.    All   three
  548.      varieties  of  objects  can  be stored to and read from
  549.      files.
  550.  
  551. 3.15.2.  Objects as transportable data
  552. _ __ _   _______ __ _____________ ____
  553.  
  554.      One of the most common needs  in  distributed  applica-
  555. tions development is the ability to ship objects over a net-
  556. work.  Currently, when data has to move from one machine  to
  557. another  this  is  usually  done using hard-coded structures
  558. over a low-level communications interface such  as  Berkeley
  559. sockets  or  the System V Transport Layer Interface.  Moving
  560. data in this way has several disadvantages:
  561.  
  562. +    If the format of the data changes,  e.g.  a  new  field
  563.      must  be  added to a structure, all programs using that
  564.      structure must be recompiled, whether or not they actu-
  565.      ally make use of this new field.
  566.  
  567. +    Developing programs using low-level interfaces  require
  568.      programmers  to concentrate on details such as sockaddr
  569.      structs, byte ordering routines  such  as  htonl,  port
  570.      numbers,   and  so  on.  These  are  details  that  are
  571.      irrelevant to most applications and simply stand in the
  572.      way of efficient distributed application programming.
  573.  
  574. +    Because of the low-level nature of the interfaces,  the
  575.      resulting  distributed  programs are generally not very
  576.      scalable.  In order for distributed programs  to  scale
  577.      up  to  large  size  implementations it is necessary to
  578.      provide an infrastructure whereby  data  and  processes
  579.      can be managed efficiently as the number of machines on
  580.      the network grows.  This has proven to be  very  diffi-
  581.      cult using low-level interface tools.
  582.  
  583.      Engineers developing distributed systems using  object-
  584. oriented methodologies place great emphasis on data encapsu-
  585. lation and clean interfaces.  One of the goals of NetClasses
  586. has  been  to preserve these properties in the communication
  587. interfaces.
  588.  
  589. Therefore, instead of shipping byte buffers  over  the  net-
  590. work, NetClasses allows applications to ship objects.  In an
  591. object-oriented program virtually all information is  stored
  592. in objects, making objects the most natural form in which to
  593. transfer information over a network.
  594.  
  595. 3.15.3.  Varieties of object transport
  596. _ __ _   _________ __ ______ _________
  597.  
  598.      PostModern Computing's NetClasses  package  provides  a
  599. set of flexible C++ tools for object transport.
  600.  
  601. The NetClasses NIH-based and Typed  Object-based  transports
  602. are  built  on  top  of the National Institutes Health (NIH)
  603. class library.  However, the NetClasses Typed Object  appli-
  604. cation  programmer  interface is not NIH-dependent.  In par-
  605. ticular, the Typed Object interface does not in any way con-
  606. strain  C++ developers who prefer not to use the NIH library
  607. themselves.
  608.  
  609. The TransObject transport offers  C++  programmers  a  third
  610. facility  for object transport that is entirely NIH indepen-
  611. dent.  The TransObject class library offers end-user  appli-
  612. cation  programmers  a  way  to  migrate  existing C++ class
  613. definitions to a network-transportable framework.  The Tran-
  614. sObject  facility  is  independent  of  both the NetClassses
  615. Typed Object transport and the  NIH-based  object  transport
  616. described above.
  617.  
  618. 3.15.4.  Distributed Services
  619. _ __ _   ___________ ________
  620.  
  621.      In addition to transporting  objects  over  a  network,
  622. another  common  need in distributed application development
  623. is the management of object  dissemination  and  connections
  624. between clients and servers.
  625.  
  626. PostModern Computing's Distributed  Service  paradigm  is  a
  627. connection  and  service management mechanism that is organ-
  628. ized around the idea that network service  providers  should
  629. not have to set up explicit port numbers and RPC connections
  630. but rather should simply  ``advertise''  themselves  on  the
  631. network.   ``Agents''  are  active  processes on the network
  632. that monitor network service advertisements and manage  con-
  633. nections  between  information producers and consumers.  The
  634. Distributed Service package is organized as a combination of
  635. C++  class  libraries  and  configurable ``dsagent'' execut-
  636. ables.  The Distributed Services paradigm is a powerful  and
  637. flexible  package that provides an object oriented framework
  638. for integrating and connecting applications on a network.
  639.  
  640. Distributed Services provides the following features:
  641.  
  642. +    Fault Tolerance
  643.  
  644. +    Load Balancing
  645.  
  646. +    Multicasting
  647.  
  648. 3.15.5.  Remote Method Invocation (RMI)
  649. _ __ _   ______ ______ __________  ___
  650.  
  651.      The distributed services paradigm enables methods to be
  652. invoked  on  objects from remote machines.  The RMI facility
  653. is a higher level communications facility that again shields
  654. the developer from port number and host name considerations.
  655. The focus of RMI is on  ease  of  use.   An  RMI  invocation
  656. requires  no  stub or skeleton files, protocol compilers, or
  657. RPC mechanisms.  To enable object X of class C to  have  its
  658. method  M  invoked  from a remote machine, a programmer uses
  659. the RMI::advertise method to advertise method X.M.
  660.  
  661. If an application wants to invoke the M method on  object  X
  662. from  a  remote  machine,  it  uses  the  RMI::invoke("X.M")
  663. method.
  664.  
  665. Parameter passing in RMI can be based on any  of  the  three
  666. NetClasses  object  transports  (generic C++, NIH-object, or
  667. TypedObject).  Synchronous  and  asynchronous  RMI  versions
  668. exist.
  669.  
  670. Multiple agents can advertise method X.M.  The one  that  is
  671. actually  invoked  is  transparent  to the client.  RMI thus
  672. provides an easy mechanism for developing  scalable  distri-
  673. buted applications.
  674.  
  675. 3.15.6.  Transport mechanisms
  676. _ __ _   _________ __________
  677.  
  678.      In the first developer's release,  NetClasses  includes
  679. TCP-    and    UDP-based    object   transport   mechanisms.
  680. PostModern's Reliable Broadcast Protocol  (now  under  alpha
  681. testing)  is a UDP-based layer for reliable object transport
  682. in nonconnection-oriented environments.  The TCP,  UDP,  and
  683. Reliable  Broadcast Protocol facilities are all organized as
  684. C++ class libraries.
  685.  
  686.