Explanation of Directory Structure and Rules: Difference between revisions

From OpenPetra Wiki
Jump to navigation Jump to search
(Created page with '== Introduction == This article describes the existing folder structure of the source code, and gives a short description of the contents and purposes. We will soon have more de…')
 
No edit summary
Line 1: Line 1:
== Introduction ==
= Introduction =
This article describes the existing folder structure of the source code, and gives a short description of the contents and purposes.
This article describes the existing folder structure of the source code, and gives a short description of the contents and purposes.


We will soon have more detailed documentation of the source code, generated from the in-code comments.
We will soon have more detailed documentation of the source code, generated from the in-code comments.


== C# Source code ==
= C# Source code =
All C# Source code is in the <code>csharp</code> directory.
All C# Source code is in the <code>csharp</code> directory.


Some Third-Party tools and dlls are in <code>csharp/ThirdParty</code>. Their license is compatible with the GPL, and each directory has a text file with the licensing details and links to the origin of that software.
Some Third-Party tools and dlls are in <code>csharp/ThirdParty</code>. Their license is compatible with the GPL, and each directory has a text file with the licensing details and links to the origin of that software.


=== Ict.Common ===
== Ict.Common ==
The directory <code>csharp/ICT/Common</code> contains some general libraries, eg. connecting to different types of databases, a printing system, String Helper functions, etc.
The directory <code>csharp/ICT/Common</code> contains some general libraries, eg. connecting to different types of databases, a printing system, String Helper functions, etc.


=== Ict.Petra.Shared ===
== Ict.Petra.Shared ==
The code in directory <code>csharp/ICT/Petra/Shared</code> is intended to be shared between Server and Client. This means, that no access to the database is available in these files, since they must be run on the client as well, which does not have access to the database.
The code in directory <code>csharp/ICT/Petra/Shared</code> is intended to be shared between Server and Client. This means, that no access to the database is available in these files, since they must be run on the client as well, which does not have access to the database.


Line 25: Line 25:
<code>csharp/ICT/Petra/Shared/MReporting</code> is another special directory specific to reporting functions that are used across all modules.
<code>csharp/ICT/Petra/Shared/MReporting</code> is another special directory specific to reporting functions that are used across all modules.


=== Ict.Petra.Server ===
== Ict.Petra.Server ==
<code>csharp/ICT/Petra/Server/app</code> contains code that is necessary for the basic operation of the Server, eg. starting and maintaining app domains for each connecting client, connect to the database, etc.
<code>csharp/ICT/Petra/Server/app</code> contains code that is necessary for the basic operation of the Server, eg. starting and maintaining app domains for each connecting client, connect to the database, etc.


Line 36: Line 36:
TODO: we have not tidied up the connectors yet for all the modules. For the MFinance module we have a directory <code>csharp/ICT/Petra/Server/lib/MFinance/connect</code>. This should contain generated code for the server that provides the services to the client.
TODO: we have not tidied up the connectors yet for all the modules. For the MFinance module we have a directory <code>csharp/ICT/Petra/Server/lib/MFinance/connect</code>. This should contain generated code for the server that provides the services to the client.


=== Ict.Petra.Client ===
== Ict.Petra.Client ==


=== Server Plugins ===
== Server Plugins ==


=== Server Admin ===
== Server Admin ==


=== Client Plugins ===
== Client Plugins ==


=== PetraTools ===
== PetraTools ==


=== Testing ===
== Testing ==

Revision as of 22:28, 17 November 2010

Introduction

This article describes the existing folder structure of the source code, and gives a short description of the contents and purposes.

We will soon have more detailed documentation of the source code, generated from the in-code comments.

C# Source code

All C# Source code is in the csharp directory.

Some Third-Party tools and dlls are in csharp/ThirdParty. Their license is compatible with the GPL, and each directory has a text file with the licensing details and links to the origin of that software.

Ict.Common

The directory csharp/ICT/Common contains some general libraries, eg. connecting to different types of databases, a printing system, String Helper functions, etc.

Ict.Petra.Shared

The code in directory csharp/ICT/Petra/Shared is intended to be shared between Server and Client. This means, that no access to the database is available in these files, since they must be run on the client as well, which does not have access to the database.

csharp/ICT/Petra/Shared/Interfaces is a special directory, which has Interfaces for functionality that the Server offers to the Client. Most of the interfaces are generated automatically, using nant generateGlue</glue>.

csharp/ICT/Petra/Shared/lib/RemotingSinks contains code that is used to encrypt the communication between Server and Client, using a public/private key mechanism.

Then we have for each module a subdirectory, eg. csharp/ICT/Petra/Shared/MPartner, which contains Constants, and routines that can be useful on both the Server and the Client.

There is a data directory for each module, which contains generated code for matching the database tables to C# classes, and for defining typed datasets, eg. csharp/ICT/Petra/Shared/lib/MPartner/data. More documentation on this will follow soon.

csharp/ICT/Petra/Shared/MReporting is another special directory specific to reporting functions that are used across all modules.

Ict.Petra.Server

csharp/ICT/Petra/Server/app contains code that is necessary for the basic operation of the Server, eg. starting and maintaining app domains for each connecting client, connect to the database, etc.

The main PetraServerConsole.exe is compiled from a project in csharp/ICT/Petra/Server/app/PetraServerConsole.

csharp/ICT/Petra/Server/lib contains most of the business logic.

There is a data directory for each module, which contains generated code for accessing the database, eg. csharp/ICT/Petra/Server/lib/MPartner/data. More documentation on this will follow soon.

TODO: we have not tidied up the connectors yet for all the modules. For the MFinance module we have a directory csharp/ICT/Petra/Server/lib/MFinance/connect. This should contain generated code for the server that provides the services to the client.

Ict.Petra.Client

Server Plugins

Server Admin

Client Plugins

PetraTools

Testing