Arsip untuk ‘Mono’ Kategori

h1

APAKAH MONO?

Agustus 5, 2008

APAKAH MONO?

Microsoft .NET merupakan suatu fenomena di era ini, kemudian mulai banyak developer menggunakannya untuk pengembangan aplikasi, tapi pertanyaan-nya adalah mungkinkah .NET bisa dikembangkan di Unixbase seperti Linux misalnya, akhirnya pertanyaan itu terjawab dengan adanya project Mono (http://www.mono-project.com) dan dotgnu (http://www.dotgnu.com) yang mendukung adanya .NET di Linux meskipun belum sebaik .NET framework.

A. Apakah Mono itu?

Mono merupakan platform development open source yang berbasiskan pada .NET framework, Mono.NET merupakan implementasi berdasarkan standart ECMA untuk C# dan CLI(Common Language Infrastructure). Untuk lebih jelas mengenai ECMA dapat dilihat di alamat : http://www.ecma-international.org (aku juga gak tau ECMA..he..he) Selain Novell, Proyek mono berkembang karena didukungan dari komunitas open source, sehingga Mono dapat menjalankan aplikasi .NET client server dan ini merupakan salah satu pilihan untuk mengembangkan aplikasi di lingkungan unixbase maupun windows. Mono mendukung banyak library salah satunya Microsoft .NET (termasuk ADO.NET,System.Windows.Forms dan ASP.NET), Lagipula,runtime Mono dapat diembeddedkan ke dalam aplikasi untuk memudahkan packaging dan pendistribusian.

Feature-feature yang terdapat pada mono :

  • Common Language Runtime (CLR) yang kompatibel dengan ECMA standard
  • C# compiler
  • class libraries
  • Tool-tool seperti disassembler, debugger, IDE dll.

B. Kenapa Mono?

Dengan Common Language Specification sebagai compiler mengakibatkan code antar bahasa dapat dipadukan secara bebas (Java,C,C#,C++,Python,dll), sedangkan .NET sendiri menggunakan intermediate compilation mechanism yang mengijinkan pembuatan binary cross-platform (gue juga bingung apa maksudnya). Mono merupakan implementasi dari .NET framework yang memberikan lingkungan development yang lebih baik untuk menulis aplikasi di Linux, serta mengijinkan developer untuk mendeploy/membuat .aplikasi-nya di Linux, Netware, MacOs dan MsWindows.

C. Mono/.NET Architecture

Architechtucre Secara Umum :

1. Class Library

Class library memberikan fasilitas yang luas untuk pengembangan aplikasi yang ditulis dengan dasar C#. dan class library ini dapat digunakan untuk language yang lain . Class library disusun ke dalam Namespaces, dan dideploy di shared libraries yang dikenal sebagai Assemblies (ini apa lagi???) ketika kita bicara mengenai .NET framework ,pada dasarnya kita merujuk ke class library ini.

-Namespaces

Namespaces adalah mekanisme untuk logical grouping seperti classes yang
disusun secara herarki . Ini untuk menghindari conflict penamaan. Struktur
tersebut dipisahkan dengan titik (.). Level paling tinggi dari .NET
framework adalah System. Di bawah System namespace kita akan
menemukan :

• System.IO
• System.Net
• System.Net.Sockets
• System.Reflection
• System.Threading
• Dan masih banyak yg laen (lihat di http://go-mono.com/class-status.html)

-Assemblies

Assemblies dapat dikatakan sebagai bentuk fisik dari class libraries yang
berupa .dll file ,tapi jangan bingung dengan ,dll-nya Win32 (makin bingung aja ).
Contohnya :

• Mscorlib.dll
• System.dll
• System.Data.dll
• Accessbility.dll
• masih banyak lagi?? (gak bisa nerusin, gue juga gak tau )

2. Common Language Infrastructure

Secara umum Common Language Runtime diimplementasikan dalam Mono executable. Runtime ini digunakan untuk mengeksekusi aplikasi .NET yang telah dikompilasi (.exe). Common Language Infrastructure telah ditetapkan oleh standart ECMA http://www.ecma-international.org/publications/standards/Ecma-335.htm

3. Common Language Specification

Distandarisasi oleh ECMA-335, untuk melihat spesifikasinya ada di alamat : http://www.ecma-international.org/publications/standards/Ecma-335.htm, chapter6, pada intinya berisi interface ke CLI.

D. Supported Platform

Mono telah mensupport system 32 bit dan 64 bit, serta beberapa Operating system diantaranya :

  • Linux
  • Mac Os X
  • Sun Solaris
  • BSD-Family
  • Microsoft Windows
h1

Koneksi Mono ke MySQL

Agustus 5, 2008

Koneksi Mono ke MySQL

Mono juga mendukung beberapa Database :

  • MySQL
  • ODBC
  • SQLClient
  • Oracle
  • PostgreeSQL
  • FireBird dan Interbase
  • IBM DB2
  • OLE DB
  • SQLite
  • Sybase
  • TDS Providers
  • TDS Generic

Tools Mono yang berguna ketika bekerja dengan ADO.NET :

  • sqlsharp.exe (SQL#), command Line query tool termasuk dengan Mono untuk
    memasukkan dan mengeksekusi SQL statements.
  • Xsd.exe, XML Schema Definition tool

MySQL :

Disini akan hanya (yang laen blom coba) diberikan contoh untuk koneksi MySQL .

Yang perlu dipersiapkan download MySQL Connector/NET dari :

http://dev.mysql.com/downloads/connector/net/

Note: mysql-connector-1.0.5 tidak bekerja untuk System non Windows, yang support yaitu mysql-connector-1.0.7 (support untuk Mono di Linux maupun Windows).

Untuk melihat support untuk MySQL Connector/NET di :

http://dev.mysql.com/support/

Connection string format :

• ConnectionString format :

“Server=hostname;” + “Database=database;” + “User ID=username;” +
“Password=password;” + “Pooling=false”

Sebelum melakukan koneksi kita perlu install mysql connector (MySql.Data.dll) ke GAC dengan cara :

cd ke_directori MySql.Data.dll assembly
gacutil -i MySql.Data.dll

misal :

amru@hikari:~/sqlcon/bin/mono-1.0/release$ gacutil-i MySql.Data.dll

MySql.Data installed into the gac (/home/amru/mono-1.1.13.2/lib/mon
o/gac)

amru@hikari:~/sqlcon/bin/mono-1.0/release$

  1. Buat data base dengan nama APP_DB

    $ mysql -uroot
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 1 to server version: 3.23.54
    ype ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.

    mysql> create database APP_DB;
    Query OK, 1 row affected (0.49 sec)

  2. Buat user dan hak akses

    mysql> GRANT ALL PRIVILEGES ON APP_DB.* TO amru@localhost IDENTIFIED
    BY ’amru’;
    Query OK, 0 rows affected (0.00 sec)

    ysql> GRANT ALL PRIVILEGES ON APP_DB.* TO amru@localhost.localdomain
    IDENTIFIED BY ’amru’;
    Query OK, 0 rows affected (0.13 sec)

  3. Login dengan user danbuat tabel employee (firstname varchar(32),lastname varchar(32))

    $ mysql -uamru -pamru APP_DB
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 6 to server version: 3.23.54
    Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.

    mysql> create table employee (firstname varchar(32),lastname
    varchar(32));
    Query OK, 0 rows affected (0.00 sec)

  4. 4. Kemudian insert data kedalam tabel
    mysql> INSERT INTO employee (firstname , lastname)
    values(‘yuda’,’nugrahadi’);
    Query OK, 1 row affected (0.00 sec)

setelah database dan table dibuat kemudian buat contoh code berikut untuk mencoba
koneksi ke mysql C# Example

using System;
using System.Data;
using MySql.Data.MySqlClient;

public class Test
{

public static void Main(string[] args)
{

string connectionString =
“Server=hikari;” +
“Database=APP_DB;” +
“User ID=amru;” +
“Password=amru;” +
“Pooling=false”;
IDbConnection dbcon;
dbcon = new MySqlConnection(connectionString);
dbcon.Open();
IDbCommand dbcmd = dbcon.CreateCommand();
// requires a table to be created named employee
// with columns firstname and lastname
// such as,
// CREATE TABLE employee (
// firstname varchar(32),
// lastname varchar(32));
string sql =
“SELECT firstname, lastname ” +
“FROM employee”;
dbcmd.CommandText = sql;

IDataReader reader = dbcmd.ExecuteReader();
while(reader.Read()) {
string FirstName = (string) reader["firstname"]
string LastName = (string) reader["lastname"];
Console.WriteLine(“Name: ” +
FirstName + ” ” + LastName);

}

// clean up
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbcon.Close();
dbcon = null;
}

}

• Building C# Example:
• Simpan C# Example dengan nama Test.cs

$mcs Test.cs -r:System.Data.dll -r:MySql.Data.dll

option -r merupakan option untuk referensi assembly, untuk option-option yang lain dapat dilihat dengan mcs –help.

• eksekusi Test.exe :

$mono Test.exe

h1

INSTALASI MONO

Agustus 5, 2008

INSTALASI MONO

1. Packet Management System dan instalasi

Untuk pemilihan paket Mono akan berbeda-beda tergantung dari system yang kita gunakan. Banyak System Unix (Linux,MacOs, dan sejenisnya) menggunakan management System seperti RPM, Red Carpet, Yum, Deb, Portage, Fink, DarwinsPorts.

Disini saya membahas instalasi RPM dan binary(.bin) karena kedua paket ini mudah untuk diinstall (jujur aja yang laen blom nyoba..he..he):

Untuk mendapatkan paket Mono dapat di download dari : http://www.mono-project.com/Downloads

-RPM

Contoh distribusi Linux yang menggunakan RPM : RedHat, Novell SUSE dan Mandriva,dll. Ketika menginstall aplikasi via RPM maka system management paket jenis ini akan mengecek apakah semua dependencies (ketergantungan terhadap paket lain) telah tersedia (terinstall).Misalnya saja, Gtk# bindings membutuhkan library Gtk+ , sehingga system RPM akan mengecek apakah Gtk+ telah terinstall. Seperti halnya juga ketika RPM digunakan untuk menghilangkan/uninstall suatu pake (application maupun library) ada ketergantungan terhadap paket lain. Misalnya ketika kita mau menghilangkan paket Gtk+, maka paket Gtk# akan dihilangkan juga. Paket akan dipisahkan berdasarkan fungsinya, lebih baik biar aman down load aja semua paket. Jika kita berexperimen untuk pertamakali (aku juga beginner), kita sebaiknya download zip filenya yang telah berisi semua paket (mono-all.zip).

Klo udah didownload trus install deh, tapi diunzip dulu :

$ unzip mono-all.zip

Install via RPM membutuhkan akses sebagai root :

# rpm –Uhv *rpm / lebih spesifik # rpm –Uhv mono-all.zip

Beberapa opsi RPM :

o Untuk install (update rpm)

# rpm –Uvh <file-rpm>

o Untuk mengecek jika telah terinstall

$ rpm –q <nama-rpm>

o Untuk mendapatkan informasi file paket RPM

$ rpm –qpi <file-rpm>

o Untuk mendapatkan informasi paket rpm yang telah terinstall

$ rpm –qi <nama-rpm>

o Untuk mendapatkan daftar dari sebuah paket RPM

$ rpm –qip <file-rpm>

Klo udah didownload trus install deh, tapi diunzip dulu :

$ unzip mono-all.zip

Install via RPM membutuhkan akses sebagai root :

# rpm –Uhv *rpm / lebih spesifik # rpm –Uhv mono-all.zip

Beberapa opsi RPM :

o Untuk install (update rpm)

# rpm –Uvh <file-rpm>

o Untuk mengecek jika telah terinstall

$ rpm –q <nama-rpm>

o Untuk mendapatkan informasi file paket RPM

$ rpm –qpi <file-rpm>

o Untuk mendapatkan informasi paket rpm yang telah terinstall

$ rpm –qi <nama-rpm>

o Untuk mendapatkan daftar dari sebuah paket RPM

$ rpm –qip <file-rpm>

-Binary

Download dulu paket mono-1.1.13.2-linux-installer.bin, keuntungan menggunakan Mono binary installer adalah akan bekerja disemua Distribusi Linux dan untuk menginstallnya tidak perlu sebagai root. Langkah pertama untuk installasi adalah menambah executable permissions :

$ chmod +x mono-1.1.13.2-linux-installer.bin

Kemudian tinggal click dua kali/satu kali (tergantung Desktop Environment yang digunakan) pada icon mono-1.1.13.2-linux-installer.bin ataupun dengan menggunakan commandline :

$ ./mono-1.1.13.2-linux-installer.bin

Kemudian ikuti petunjuk selanjutnya tinggal next..next pokoknya full gui deh. Habis instalasi selesai maka akan muncul icon mono pada desktop. Now let’s get it on he..he….

Setelah instalasi, agar proses compile dan execute dapat dilakukan dari directory manapun maka set path dulu, buka file /etc/profile dengan text editor kesukaan kita kemudian tambahkan baris berikut :

/directory-tempat-menyimpan-mono/mono-1.1.13.2/bin

Misal tempat menyimpan mono /home/amru/mono-1.1.13.2/

# /etc/profile: This file contains system-wide defaults used by
# all Bourne (and related) shells.

# Set the values for some environment variables:
export MINICOM=”-c on”
export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man
export HOSTNAME=”`cat /etc/HOSTNAME`”
export LESSOPEN=”|lesspipe.sh %s”
export LESS=”-M”

# If the user doesn’t have a .inputrc, use the one in /etc.
if [ ! -r "$HOME/.inputrc" ]; then
export INPUTRC=/etc/inputrc
fi

# Set the default system $PATH:

PATH=”/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/home/amr
u/mono-1.1.13.2/bin” (baris yang ditambahkan)

# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are
in
# the $PATH. Some means of connection don’t add these by default (sshd
comes
# to mind).
if [ "`id -u`" = "0" ]; then
echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
if [ ! $? = 0 ]; then
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
fi
fi

kemudian logout dan login lagi gak perlu di restart gitu loh.

Komponen-komponen yang terpaket dalam Mono installer :

  1. Mono Runtime : Termasuk didalamnya compiler untuk C# language, ECMA-compatible runtime engine (Common Language Runtime, atau CLR ), dan class library.
  2. ADO.NET : Termasuk support untuk MySQL, SQLite, IBM DB2, Sybase, PostgreSQL dan Oracle database.
  3. ASP.NET : Web development termasuk XSP (ya mirip-mirip IIS-nya Windows gitu loh)
  4. GTK# : Librarinya memungkinkan kita untuk membangun native Gnome secara penuh menggunakan Mono dan juga termasuk support untuk membangun user interface dengan menggunakan Glade interface builder.
  5. Mono Develop : IDE (Integrated Development Environment) untuk membangun Mono dan .NET (ya mirip-mirip sharp develop)
  6. Mono Doc : Dokumentation browser khususnya untuk Mono dan .NET
  7. IKVM : Java Virtual Machine untuk .NET \
  8. Windows Forms : merupakan release dari System.Windows.Forms

perlu diketahui juga bahwa monodoc dan monodevelop tidak bisa berjalan disemua distro tergantung versi dari gtk+nya, selain kedua tool tersebut tetep bisa jalan dengan normal. Gak usah khawatir monodelopkan cuman IDE kita bisa pake text editor yang udah ada di Linux kaya vi,kate,kwrite,dll.

h1

IDE UNTUK MONO

Agustus 5, 2008

IDE UNTUK MONO

Banyak sekali tool-tool untuk pengembangan bahasa C#, mulai dari text editor biasa sampai Integrated Development Environment yang kompleks.

-MonoDevelop

MonoDevelop merupakan project untuk membuat IDE untuk programming .NET ditulis dengan menggunakan C#, menggunakan Gtk# platform. Ini masih dalam pengembangan dan sangat berguna meskipun belum stabil.

-c

Emacs (http://www.gnu.org/software/emacs/emacs.html) dan Vim adalah text editor untuk tujuan umum, bukanlah IDE yang dibuat untuk pengembangan .NET dan C#, tetapi keduanya dapat digunakan untuk menulis berbagai bahasa. Untuk Emacs, jika kita ingin menggunakannya untuk bener-bener mode C# maka tersedia di http://www.cybercom.net/ yang mempunyai fasilitas untuk menghandle syntax
dengan pemisahan warna. Rakomendasi yang laen dapat juga menggunakan JEdit : http://www.jedit.org/

-Eclipse dengan Mode C#

Proyek Eclipse (http://eclipse.org) kita tau merupakan IDE untuk Java, tetapi mempunyai feature yang dapat digunakan untuk semua bahasa dengan memasang plugin yang sesuai.

h1

CONTOH PROGRAM MONO

Agustus 5, 2008

CONTOH PROGRAM MONO

1. Assemblies

Mono dan .NET meng-compile source code menjadi “assemblies”. Assemblies dapat dikatakan sebagai file .class di java, berisi language independent (berdiri sendiri) yang disebut CIL (Common Intermediate Language). Karena assemblies adalah bahasa yang berdiri sendiri, jadi tidak masalah bahasa apa yang kita gunakan untuk membuatnya. Assemblies yang dibuat dengan C# dapat dicampur dengan assemblies yang dibuat dengan VB.NET, Java (menggunakan IKVM), atau bahkan dengan bahasa lain.

Tetapi, tentu saja assemblies perlu untuk dicompile lagi ke dalam native code untuk dapat di-run. Penting untuk dibedakan dua jenis compilations yang terdapat pada aplikasi Mono yaitu : dari source code ke byte code, dan dari byte code ke native machine code.

2. Classes

Classes di Mono dapat dikatakan sama dengan classes java, C++, dan bahasa object-oriented yang lain, dimana terdiri dari constructors, methods, dan field, selain itu juga terdapat properties dan events.

Classes dikelompokkan kedalam namespaces (equivalent dengan package di java). Namespace yang paling atas/tinggi di class library adalah System. Nama penuh dari sebuah class adalah namespace plus short name, misal full name dari class Stream di System.IO adalah System.IO.Stream.

3. Contoh program menampilkan pesan di console :

// Hello.cs

using System;

class Hello {

static void Main() {

Console.WriteLine(“Hello, World”);

}

}

Kemudian compile dengan mcs :

$ mcs Hello.cs

dan akan didapat file Hello.exe run dengan mono :

$ mono Hello.exe

Hasilnya ….

Hello, World

h1

ASP.NET Dengan MONO

Agustus 5, 2008

MONO

Mono memungkinkan pengguna Linux menjalankan aplikasi ASP.NET dan Web services tanpa merekompilasi software mereka.

Kota Munich, sebagai contoh, menggunakan Mono untuk memindahkan 300 server yang menjalankan ASP.NET di Windows ke sistem operasi Linux, tanpa harus mengkompilasi ulang kode program aplikasi. Munich adalah kota terbesar ketiga di Jerman yang sedang dalam proses memindahkan jaringan kota yang terdiri 14000 komputer ke Linux.

Kode Mono beta akan jalan tidak hanya di Linux, tetapi juga jalan di Windows, Mac OS dan NetWare.

Versi final Mono rencanya akan dirilis pada akhir Juni, dan Novel merencanakan untuk mengikutkan software tersebut pada rilis Suse linux desktop yang diharapkan diluncurkan bulan Oktober, juga akan diikutkan pada versi Enterprisenya.

Detil Mono Beta 2

Mono Beta 2 telah mengikutkan C# compiler, implementasi dari Common Language Infrastucture dan API-API penting seperti GNOME, ASP.NET, ADO.NET serta komponen penting lain.

Mono menyediakan lingkungan bagi developer untuk membangun aplikasi rich client, web services, server-side dan mendeploy pada Linux, Solaris, Windows, Mac OS, dan berbagai sistem Unix dengan variasi arsitektur.

Pengguna MONO :

Mono, telah dapat menjalankan banyak software .NET yang ada

Mono digunakan internal pada Novell untuk membangun:

  • iFolder 3.0: a file system that provides synchronization, peer-to-peer sharing and metadata handling.
  • Beagle/Dashboard: search tools for the desktop.
  • F-Spot: a photography management application.
  • Extensibility for the Nautilus file manager and hooks into iFolder.

Di luar Novel, Mono diadopsi vendor seperti:aplikasi Vault di Linux oleh Source Gear, engine ASP.NET untuk database OpenLink Virtuoso, Voelcker Informatik menggunakan untuk menyediakan layanan bagi kota Munich, dan Mainsoft menggunakannya sebagai fondasi untuk Visual Mainsoft for J2EE. Selain itu juga digunakan oleh komunitas pada berbagai proyek:

  • MonoDevelop an IDE based on SharpDevelop adapted to Linux.
  • The Nemerle functional language, and
  • The Gnome Fax program.

Walau versi Mono kali ini secara signature sama dengan .NET 1.1 tetapi tidak semua fasilitas dari .NET 1.1 terdapat pada versi Mono. Tetapi sebagian besar terdapat juga pada Mono, hanya saja kemampuan berikut ini tidak didukung:

  • COM support of any kind in Unix or Windows.
  • EnterpriseServices is only a set of stub routines.
  • Windows.Forms is only available as a preview, and it is not meant for production use.
  • Code Access Security (CAS) is not supported: missing in the runtime and class libraries.

Just like any Beta release, we welcome any bug reports and suggestions.

  • Core ECMA CLI-based virtual execution system.
  • Java VM: allows Java and .NET code to run side-by-side. It contains the latest release of IKVM.
  • Optimizing compiler for x86, PowerPC, SPARC and S390 based architectures.
  • Just-in-Time (JIT) and Ahead-of-Time (AOT) compilation modes supported.
    A new, faster interpreter for the above platforms and also for StrongARM and HPPA.
  • Support for Linux, MacOS X, Windows, Solaris and HP-UX operating systems.
  • C# 1.0 compiler.
  • Development toolchain.
  • API documentation browser, with Wiki-like capabilities.
  • Embeddable runtime: make your application scriptable and extensible with C# or any other .NET language using our embedding API.
  • Mono Stack Microsoft .NET Compatible Stack
  • Gtk# for GUI development.
  • Database providers for: Postgres, MySQL, DB2, Sybase, Sqlite, Oracle.
  • LDAP libraries (Novell.LDAP).
  • Complete cryptographic stack.
  • Apache module integration.
  • Cairo graphics integration.
  • ASP.NET Web Services.
  • ASP.NET Web Forms.
  • Binary and SOAP remoting.
  • ADO.NET: connectivity to SQL Server and other databases.
  • System.Drawing API.

Selain itu terdapat juga preview dari fasilitas Mono 1.2 seperti berikut:

  • Preview C# 2.0 compiler with generics support (gmcs).
  • Generics-enabled virtual machine.
  • System.Windows.Forms.
  • Mono Basic compiler.

Gtk# juga menjadi bagian dari rilis ini, yaitu .NET binding untuk Gtk+ toolkit. Dengannya kita dapat membangun aplikasi Gnome native menggunakan Mono dan mendukung untuk user interface dibangun dengan Glade interface builder.

Menurut kesaksian yang ada, GTK# menyediakan produktifitas tinggi dibanding GTK+ atau Java Swing. Aplikasi yang dibangun dengan GTK# berjalan pada berbagai platform. GTK# merupakan proyek utama dari Mono untuk aplikasi gui.

MonoDevelop

Pada akhir 2003, sejumlah developer dari komunitas Mono memigrasikan SharpDevelop, yaitu opensource IDE dari SWF pada Windows ke GTK# di Linux.

Link Sumber:

Novel merilis First Mono Beta

Go-Mono