Ant.NET
Ant.Net is a set of C# components implementing mainly agent-based evolutionary computation systems,
according to EMAS model based on .NET. Informations according to the project
can be found on Source Forge.
.NET
.NET is a new environment for developing and running software applications,
featuring ease of development of web-based services,
rich standard run-time services available to components
written in a variety of programming languages, and inter-language and
inter-machine interoperability. The environment is developed by Microsoft
Corporation. It was firstly announced in 2000, and in the same year
first version of the .NET SDK became available.
.NET runs on various kinds of MS Windows operating system, and additionally, efforts
are made to port it on other operating systems, e.g. Linux version of
.NET is also developed, under the name of Mono.
Microsoft .NET provides compilers for C\#, C++, Visual Basic and JScript.
Other vendors have announced that they intend to develop .NET compilers
for such languages as COBOL, Eiffel, Perl, Smalltalk and Python.
This platform is in many ways similar to Java.
It uses CLR (Common Language Runtime) to run code compiled from the
previously mentioned languages to
IL (Intermediate Language), what is very similar to B-Code, used by Java
interpreters. Another feature is garbage collection, what also was implemented
to ease the memory management.
Design issues
In .NET an extensive support for multi-threading was implemented.
New threads can be spawned, stopped and aborted, and there is a system-provided threadpool
which applications can use (a thread can be placed in a threadpool, in order
to wait for the execution in a queue).
The support for the distributed application was implemented using the so-called
remoting algorithm.
.NET remoting involves sending messages along channels.
Two of the standard channels are HTTP and TCP.
TCP is intended for LANs only - HTTP can be used for LANs or WANs (internet).
Multiple message serialisation formats are supported.
Examples are SOAP (XML-based) and binary. By default, the
HTTP channel uses SOAP and the TCP channel uses binary.
But either channel can use either serialization format.
Platform seems to be very good to use while creating parallel systems. Especially fine-grained
systems should be easy to construct, as every individual can be easy encoded as an object.
Interaction between the objects should be easily implemented by using method calls and remoting.
Communication capability or migration in a distributed application
was implemented using remoting and
serialisation. Serialisation is the process of converting an object into a stream
of bytes. Deserialisation is the opposite process of creating an object from a
stream of bytes. Serialisation/Deserialisation is mostly used to transport
objects (e.g. during remoting), or to persist objects (e.g. to a file or database).
There are two separate mechanisms provided by the .NET class library --
XmlSerializer and SoapFormatter/BinaryFormatter. Microsoft uses
the former for Web Services, and the latter for
remoting.
One important feature about the serialisation process is that it is very slow,
although universal (as SOAP uses XML language). Thus, to communicate between
individuals that exist nearby (in the same environment, moreover, in the same
machine) simple method calls should be used. To maintain communication
over the network, using remoting and serialisation is a reasonable choice.
Additionally, messages can be packed and sent as compressed files, what
greatly enhances speed of the communication.
Selection, especially based on existing of common (non renewal) resource of energy
must be implemented with special care about synchronisation, and concurrent access,
especially when fine-grained parallel application is designed. If the application
is event-driven, this problem dissappears.
Individuals were implemented simply as objects. Their attributes
will describe their inner state, genotype and phenotype, when
the methods will help to bring the individual alive. In an event-driven
system, periodically called method will force the agent to carry out
its common tasks.
Environments and regions, which contain and manage sub-level units, were implemented with help of
ready to use components being the standard part of the Software Development Kit,
such as hash-tables.
|