Показаны сообщения с ярлыком Framework. Показать все сообщения
Показаны сообщения с ярлыком Framework. Показать все сообщения

24 августа, 2007

Mono - свободная реализация .NET

Если Вы считаете, что .NET платформа ориентирована только на запуск Windows-приложений, то Вы ошибаетесь.
Самое время познакомиться с Mono Project.

Mono - это кросс-платформенная Open Source (произносится "оупен сорс") реализация .NET платформы, которая включает в себя библиотеки и инструменты для разработки программных продуктов (ПП).

В Mono возможно использовать сторонние языки программирования: Nemerle, Java(IKVM), JavaScript, C, COBOL, Python, Eiffel, Perl, PHP, но основной язык Mono - С# (произносится "си шарп"); C# основан на языках C++ и Java.
Как и в Java, среда Mono содержит компилятор, вируальную машину и классы программных интерфейсов. Программа комрилируется в промежуточный байт-код, известный как CIL (Common Intermediate Language), независимый от конкретного процессора, затем запускается виртуальной машиной, just-in-time compilier (JIT).

Как и во многих культурах разработки ПП, Mono имеет свой набор инструментов:
  1. NAnt для .NET сравним как Make для GCC, или Ant для Java.
  2. Autotools: GNU Automake и Autoconf могут быть использованы в Mono в дополнении pkg-config
  3. MonoDevelop - IDE (среда разработки), сравнима с известными Windows-основанными SharpDevelop IDE, Microsoft Visual C#

Mono поддерживает все популярные платформы: x86, x86-64, SPARC, ARM, MIPS, s390, PowerPC, Alpha.

В Linux интегрировано множество библиотек:
GTK#, с помощью которой можно создавать пользовательские интерфейсы для среды Gnome. Графический интерфейс GTK# сохраняется в XML файл;
Boo, Python-подобный .NET язык программирования, для написания сценариев, которые в последующем возможно встраивать в другие приложения;
Cairo, векторный рендеринг графического интерфейса для GNOME;
Java, GStreamer, Avahi, Evolution, Cecil, D-Bus, HAL, GLib#, Gecko#, atk#, XML, rSVG#, Mono.Http, Mono.Security, Mono.Posix, OpenSystem.C

Все библиотеки устанавливаются в GAC, global assembly cache (рус. "глобальный кэш сборки"). Для установки библиотек в Linux мы используем место /usr/lib, или /usr/local/lib, в виндозе - C:\Windows.

Также можно выделить что платформа Mono умеет обрабатывать XML на основе Relax NG

Советую очень дельную книжецу O'Reilly - Mono: A Developer's Notebook (By Niel M. Bornstein, Edd Dumbill). Здесь нет UML диаграмм, блок-схем и деревьев наследования, долгих объяснений и лекций. Эта книга нацелена в первую очередь на разработчиков, которые хотят быстро освоить Mono.

Установка инструментов Mono, MonoDevelop в Debian GNU/Linux
Вообще более менее стабильные версии пакетов уже включены в основной дистрибутив, но для тех кто хочет иметь последние версии в разработке, нестабильной ветки sid, могут подключить репозиторий Mono проекта. Делается это так:
Редактируем sources.list
~# nano /etc/apt/sources.list

добавляем туда строку
deb http://debian.meebey.net/ ./

Обновляем, после чего можем качать пакеты ;)

22 июля, 2007

KLone: каркас для web-программирования на языке C.

KLone - это фреймворк для программирования веб-приложений, который расширяет простой HTML языком С, и помещает весь код на сервере в один бинарный файл.

.deb пакет
KLone доступен в Debian GNU/Linux 4.0 "Etch" и Ubuntu Linux "Edgy", "Feisty Fawn", "Gutsy Gibbon".
~$ apt-get install klone-package


PHP очень популярен своим стилем программирования, смешиванием HTML с исходным кодом, заключенным в теги <?php ... ?>. Существует множество инструментов и каркасов для веб-программирования на других языках, таких как Perl и Python, совершенно удивительный выбор языка программирования, который вы можете использовать взамен вышеперечисленных, называется C.

Посмотрим на пример как создать простое веб-приложение.

Создадим директорию, в которой будем работать.
~$ make-klone-project create -p myhello
~$ cd myhello-0.1

В директории проекта будет храниться несколько файлов и директорий . Одна из важнейших папок будет Debian/, в которой будут храниться файлы для генерации .deb пакета, содержащего веб-аппликацию. К этому вернемся чуть позже. Сейчас же давайте сосредоточимся на другой интересной директории userdata/.
~$ cd userdata
~$ mkdir etc
~$ cd etc

Создаем файл kloned.conf и редактируем его.
~$ nano kloned.conf



server_list my_http
allow_root yes

my_http
{
type http
addr.type IPv4
addr.port 8880
dir_root /www
}


Теперь мы готовы приступить к созданию непосредственно нашего приложения.

$ cd ..
$ mkdir www
$ cd www


Создаем и редактируем файл index.kl1. Любой файл с расширением .kl1 будет относиться к HTML/C приложениям.

~$ nano index.kl1


<%!
#include
time_t now;
%>
<html>
<head><title>Hello World</title></head>
<body>
<h1>Hello World</h1>
<br>
<%
now = time(0);
io_printf(out, "Time is now %sn", ctime(&now));
%>
</body>
</html>

Теперь вернемся к корневой директории проекта и создадим kloned сервер:

~$ kloned-build -o myapp userdata
~$ ./myapp -F

Сервер не запускается как демон, поэтому пользуем параметр -F. Теперь Вы можете посмотреть веб-аппликацию с помощью браузера @ http://localhost:8880/. Вы увидите текущую дату :) Это еще не все. Остановите аппликацию, которую Вы только то запустили, запустите ~$ apt-get install dpkg-dev, далее:


~$ dpkg-buildpackage -rfakeroot
~$ sudo dpkg -i ../myhello_0.1*deb

Вы только что установили .deb пакет, который содержит веб-аппликацию =)

Еще примеры

Если Вы хотитет увидеть больше примеров использования KLone'а, посетите сайт KoanLogic'а.