The Veto Unit

 

We are in the world of Client-Server software, Object Oriented was so fine in the world of GUI, but it's does not take Client-Server in mind, so we need  intelligent programming paradigm that take other features of software in mind

 

DoubleS paradigm designed to present the best solution for the most complex client-server applications; also DoubleS paradigm takes other features of software in mind.

 

 

 

The Veto Concept

 

Now, you may ask "Veto Unit, what is the veto thing?"

 

Ok I will tell you, the veto in DoubleS paradigm means "the message that passed from server to another one, and this message may be accepted or refused, also the message can contain unlimited amount of data that come before it."

 

You need to define the veto only at the Server which will receive the requests from another one.

 

When you define the veto, you tied it with resistance in you server circuits, so when invoking the veto this resistance will invoked only if the veto is accepted.

 

So the data required to define the veto is (Name, Type, Circuit, Branch and Resistance).

 

I know that you will ask "How I will control if the veto should accepted or not?"

At your design time you will put conditions to determine when you will accept the veto, and when not, while in programming you can set two items for the server, one called "Receiver Veto" which invoked when there are veto passed to the server, and another item called "Sender Veto" which invoked when sending veto to another server

 

The Channel Concept

 

Now the question "how I can collect unlimited amount of data passed to my server beside veto also how I can send unlimited amount of data while I send my veto?"

 

 Ok, it's the time now to present the second block in the veto unit which called the "Channel", simply it's not more than "Reference to sub shell in atom" and this means that for defining channel we need to determine "Name, Type, Atom, Shell and Sub Shell).

 

 

You have two genders of channels "Input Channel & Output Channel", at the "Server" side we need to define Input Channel to receive in it unlimited amount of data, in "Client" Side we can define "Output channel" to store data that we send from the Server.

 

The Connection Concept

 

Ok, the question now which may be in mind from a long time "How I can connect Server to another one?"

 

This is simple process, we use in that the third block in Veto Unit which called "Connection", which is used for connection and also setting how we will manage the "Interaction" process between servers, this means determining what is the servers we want to connect to?, what are the channels used for input & output operations?, what is the sender veto for that connection only? And what is the receiver veto for that connection only?

 

 

Veto System Levels

 

Now we have only one tip, in veto system there are levels where each level determine the environment in which the system will work, for example you start writing the client-server software through level (1) "virtual client-server", so you can test your software and generate one "executable" file that contain both the client and server, then you can change the level of the veto system, for example veto system level (2) "at LAN level through shared data files".

 

This means that through veto system you can write your client-server software that can be work in different environments (Desktop, LAN and Internet) without changing the base code, only you set the environment variables.

 

Now, we have simple example for both "Client side" and "Server side" servers which will show how writing client-server software in DoubleS paradigm is simple and effective process.

 

In our example we will use veto system level (1), virtual client-server.

 

Veto System Level [1]

 

 This Level (VSL1) called "Virtual Client-Server"

 

*       Both the client and the Server are in the same Executable Program

*       This Level is not more than a prototype for client-server systems

*       No use for Shared Data Files

*       No use for external Programs

*       No use for Network protocols like TCP/IP at all

 

Veto System Level [2]

 

This Level (VSL2) called "Client-Server Based on Shared Data Files"

 

*       The Shared Data Files are two file (SS1.DBF) & (SS2.DBF)

*       The Client and the Server are isolated from each other

*       This Level used when client-server applications works in the same Machine or LAN

*       No use for external Programs or Network protocols like TCP/IP at all

 

Veto System Level [3]

 

This Level (VSL3) called "Client-Server Based on TCPIP Server"

 

*       The Client and the Server are isolated from each other

*       This Level works on (Desktop, LAN, Internet…etc) any IP Based Network.

*       There is usage for external program "TCPIP.EXE" called TCP/IP Server

*       The external program required at both the client-side & Server Side

*       Using Network protocols like TCP/IP done only by the external program

*       The communication between the Client-Side and TCPIP.EXE done through VSL2

*       The communication between the Server-Side and TCPIP.EXE done through VSL2

 

 

Domain (Veto Unit)