Differences between revisions 66 and 67
Revision 66 as of 2012-04-22 08:52:22
Size: 7008
Editor: 86-40-31-190-dynamic
Comment: Added RPyC
Revision 67 as of 2013-01-28 18:51:19
Size: 7099
Editor: YannickHold
Comment: Added SCOOP entry.
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:

This [[http://groups.google.com/group/comp.lang.python/browse_frm/thread/3df7b51071dbfad|link]]
points to an informal comparison of distributed computing technologies,
including [[CorbaPython|CORBA]], [[WebServices|XML-RPC, SOAP]], ... in ''comp.lang.python''.
This [[http://groups.google.com/group/comp.lang.python/browse_frm/thread/3df7b51071dbfad|link]]  points to an informal comparison of distributed computing technologies, including [[CorbaPython|CORBA]], [[WebServices|XML-RPC, SOAP]], ... in ''comp.lang.python''.
Line 10: Line 7:
Line 14: Line 10:
  * http://www.mindhog.net/~mmuller/projects/dopy/
    [[Dopy]] is a small distributed object system written entirely in Python. It is not intended to be ''CORBA''
   
compliant. Instead, it aims to be extremely easy to use and to support Python's dynamic nature - methods
   
are invoked dynamically, parameters are passed by copy. Any python object that can be pickled can automatically
   
be passed as a parameter or a return value, and any Python object can be published as a distributed object.
 * http://www.mindhog.net/~mmuller/projects/dopy/
  . [[Dopy]] is a small distributed object system written entirely in Python. It is not intended to be ''CORBA'' compliant. Instead, it aims to be extremely easy to use and to support Python's dynamic nature - methods are invoked dynamically, parameters are passed by copy. Any python object that can be pickled can automatically be passed as a parameter or a return value, and any Python object can be published as a distributed object.
Line 21: Line 14:
  * http://fnorb.sourceforge.net/
    ''Fnorb'' is a CORBA 2.0 ORB for Python first developed by DSTC. Fnorb's claim to fame is its size
   
and pure Python implementation. These features allow it to be used whever Python may used     (for example, within Jython) unlike other ORBs that rely on binary runtimes.
 * http://fnorb.sourceforge.net/
  . ''Fnorb'' is a CORBA 2.0 ORB for Python first developed by DSTC. Fnorb's claim to fame is its size and pure Python implementation. These features allow it to be used whever Python may used (for example, within Jython) unlike other ORBs that rely on binary runtimes.
Line 27: Line 18:
  * http://www.zeroc.com/index.html
    ICE (Internet Communications Engine) is a GPL'd CORBA-like middleware. It's
    simple, fast, and powerful, and in [[http://www.zeroc.com/customers.html|serious production use]].
    * Languages: Python, C++, Java, PHP, C#, and Visual Basic.
    * Platforms: http://www.zeroc.com/platforms.html
 * http://www.zeroc.com/index.html
  . ICE (Internet Communications Engine) is a GPL'd CORBA-like middleware. It's
  simple, fast, and powerful, and in [[http://www.zeroc.com/customers.html|serious production use]].
  * Languages: Python, C++, Java, PHP, C#, and Visual Basic.
  * Platforms: http://www.zeroc.com/platforms.html
Line 34: Line 25:
  * http://omniorb.sourceforge.net/
    ''omniORB'' is a robust high performance CORBA ORB for C++ and Python. It is freely available under the terms
   
of the GNU Lesser General Public License (for the libraries), and GNU General Public License (for the tools).
   
It is one of only three ORBs to be awarded the Open Group's Open Brand for CORBA.
 * http://omniorb.sourceforge.net/
  . ''omniORB'' is a robust high performance CORBA ORB for C++ and Python. It is freely available under the terms of the GNU Lesser General Public License (for the libraries), and GNU General Public License (for the tools). It is one of only three ORBs to be awarded the Open Group's Open Brand for CORBA.
Line 40: Line 29:
  * http://www.dscpl.com.au/wiki/OSE
    ''OSE'' is a generic application framework suitable for constructing general purpose applications,
   
''distributed systems'' and web based services. The four main parts of OSE are an extensive C++ class library,
   
a set of Python wrappers, a build environment based on GNU Make, and a set of documentation extraction tools.
 * http://www.dscpl.com.au/wiki/OSE
  . ''OSE'' is a generic application framework suitable for constructing general purpose applications, ''distributed systems'' and web based services. The four main parts of OSE are an extensive C++ class library, a set of Python wrappers, a build environment based on GNU Make, and a set of documentation extraction tools.
Line 46: Line 33:
  * http://www.picloud.com
    ''!PiCloud'' is a cloud-computing platform that integrates into Python. It allows developers to leverage the computing power of [[http://aws.amazon.com|Amazon Web Services]] (AWS) without having to manage, maintain, or configure their own virtual servers. [[http://www.picloud.com|PiCloud]] integrates into a Python code base via its custom library, ''cloud''. Offloading the execution of a function to !PiCloud's auto-scaling cluster (located on AWS) is as simple as passing the desired function into !PiCloud's ''cloud'' library.  

  
For example, invoking ''cloud.call(foo)'' results in ''foo()'' being executed on !PiCloud.     Invoking ''cloud.map(foo, range(10))'' results in 10 functions, ''foo(0)'', ''foo(1)'', etc. being executed on !PiCloud.
 * http://www.picloud.com
  . ''!PiCloud'' is a cloud-computing platform that integrates into Python. It allows developers to leverage the computing power of [[http://aws.amazon.com|Amazon Web Services]] (AWS) without having to manage, maintain, or configure their own virtual servers. [[http://www.picloud.com|PiCloud]] integrates into a Python code base via its custom library, ''cloud''. Offloading the execution of a function to !PiCloud's auto-scaling cluster (located on AWS) is as simple as passing the desired function into !PiCloud's ''cloud'' library.
  For example, invoking ''cloud.call(foo)'' results in ''foo()'' being executed on !PiCloud. Invoking ''cloud.map(foo, range(10))'' results in 10 functions, ''foo(0)'', ''foo(1)'', etc. being executed on !PiCloud.
Line 53: Line 38:
    PyBrenda is a tuple spaces implementation for Python.  . PyBrenda is a tuple spaces implementation for Python.
Line 56: Line 41:
  * http://irmen.home.xs4all.nl/pyro/
    [[Pyro]] is an acronym for '''Py'''thon '''r'''emote '''o'''bjects. It is a library that enables you to build applications in which objects can talk to each other over the network, with minimal programming effort. You can just use normal Python method calls, with almost every possible parameter and return value type, and Pyro takes care of locating the right object on the right computer to execute the method. It is designed to be very easy to use, and to generally stay out of your way. But it also provides a set of powerful features that enables you to build distributed applications rapidly and effortlessly. Pyro is written in 100% pure Python and therefore runs on many platforms and Python versions, including Python 3.x. 
 * http://irmen.home.xs4all.nl/pyro/
  . [[Pyro]] is an acronym for '''Py'''thon '''r'''emote '''o'''bjects. It is a library that enables you to build applications in which objects can talk to each other over the network, with minimal programming effort. You can just use normal Python method calls, with almost every possible parameter and return value type, and Pyro takes care of locating the right object on the right computer to execute the method. It is designed to be very easy to use, and to generally stay out of your way. But it also provides a set of powerful features that enables you to build distributed applications rapidly and effortlessly. Pyro is written in 100% pure Python and therefore runs on many platforms and Python versions, including Python 3.x.
Line 60: Line 45:
  * http://sourceforge.net/projects/orbit-python
    ''Python-Orbit'' is a project to develop Python bindings for ORBit. It supports dynamic loading of IDL
   
(no IDL compiler required), and most of ORBit's Type Codes.
 * http://sourceforge.net/projects/orbit-python
  . ''Python-Orbit'' is a project to develop Python bindings for ORBit. It supports dynamic loading of IDL (no IDL compiler required), and most of ORBit's Type Codes.
Line 65: Line 49:
  * http://rpyc.sourceforge.net/
    [[RPyC]] (pronounced like are-pie-see), or Remote Python Call, is a transparent and symmetrical python library for remote procedure calls, clustering and distributed-computing. RPyC makes use of object-proxying, a technique that employs python's dynamic nature, to overcome the physical boundaries between processes and computers, so that remote objects can be manipulated as if they were local.
 * http://rpyc.sourceforge.net/
  . [[RPyC]] (pronounced like are-pie-see), or Remote Python Call, is a transparent and symmetrical python library for remote procedure calls, clustering and distributed-computing. RPyC makes use of object-proxying, a technique that employs python's dynamic nature, to overcome the physical boundaries between processes and computers, so that remote objects can be manipulated as if they were local.

=== SCOOP ===
 * http://www.pyscoop.org/
  . SCOOP (Scalable COncurrent Operations in Python) is a distributed task module based on PEP-3148 allowing concurrent parallel programming on various environments, from heterogeneous grids to supercomputers.
Line 69: Line 57:
  * http://www.python.org/other/spread/
    ''Spread'' is a toolkit that provides a high performance messaging service that is resilient to faults
   
across external or internal networks. Spread functions as a unified message bus for distributed applications,
   
and provides highly tuned application-level multicast and group communication support. Spread services range
   
from reliable message passing to fully ordered messages with delivery guarantees, even in case of computer
   
failures and network partitions. Spread is designed to encapsulate the challenging aspects of asynchronous
   
networks and enable the construction of scalable distributed applications, allowing application builders
   
to focus on the differentiating components of their application. 
 * http://www.python.org/other/spread/
  . ''Spread'' is a toolkit that provides a high performance messaging service that is resilient to faults across external or internal networks. Spread functions as a unified message bus for distributed applications, and provides highly tuned application-level multicast and group communication support. Spread services range from reliable message passing to fully ordered messages with delivery guarantees, even in case of computer failures and network partitions. Spread is designed to encapsulate the challenging aspects of asynchronous networks and enable the construction of scalable distributed applications, allowing application builders to focus on the differentiating components of their application.
Line 79: Line 61:
  * http://www.twistedmatrix.com/
    TwistedMatrix is a framework, written in Python, for writing networked applications. It includes
   
implementations of a number of commonly used network services such as a web server, an IRC chat server,
   
a mail server, a relational database interface and an object broker. Developers can build applications
   
using all of these services as well as custom services that they write themselves. Twisted also includes
   
a user authentication system that controls access to services and provides services with user
   
context information to implement their own security models.
 * http://www.twistedmatrix.com/
  . TwistedMatrix is a framework, written in Python, for writing networked applications. It includes implementations of a number of commonly used network services such as a web server, an IRC chat server, a mail server, a relational database interface and an object broker. Developers can build applications using all of these services as well as custom services that they write themselves. Twisted also includes a user authentication system that controls access to services and provides services with user context information to implement their own security models.
Line 88: Line 65:
  * http://msobczak.com/prog/yami/
    ''YAMI'' project is supposed to provide a simple language- and platform-independent alternative     to other, commercially and freely available communication infractructures like COM, CORBA or JavaRMI.
   
It's not supposed to become their substitution :), but thanks to much simpler rules it's built on,
   
it can become a useful part in some class of distributed systems, whether they are full-blown
   
object-oriented systems or the simplest client-server solutions.
   
YAMI is a complete and consistent environment, and currently supports:
    * Operating Systems:  FreeBSD, Linux, MS Windows, SunOS
    * Programming Languages:  C, C++, '''''Python''''', Tcl 
 * http://msobczak.com/prog/yami/
  . ''YAMI'' project is supposed to provide a simple language- and platform-independent alternative to other, commercially and freely available communication infractructures like COM, CORBA or JavaRMI. It's not supposed to become their substitution :), but thanks to much simpler rules it's built on, it can become a useful part in some class of distributed systems, whether they are full-blown object-oriented systems or the simplest client-server solutions. YAMI is a complete and consistent environment, and currently supports:
  * Operating Systems:        FreeBSD, Linux, MS Windows, SunOS
  * Programming Languages:    C, C++, '''''Python''''', Tcl

A guide and a discussion page for Python related distributed programming.

This link points to an informal comparison of distributed computing technologies, including CORBA, XML-RPC, SOAP, ... in comp.lang.python.

Software

You'll find here a (partial) list of relevant projects:

Dopy

  • http://www.mindhog.net/~mmuller/projects/dopy/

    • Dopy is a small distributed object system written entirely in Python. It is not intended to be CORBA compliant. Instead, it aims to be extremely easy to use and to support Python's dynamic nature - methods are invoked dynamically, parameters are passed by copy. Any python object that can be pickled can automatically be passed as a parameter or a return value, and any Python object can be published as a distributed object.

Fnorb

  • http://fnorb.sourceforge.net/

    • Fnorb is a CORBA 2.0 ORB for Python first developed by DSTC. Fnorb's claim to fame is its size and pure Python implementation. These features allow it to be used whever Python may used (for example, within Jython) unlike other ORBs that rely on binary runtimes.

ICE

omniORB

  • http://omniorb.sourceforge.net/

    • omniORB is a robust high performance CORBA ORB for C++ and Python. It is freely available under the terms of the GNU Lesser General Public License (for the libraries), and GNU General Public License (for the tools). It is one of only three ORBs to be awarded the Open Group's Open Brand for CORBA.

OSE

  • http://www.dscpl.com.au/wiki/OSE

    • OSE is a generic application framework suitable for constructing general purpose applications, distributed systems and web based services. The four main parts of OSE are an extensive C++ class library, a set of Python wrappers, a build environment based on GNU Make, and a set of documentation extraction tools.

PiCloud

  • http://www.picloud.com

    • PiCloud is a cloud-computing platform that integrates into Python. It allows developers to leverage the computing power of Amazon Web Services (AWS) without having to manage, maintain, or configure their own virtual servers. PiCloud integrates into a Python code base via its custom library, cloud. Offloading the execution of a function to PiCloud's auto-scaling cluster (located on AWS) is as simple as passing the desired function into PiCloud's cloud library. For example, invoking cloud.call(foo) results in foo() being executed on PiCloud. Invoking cloud.map(foo, range(10)) results in 10 functions, foo(0), foo(1), etc. being executed on PiCloud.

PyBrenda

  • PyBrenda is a tuple spaces implementation for Python.

Pyro

  • http://irmen.home.xs4all.nl/pyro/

    • Pyro is an acronym for Python remote objects. It is a library that enables you to build applications in which objects can talk to each other over the network, with minimal programming effort. You can just use normal Python method calls, with almost every possible parameter and return value type, and Pyro takes care of locating the right object on the right computer to execute the method. It is designed to be very easy to use, and to generally stay out of your way. But it also provides a set of powerful features that enables you to build distributed applications rapidly and effortlessly. Pyro is written in 100% pure Python and therefore runs on many platforms and Python versions, including Python 3.x.

Python-Orbit

RPyC

  • http://rpyc.sourceforge.net/

    • RPyC (pronounced like are-pie-see), or Remote Python Call, is a transparent and symmetrical python library for remote procedure calls, clustering and distributed-computing. RPyC makes use of object-proxying, a technique that employs python's dynamic nature, to overcome the physical boundaries between processes and computers, so that remote objects can be manipulated as if they were local.

SCOOP

  • http://www.pyscoop.org/

    • SCOOP (Scalable COncurrent Operations in Python) is a distributed task module based on PEP-3148 allowing concurrent parallel programming on various environments, from heterogeneous grids to supercomputers.

Spread

  • http://www.python.org/other/spread/

    • Spread is a toolkit that provides a high performance messaging service that is resilient to faults across external or internal networks. Spread functions as a unified message bus for distributed applications, and provides highly tuned application-level multicast and group communication support. Spread services range from reliable message passing to fully ordered messages with delivery guarantees, even in case of computer failures and network partitions. Spread is designed to encapsulate the challenging aspects of asynchronous networks and enable the construction of scalable distributed applications, allowing application builders to focus on the differentiating components of their application.

Twisted

  • http://www.twistedmatrix.com/

    • TwistedMatrix is a framework, written in Python, for writing networked applications. It includes implementations of a number of commonly used network services such as a web server, an IRC chat server, a mail server, a relational database interface and an object broker. Developers can build applications using all of these services as well as custom services that they write themselves. Twisted also includes a user authentication system that controls access to services and provides services with user context information to implement their own security models.

YAMI

  • http://msobczak.com/prog/yami/

    • YAMI project is supposed to provide a simple language- and platform-independent alternative to other, commercially and freely available communication infractructures like COM, CORBA or JavaRMI. It's not supposed to become their substitution :), but thanks to much simpler rules it's built on, it can become a useful part in some class of distributed systems, whether they are full-blown object-oriented systems or the simplest client-server solutions. YAMI is a complete and consistent environment, and currently supports:

    • Operating Systems: FreeBSD, Linux, MS Windows, SunOS
    • Programming Languages: C, C++, Python, Tcl

DistributedProgramming (last edited 2013-01-28 18:51:19 by YannickHold)

Unable to edit the page? See the FrontPage for instructions.