Pages

Showing posts with label .net framework. Show all posts
Showing posts with label .net framework. Show all posts

Thursday, May 6, 2010

C# 4.0 - Revolusi Baru di Dynamic Type Object

Belum lama ini gw baca artikel tentang C# 4.0 (terbaru saat tulisan ini dibuat, dengan IDE Visual Studio 2010 dan .NET FRAMEWORK 4.0). Terdapat beberapa feature baru dan perbaikan terhadap salah satu bahasa .Net yang powerful : C#


C# mengalami banyak perbaikan dan perubahan dari sejak pertama diperkenalkan tahun 2000. Pada saat itu C# 1.0 masih sederhana dan biasa.

Kemudian pada C# 2.0, diperkenalkan sebuah konsep penting mengenai "Generics", membawa kita kepada keamanan dalam membuat code (type-safety code), meningkatkan peforma, dan terlihat lebih elegan.

Lalu pada C# 3.0, diperkenalkan kepada revolusi baru mengenai LINQ (Language Integrated Query). Dengan LINQ, paradigma C# menjadi lebih fungsional (bukan sekedar baris perintah / imperative language). Revolusi ini membawa kepada multi paradigma.
Bagaimana dengan sekarang pada C# 4.0 ? Yup, revolusi "Dynamic Programming".
Jika anda pernah membaca / mengetahui / bahkan menguasai sedikit programming language seperti Phyton dan Ruby, maka anda lebih tau tentang apa itu Dynamic Programming.
C# dan beberapa bahasa lainnya seperti Java, adalah strong-type. Dengan adanya feature baru seperti ini, ada beberapa kelebihan yang bisa diperoleh, dan tentunya diimbangi oleh kekurangan yang ditimbulkan oleh revolusi ini.


Fitur baru ini (dynamic type object) sebenarnya mirip-mirip seperti var pada C# 3.0. Tetapi ada seidikit perbedaan disini.

1. var : masih bertipe strong type, artinya masih akan ada compile check. Keyword var ini hanyalah sebuah "pengenal" yang mengatakan bahwa nilai dari variable var tergantung dari apa yang ada di right-hand side (assignmentnya).

Contoh:  
- var ganteng = "Relatif";
- var jelek = 0;
Bisa diliat bahwa nilai var tergantung pada assignmentnya.. ganteng (string) dan jelek (integer).
var harus diassign dari awal dan akan terjadi compile error jika terdapat casting yang mustahil.
Selain itu juga untuk mendukung Anonymous Type pada C# 3.0
Contoh:
- var sesuatu = new { NIM = 1000778899 ; Nama = "Katsuki" };

2. dynamic
Nah pada dynamic, tidak akan terjadi compile error karena akan dijalankan pada saat runtime (sama seperti Ruby dan Phyton sebagai Dynamic Programming). Dengan kata lain, baru diketahui errornya pada saat runtime, bukan pada saat compile program.
Hmm.. hal ini sungguh berbahaya namun memiliki kelebihan jika digunakan tepat pada sasaran.. Apa itu contohnya? Well, sampai saat ini, gw sendiri belum pernah dapet case untuk menggunakan dynamic keyword.
(Maklum jam terbang masih rendah...)

Mao tau lebih banyak? Gunakan Search Engine favorit'mu. hehehe

Maaf kalo ada salah, cuman mao sharing yang saya tau :p

Saturday, May 1, 2010

Konsep Mendevelop Software Dengan Dot Net Framework [ Part 1 ]

Ini sekedar catetan gw aja. Tapi bagi yang membaca, diharapkan sudah mengerti konsep2 berikut, basic lah minimal:
- 3 Tier Architecture / MVC (Model - View Controller)
- Object Oriented Programming
- Dot Net Programming
- Object Relationship Model (ORM, menjadi nilai plus jika mengetahui konsep ini)


Sewaktu gw training dari bos gw, orang yg berpengalaman, mantan senior .net (dot net) developer di salah satu anak perusahaan Microsoft Singapore dan kantor pajak Singapore. Gw mendapat suatu pelajaran yang berharga dalam mendevelop software/system yang reliable, easy to maintain and secure.


