Cross-platform Communication Using Custom Channel Sinks

Tibor Hrnko
Vero Partners s.r.o.
Italská 13
120 00 Prague
Czech Republic



Keywords: WIN32; .NET; C#; Cross-platform; GSM; SMS; Remoting; Application queues; Custom sinks


Mobile GSM markets are highly competitive. Operators are searching for an edge over their competitors. Each provider’s IT division is mainly focused on infrastructure agenda; this creates a possibility for the third party vendors entering the field of SMS/MMS add-on services. Most of the current

GSM infrastructure systems are UNIX based. Prevalent approach of providing the API for the connection of external application is an http channel using a host of data formats.

It is highly desirable to keep the third party application as close to a object oriented programming as possible for the sake of development costs, measured by code reusability. The ideal way to solve this problem is to introduce a connector component which transforms and packages a method call into a proper wrapper, independent of the destination endpoint. Further separation of the application logic from the communication layer is enabled by use of application queues, which can both store the communication from individual service providers in a single consistent way and provide the scalability and security needed by the application.

This paper discusses the design of an application that has strictly separated application logic, is scalable, is extendable and its communication is based on remote method calls. Due to the dominance of WIN32 based systems on the computer market and due to the remarkable extension of the possibilities of its development environment provided by introduction of the .NET platform this particular environment is very suitable for the creation of an effective solution. C# language is appropriate for easy code porting to other object oriented standards (J2EE).

The general data flow of the solution can be described in four main steps:

The application logic receives and writes data asynchronously using application queues. Queue messages are serialized application specific objects. Scalability is implemented by the possibility of multiple application instances.

An arbitrary number of connectors to service providers can access the queues picking only the appropriate messages. The object model on the connector level is uniform with regard to application objects.

Method calls of the connectors are translated into individual data streams crossing the domain boundaries using the custom channel sink mechanism of the .NET platform. The other end of the communication can be totally independent from the originating platform.

Arbitrary specialized functionality can be introduced into individual connectors through the insertion of specialized sinks. Unrestricted manipulation of the received data on the application level can be introduced by the modification of the application queue data.