Summer of Code 2006 Proposal: A standard web service API for Cayenne
A standard web service API for Cayenne
Michael Victorov (m_victorov at mail dot ru)
Hessian binary data exchange protocol, on which client server interoperation of Cayenne is based, is very good approach in many cases. It is positioned as lightweight binary protocol suitable for implementing it (and using author's implementation) on mobile cellphones, fast desktops and power servers. But in nowdays XML-based approach became a mainstream for web services. It's reasonable enough and motivation of this can be found in many texts... Current standart protocol for XML web services interaction - Simple Object Access Protocol (SOAP). With it's security extensions and extensions for attaching binary data to messages it becames very attractive for using it.
This project is intended for creating SOAP based alternative for hessian protocol in Cayenne remote object persistence technology.
An implementation of message exchange level in Cayenne remote object persistance technology based on SOAP protocol. I will try to keep maximal compatibility with currently existing API's, and maybe provide a way to choose, what implementation to use.
Integration with SOAP information security standarts. Using Simple Object Access Protocol gives an opportunity to use it's security extensions, such as WS-Security: SOAP Message Security 1.0 (OASIS). With it's support Cayenne may act as a part of large information services with multy-layered security subsystems.
Benefits for The Apache Community
Cayenne will be powered by modern web services standart technologies. It will became compatible with many tools and systems, supporting SOAP protocol. As implication, Cayenne will became more popular and Community will became bigger and stronger. Also, If my design decisions are right and suitable, then Cayenne may be integrated with 2 another very good Apache products, and this will also support Community.
After some investigation in technologies, currently used in project work area, I decided, that most suitable way to realize SOAP support in Cayenne ROP, is to use Apache Axis SOAP implementation. It is characterized by it's flexibility, power and simplicity. And after brief looking at Cayenne sources, I suppose that currently existing mechanisms to interact with hessian are good adaptable for use with Axis.
Security support can be integrated by using Apache WSS4J library. It is another part of Apache Web Services Project and it has pretty good interconnection with Axis. WS-Security provides methodology to implement security related aspects in web services, but concrete architecture of security subsystem must be engineered by author of each concrete system. So, I will try to separate security-related API from remaining modules to provide easy reconfiguration methods.
I am 21 y.o., and I am 5th year student of Mathematical Faculty of Tver State University (spec. Computer Security) in Tver, Russia. I'll graduate in something about 9 month. My interests are information security, web technologies, intelligent object-oriented systems, AI systems, neural networks, mathematical modeling and many other things.
Currently I combine my education in TvSU with work in research and development institute "Centreprogramsystem". In times of Soviet Union it was one of the biggest software development instuitutes in my country. My current duty is Java development. I take part in project concerned with multy-agent systems, web services and specialized IDE's.
My graduate work in university is dedicated to applying neural networks to information security. I want to try to create AI based system for analysing client activity of web-based applications and detecting possible anomal behavior. I hope, it will work.
Why I want to take part in it... I'll be honest. I saw Cayenne at the first time, when I read code.google.com site few weeks ago. And I liked it. When I was on 3rd year in university, I had absorbed in idea of creating object-oriented database managing systems. I have understood that creating such a DBMS was too hard for me to do alone at that time. So I've tried to create a simple system for storing objects in existing relational DBMS. I've used PostgreSQL stored procedures to implement some type of inheritance and also an object associating system. But it was just an experimental work, and I've realized, that It was wrong way.
Now I am interested in service oriented architecture, because it is related with my work and my education (diploma work). I want to gain experience in creating object exchange layer of web-service applications. Also, If I will have time, I want to experiment with ontological systems (OWL, semantic web...). Most likely, I'll do it after my graduation.
So, I think, I can do this task.