Yup, konsep ini disebut sebagai konsep yang menggunakan dot net entity framework.
Hampir semua (bahkan semua) manipulasi database menggunakan perantara entity framework.
Dulu mah waktu belajar buat proyek dari software house gw mana blom tau apa2 soal develop project seperti ini, apalagi pas kuliah. hahaha.. Yang penting jadi!
Tapi disini, gw bisa belajar hal "wah" untuk level perusahaan yang masih "baru berdiri ini" ..
Katanya sih ini salah satu konsep develop project yang paling reliable selama dia research sampai saat ini.

Konsep 1 : Simple Architecture
Di dalam konsep ini, (sayang gambarnya gw blom dapet ) dibagi menjadi 3 layer (konsepnya 3-tier : Client - Application Server - Database)


1. Layer 1 : USER INTERFACE
Dalam UI ini, dibagi menjadi 2 komponen lagi:
  • User Interface (.aspx , .aspx.cs)
    Disinilah UI dari client, lokasi dari penempatan tiap2 User Control Form (UCF), proses menampilkan, redirect, validasi, dan semacamnya, kedalam 1 page aspx. Dengan adanya fitur master page yang built in dr ASP.NET, akan lebih memudahkan mendevelop aplikasi yang dinamis.
  • User Control Form (.ascx , ascx.cs)
    UCF, bisa disebut sebagai template dari form-form yang umum dan jarang berubah. Contoh: form register, forget password, login, dll. Jika ada perubahan page (UI), maka form ini tidak perlu berubah, dari segi struktur dan coding.
2. Layer 2 : OPERATIONAL
Dalam bagian ini, terdapat 2 komponen:

  • Business Facade Component (BFC)
    Di dalam komponen ini, dilakukan segala hal mengenai proses/logika bisnis. Biasanya untuk proses yang lebih kompleks dari DAC. BFC akan terhubung dengan DAC dan UI.
  • Data Access Component (DAC)
    Selain terhubung dengan BFC, DAC ini akan langsung berhubungan dengan ADO.NET / Entity Framework. Disinilah di define proses sederhana seperti CRUD (create, retreive, update, delete) yang terhubung ke ENTITY FRAMEWORK.
    Dalam Konsep-1 Simple Architecture, DAC juga dapat terhubung langsung dengan UI.
3. Layer 3 : ADO.NET / ENTITY FRAMEWORK
Disinilah tempat bernaungnya excact copy dari database (strukturnya). Di bagian ini lah, entity akan berhubungan langsung dengan database. Seluruh proses yang dilakukan oleh DAC, akan dilakukan/diterjemahkan oleh layer ini.

4. Layer 4 (hampir sama dengan layer 3) : DATABASE
Uda cukup mengertilah kalo ini, tempat database itu berada. No touch from other world :p
Only ENTITY FRAMEWORK can access this place :) :)

Tiap-tiap layer akan berhubungan melalui DataSet (kecuali layer 3 dan 4).
Pada layer 3 di define DataModel sebagai excact copy dari database (ORM - object relationship model), sehingga segala akses perubahan di DataModel (yang dilakukan dari DataSet di DAC) harus melalui layer 3 dahulu, baru dilakukan perubahan ke database.

Jika kita liat dari model seperti ini, maka security lebih terjamin dan software lebih mudah di maintenance. Dari segi peforma , juga sangat reliable, karena masing-masing layer bisa dibuat 1 server. Selain itu, programmer juga lebih dibebaskan dari SQL, karena menggunakan LINQ sebagai penggantinya.

Tentunya setiap konsep develop project memiliki kelebihan dan kekurangan:
- Kesulitan dalam melakukan SQL yang kompleks. Penanggulangannya menggunakan Stored Procedure.
Dan masih banyak lainnya yang belum gw temukan pada saat tulisan ini dibuat. hahaha

Bagian ke-2 adalah konsep yang lebih complex.
Tapi uda capek nih, lanjut di artikel selanjutnya aja :
Konsep Mendevelop Project Dengan Dot Net Framework ( Advanced ) [ Part 1 ]



Maaf kalo ada salah (terutama layernya), cuman mao sharing yang saya tau :p