Arsip untuk ‘.Net Linux’ 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