[Cps4] CPSUniversal interface

Ruslan Spivak rspivak at nuxeo.com
Wed Apr 12 00:58:03 CEST 2006


В Пнд, 10/04/2006 в 15:02 +0200, Eric Barroca пишет:
> Hi,
> 
> I'd like that Ruslan initiate the design work of the CPSUniversal  
> module that aims at providing a unified interface on top of CPS.
> I may be based on ICE.
> 
> Goals :
> 
> 	- transparent access to CPS from other languages / platforms (Java,  
> C#, PHP) to allow development of CPS components in other languages  
> (ex: build your website using PHP and access CPS content).
Let's clarify a bit here: i think you don't mean here to write in other
languages than python full blown Zope components, but just Ice clients
in different languages to connect to Ice based CPS component that
provides predefined(?) API allowing clients to manipulate CPS in one way
or another.
I know we have some problems with CPSRemoteController API, it became
blown and custom projects have its own requirements for specific
methods, but i believe we could after thourough thinking provide API
that touches many aspects of work with CPS and create Slice definition
that will provide API methods for other languages.

> 
> 	- allow distributed achitecture for CPS development (CPS instances  
> can communicate)
What meaning do you put into this? Communication between CPSUniversal
components from different instances ?

> 
> 	- create a way to communicate with external components like  
> JackRabbit or Sesame using a unique way
If you mean here defining means of communication like Ice, then it's
clear how it can be unique. 

If it's about interface that is exposed by Jackrabbit/Sesame/etc, then i
do not see other way as if when using Ice, for example, to describe
Jackrabbit/Sesame/etc interfaces in Slice IDL which will be exposed
after that as Ice server's methods that will be accessing
Jackrabbit/Sesame/etc. Of course it's our responsibility to provide
those methods implementation.

> 
> 	- offer CPS connectors/API for Java, PHP and .NET/C#
> 
This is related to first goal, i guess, unless you mean something
different, ie provide API(defined with Slice) for manipulating CPS.


> Principles :
> 
> 	- A central client service that can be used to reach external ICE'ed  
> components
can you, please, provide use case ?

> 
> 	- A central service where components can register methods. The  
> service expose those methods to ICE clients.
> 
what do you mean here by "components" ? Can you expand, please? Is it
just python code that acts like Ice service and then it looks like
IceBox and component implementing interface just registers in IceBox(the
service/component code may connect to Jabber, for example, ie no
dependence on CPS).
Or it's component that exposes its methods via Ice and also has access
to CPS?

Let's start from the fact that before client and server communicate
invoking methods, we provide compile time(with python it's just load
time) contract using Slice IDL that we store in file and it should be
available both on client and a server. It's not xml-rpc that we add
method on server and client just calls it, client should also have
changed .ice file from server as well, to be able to call that new
method.
In Ice there is "untyped invocation and dynamic dispatch" mechanism that
allows to live without interface definitions with Slice, but this model
will quickly become complex to program, as many issues developer will
need to care himself.

> 
> Issues :
> 
> 	- Find a way to centrally manage all ICE components of our  
> architecture (ICEBox ?)
Actually i think it's IceGrid + IceBox for more complex installation, by
this i mean Ice services spreading on different hosts or serveral IceBox
instances on the same host - for example, 1 instance for java services
and 1 for python services. IceGrid will let aggregate them into one
service or just monitor their status, both possibilities are useful.

Not related to central management, but useful components:
Glacier2 - though it's router has special usage for bi-directional
communication between client and server, though it may be done manually.

IceStorm - plugs when there is need for efficient publisher-subscriber
features (here at once comes in mind AFP project with cache modification
events sent to CNG clients)

One note:
Currently IceBox is not available for python, only C++ and Java. If this
becomes issue in future we can ourselves develop necessary small bridge
C++ code using Ice infrastructure to have IceBox for python.

> 
> 	- Find a way to bypass the zserver and allow direct invocation from  
> ICE clients, without using a HTTP request
> 
First thing that came to my mind was using Zasync like approach, ie ZEO
client, but i'm not sure at the moment how well it fits with what
Florent does on Zope side.
With Z3 there may be other possibilities like using Twisted and
publisher interface implementation, but this should be verified and we
are not on Z3 anyway.

Ruslan



More information about the cps4 mailing list
More information about CPS: CPS project - CVS - API

Hosting: Nuxeo: Zope service provider

About

This page is a mailing archive for one of the Nuxeo projects.

Project News

[2008/11/18] Nuxeo 5.2.M3 and Nuxeo WebEngine 1.0.RC released![2008/11/13] First Nuxeo Developer Day (1st Dec. 2008) - Still a few seats available[2008/11/13] First Nuxeo Survey[2008/10/08] Nuxeo 5.1.6 Released

Corporate News

[2008/11/20] Nuxeo secures 2 million Euros and strengthens its board of directors and corporate governance[2008/11/17] Nuxeo joins OASIS[2008/10/23] IFRA Expo 2008 Amsterdam, October 27th to 30th, Booth 9363, Hall 9[2008/10/08] Nuxeo announces the appointment of Carina Rimoli as Indirect Sales Manager