theLink 10.0
Loading...
Searching...
No Matches
"Work Package II"

A collection of stepes planed for Work Package II

Version 2

This documentation define the next steps of the NHI1 development. The main goal of WPII is persistence. The persistence will be used to full implement persistent transactions. The persistence open a new development window for a:

  1. new BLOB data type
  2. real message based connectivity
  3. new message routing technology

1) Three New Language Bindings

To come back into the development cycle I usually start to implement a new languages binding. Three of them are on the list to extend the already available SYNOPSIS languages.

ruby

ruby is the first language binding for WPII. I'm really interested how it compares with python.

php

php is the gorilla for web programming and the only one with a missing C-API documentation as well. I probably found the reason. One book is available Extending and Embedding PHP to cover this.

go

go is the newcomer in 2009/10 and promise a lot. after they got callbacks working I'm really interested in the execution speed.

2) Embed the "SQlite" project into the "NHI1" project

SQlite will play a major role in the future of the NHI1 development. The code will be embedded and I expect a significant improvement for both projects. SQlite will get a client/server stack and I will get a persistent layer and an OS abstraction layer with memory management.

Factory

Add the self-programming capability to libmqmsgque

sqlite

The SQlite code will be embedded into the NHI1 code. SQlite is a free, stable widely used database with a very good documentation and a good speed.

blob

blobs are special because blobs a usually to big to fit efficient into memory. The persistence will be used to cut the blob into pieces and store the pieces into the local database. libmqmsgque is responsible to send the pieces into the remote database without programmer/user interaction. Only if the blob is available in the remote database the remote service is called to handle the blob data.

dbserver

SQlite is an embedded database a client/server stack is missing -> I'll add this

3) Message Routing

Message routing is important. By default libmqmsgque support the classic synchronic technology using hostname/port to unique identify the server for a network connection. (read more at: ADVANCED client/server)

client <--> server

With the help of the Filter technology a pipeline (still synchronic) is possible (read more at: ADVANCED master/slave)

client <--> filter1 <--> ... <--> filterN <--> server

With the help of the already implemented server identification configuration option MK_STRN MqClassIdentGet(MQ_CTXN const ctx) the technology of message routing is possible. The server register himself to a router and the client send the message to the router using only the ident value for target identification. The router is responsible to send the message to the server.

client <-> (client persistent storage) <-> 
  (router persistent storage master) <-> router <-> (router persistent storage slave) <-> ...
    (server persistent storage) <-> server

4) Start Of "moggel" With Integration Into Java-Script

Java-Script is the major player for the Web-Client-Programming.

firefox

I choose firefox using the XPCOM technology to extend Java-Script with NHI1 technology. With a NHI1 client available a new style of client/server applications are possible with a Web-Based-Layout for visual effects and a NHI1-Link for dynamic.