Minggu, 12 Juli 2015

Cookie dan Session

Pemograman Web 1 (Catatan pertemuan 13 dan 14)

Cookie adalah sebuah data yang dikirim dari web server ke web browser, lalu cookie akan disimpan di komputer client.

Batasan Cookie :
- Suatu client hanya dapat menampung 300 cookie
- Suatu server hanya bisa mengirim 20 cookie ke suatu client
- Sebuah cookie memiliki ukuran maksimal 4 kb, sehingga total space hard disk yang digunakan cookie hanya mencapat 1,2 Mb.
- Sebuah cookie hanya dapat dibaca dan diubah oleh server dari domain dimana cookie tersebut berasal.
Sebuah cookie hanya dapat berisi data berupa teks dan tidak bisa berupa data biner.

Cookie dapat digunakan untuk :
- Autentifikasi user saat login, sehingga ketika kita membuka website itu lagi, maka kita dapat lansung masuk tanpa login kembali.
- Penggunaan pada saat membeli barang di ecomerce.

Pembuatan Cookie:
1. Sebuah cookie dapat diciptakan dengan menggunakan kelas cookie:
==> Cookie nama_objek = new Cookie("nama_cookie","nilai_cookie");

2. Membentuk atau memanggil objek cookie:
==> response.addCookie(nama_objek)

3. Memanggil nilai cookie
==> Cookie nama_array[] = request.getCookie();

4. Mengeset batasan cookie:
==> nama_objek.setMaxage(int usia);

5. Menghapus Cookie:
==> nama_objek.setMaxAge(0);



Session adalah fasilitas penyimpanan pada server untuk mengidentifikasi clien. Session dikirim dari server ketika client melalukan request, session disimpan disisi server. Pada saat request selanjutnya, client akan tetap berada pada session yang sama selama session tersebut valid.

Pembuatan Session:
1. Menciptakan session baru:
==> HttpSession session = requesr.getSession()

2. Untuk mengeset data disession
==> session.setatribute(namasession, value);

3. Mengambil dara session
==> session.getAtribute(namasession);

4. Menghapus session
==> session.removeAtribute(namasession);
session.invalidate();

Jadi, perbedaan antara session dengan cookie:
1. Session: nilai variabel disimpan disisi server sedangkan Cookie: nilai variabel disimpan disisi client.
2. session: ketika browser ditutup maka session akan hilang, sedangkan Cookie: browser ditutup cookie tidak hilang selama waktu belum habis


Sabtu, 27 Juni 2015

Java Bean

Pemograman Web 2 Pertemuan 11

Java bean adalah komponen dalam java yang bersifat reusable. Java bean digunakan untuk mengelola antara applikasi client dan komponen yang berjalan pada J2EE server atau antara komponen server dan database.

Pada konsep MVC, java bean ini dikenal dengan Model. Pada dasarnya java bean dapat dibuat dengan cara yang sama dengan pembuatan class java standar, tetapi class java bean memiliki beberapa ketentuan khusus.

Ciri-ciri class java bean:
1. Class harus memilki constructor tanpa parameter
2. Terdapat method setter dan getter untuk mengakses setiap propertiesnya
3. Modifier yang digunakan adalah private.

Langkah-langkah membuat class java bean:
1. mendefinisikan variabel dalam bean yang akan dibuat. Variabel ini tidak boleh dideklarasikan secara public.
seperti : private string nim;

2. Masing masing variabel dibuat method set dan get nya agar dapat dipanggil di class lain.
seperti: getNim() dan setNim();

Tag-tag yang digunakan untuk memanggil class bean adalah:
1. Memanggil javabean dalam halaman jsp
<jsp:usebean id="name" class="package.Class"/>

seperti contoh:
<jsp:usebean id="mhs" class="mahasiswaku.Mahasiswa"/>
Maksudnya, menggil class javabean dengan nama mhs yang terletak di package mahasiswaku pada kelas Mahasiswa.

2. Mengambil nilai property
<jsp:geProperty name="mhs" property="nim"/>
Maksudnya, mengambil nilai property dari javabean bernama mhs yang diambil nim nya.

3. Mengeset nilai property
<jsp:setProperty name="mhs" property="nim" value="1357301050"/>
Maksudnya, mengeset variabel nim dengan nilai 1357301050.


JSTL

Pemograman Web Pertemuan 12

JSTL atau JSP Standard Tag Library adalah library untuk JSP yang berisi tag tag standard.

Tujuam dari JSTL:
1. Mempermudah merancang halaman JSP
2. Membuat halaman JSP yang lebih rapi

JSTL memiliki beberapa tag, antara lain:
1. Core : http://java.sun.com/jsp/jstl/core, prefix c = untuk pengolahan skrip mendasar seperti struktur juga didalamnya termasuk iterasi dan kondisi
2. Formatting : http://java.sun.com/jsp/jstl/fmt = untuk internasionalisasi sehingga web yang dihasilkan dapat diakses dengan banyak bahasa
3. SQL : http://java.sun.com/jsp/jstl/sql, prefix sql = kumpulan tag untuk meproses data dalam database
4. XML : htttp://java.sun.com/jsp/jstl/xml, prefix x = berisi kumpulan tag untuk mengolah dokumen xml
5. Function : http://java.sun.com/jsp/jstl/fn, prefix fn

Tag-tag umum dalam library Core:
1. <%@taglib url:"http://java.sun.com/jsp/jstl/core" prefix="c" %>
maksudnya adalah directive untuk kita memanggil tag tag core jstl
2. <c:set var="nama" value="kiki" />
maksudnya adalah kita mengeset variabel nama dengan nilai kiki
3. <c:out value="${nama}"/>
maksudnya untuk menampilkan isi dari variabel nama

Tag-tag untu kondisi dalam jstl :
1. <c:choose>
2. <c:when>
3. <c:otherwise>
4. <c:when>

contoh penggunaan tag kondisi jstl:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:choose, c:when and c:otherwise Tag Example</title>
</head>
<body>
<c:set var="number1" value="${222}"/>
<c:set var="number2" value="${12}"/>
<c:set var="number3" value="${10}"/>
<c:choose>
 <c:when test="${number1 < number2}">
     ${"number1 is less than number2"}
 </c:when>
 <c:when test="${number1 <= number3}">
     ${"number1 is less than equal to number2"}
 </c:when>
 <c:otherwise>
     ${"number1 is largest number!"}
 </c:otherwise>
</c:choose>
</body>
</html>
 
c-choose-example 

Tag-tag untuk pengulangan dalam jstl:
1. <c:forEach> : untuk pengulangan dengan number
2. <c:forToken> : untuk pengulangan dengan string yang menggunakan pembatas

contoh tag perulangan jstl:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Example c:forEach tag in JSTL</title>
</head>
<body>
<c:forEach var="counter" begin="1" end="10">
 <c:out value="${counter}"/>
</c:forEach>
</body>
</html>
 
c-forEach-example 
 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Example c:forTokens tag in JSTL</title>
</head>
<body>
<c:forTokens items="www.beginnersbook.com" delims="." var="site">
 <c:out value="${site}"/>
</c:forTokens>
</body>
</html>






c-forTokens-example

Kamis, 28 Mei 2015

JSP

Pemograman Web 1 pertemuan 9

JSP adalah suatu teknologi web berbasis bahasa pemograman java dan berjalan di platform java, serta merupakan bagian dari teknologi J2EE.

Cara kerja JSP :
1. Pemakai yang ingin mengakses halaman web mula mula mengirimkan permintaan halaman web melalui protokol HTTP dalam bentuk JSP.
2. Permintaan akan disampaikan ke Web server.
3. Web server akan mengambil dokumen JSP dan mengirimkan ke JSP Servlet Engine,

Pada tahap web server mengambil dokumen JSP, ada pemogresan kode kode JSP termasuk melakukan pengompilasian dan membentuk kode HTML. Kode HTML ini disampailan oleh web server ke klien yang memintanya. Kode HTML ini selanjutnya diproses oleh browser sehingga user bisa memperoleh informasi halaman webnya.

Detail pemogresan oleh JSP Servlet engine adalah :
  • Melakukan pemilahan atau parsing kode JSP
  • membangkitkan kode sumber Servlet
  • mengkompilasi kode sumber servlet menjadi sebuah kelas
  • membuat instant servlet
  • memberikan keluaran servlet ke web server.

Kelebihan JSP:
  • JSP dapat berjalan pada semua platform
  • JSP cenderung memiliki performasi yang lebih baik, karena JSP dilakukan kompile terlebih dahulu menjadi servlet yang berupa bytecode
  • Didukung bahasa java yang memiliki kemampuan OOP dan tingkat reusability yang tinggi
  • Dapat menggunakan javabean untuk mengaksulasi kode kode java.

Kekurangan JSP :
  • Proses kompile halaman JSP mengakibatkan proses loading yang lama sehingga menyebabkan kecepatan proses JSP secara menyeluruh berkurang.

Elemen pada JSP :
1. Directives : merupakan suatu petunjuk bagi web container tentang sesuatu yang harus dilakukan pada saat container melakukan compile halaman JSP
Sintaks :
<%@ namaDirective attribute1=”value1” attribute2 =”value2” %>
2. Scripting Elements : tag untuk menuliskan program java
Sintaks :
<%! Deklarasi variable dan method %>
3. Action : spesial tag yang memberikan pengaruh pada halaman JSP pada saat runtime
Sintaks :
Untuk beanDetail berupa salah satu dibawah ini :
class = “className”
class = “className” type = “typeName”
beanName = “beanName” type = “typeName”
type = “typeName”

Scripting Element terbagi atas tiga:
• Scriplet, berisi statement-statement yang merupakan logika dari suatu proses.
Contoh :
<% System.out.println(“Test Scriptlets”); %>
• Deklarasi, gunanya untuk mendeklarasikan variabel atau method.
Contoh :
<%! int i = 10 ; double x = 5.0 ; %>
• Ekspresi, berguna untuk menampilkan nilai dari suatu variabel atau method.
Contoh :
<%
String oAnalisa=oAnalisaReview.getAnalisa(oIDK);
%>

Referensi :
http://akademiainformatika.blogspot.com/2014/05/blog-post.html

Database JDBC dan ODBC

Pemograman Web 1 Pertemuan 8

Pada pertemuan kali ini, kelompok yang presentasi membahas tentang dua konsep tentang koneksi database atau interface database yang dapat digunakan.

A. JDBC

JDBC atau Java Database Connectivity adalah sebuah API atau interface database yang dibangun untuk platform java.

JDBC adalah spesifikasi standar dari javaSoft APi yang memungkinkan program Java untuk mengakses sistem database managemen. JDBC menyediakan methods untuk melakukan query dan modifikasi data RDBMS seperti Oracle, SQL server, MySQL, dll menggunakan driver manafer.

Komponen JDBC 

Berikut komponen penting dari JDBC:
  •  JDBC-API : menyediakan fasilitas untuk mengakses database dari program berbahasa java. melalui komponen ini user dapat melakukan proses query dan perubahan data dalam database.
  • JDBC Driver Manager : komponen kelas utama yang mendefenisikan objek yang mengkoneksikan aplikasi java ke JDBC driver. Komponen ini berfungsi untuk mengatur beberapa tipe JDBC database driver yang berbeda.
  • JDBC Test Suite : komponen ini memastikan JDBC driver dapat menjalankan program user dan berguna dalam melakukan testing aplikasi.
  • JDBC-ODBC Bridge : database driver yang menggunakan ODBC driver untuk koneksi ke database serta untuk tranlasi dari JDBC pemanggilan method ke ODBC pemanggilan fungsi dan mengimplementasikan JDBC yang didukung oleh ODBC.

Tipe tipe JDBC :
1. JDBC ODBC Bridge
 

Fungsi : translasi query dari JDBC ke ODBC query 
Keunggulan : semua database yang didukung oleh ODBC dapat diakses
Kelemahan: performance overhead, ODBC driver harus diinstall di semua client, dan dibutuhkan client side software.

2. Java to Native API


Fungsi : konversi pemanggilan JDBC ke client API untuk database
Keunggulan: performa lebih baik dari pada tipe 1
Kelemahan : Vendor client library harus diinstall di client, tidak dapat digunakan di internet karena membutuhkan client side software, dan tidak semua database memberikan client side library.

3. Java to Network Protocol or All java Driver

 
Fungsi : menggunakan pendekatan 3tier komunikasi, vendor independet.
Keunggulan : tidak membutuhkan installasi pada client side, dan middleware server dapat memberikan fungsi tambahan dalam hal caching, auditing dll dan dapat digunakan diinternet
Kelemahan : membutuhkan program bersifat database spesifik untuk middle tier dan extra layer dapat menyebabkan time bottkeneck.

4. Java to Database Protocol


Fungsi : melakukan komunikasi lansung dengan database melalui koneksi socket, driver berfungsi mengubah pemanggilan JDBC ke database protokol lansung, dan dapat diimplementasi sepenuhnya dalam java
Keunggulan : Performa cenderung meningkat, tidak melakukan tranlasi ke ODBC, tidak mengunakan client API, dan tidak menggunakan middleware layer.
kelemahan: pada sisi client, driver masing masing database harus terinstal.

Langkah langkah mengkoneksikan JDBC:
1. Mengimport package java.sql

java.sql.Connection
java.sql.DriverManager
java.sql. Statement
java.sql. ResultSet

2. Memanggil driver JDBC

Class.forName(namaDriver);
atau
Class.forName(namaDriver).newInstance()

3. Membangun Koneksi

try {
String url = “jdbc:mysql://localhost:3306/Dbase”;
String user = “adi”
String password “ternate”

Connection koneksi = DriverManager.getConnection(url,user, password);
System.out.prinln(“Proses apabila koneksi sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagaldilakukan”);
}

4. Membuat statement

Statement stat = Connecetion.createStatement();

5. Melakukan query

String sql = "DELETE FROM data_siswa WHERE kode =“1234”;
PreparedStatement stat = konek.prepareStatement(sql);
       stat.executeUpdate();
6. Memproses Hasil
7. Menutup koneksi

statement.close();
connection.close();

B. ODBC

ODBC atau Open Database Connectivity adalah interface database yang dibangun oleh perusahan windows.

JDBC API memiliki beberapa komponen utama yang berhubungan dengan mekanisme pengolahan data baik itu untu berkomunikasi dengan database server, melakukan koneksi, mengirim perintah SQL, mendapatkan data, menutup koneksi, serta penanganan error yangg mungkin terjadi dalam pengolahan data.  Komonen-komponen tersebut adalah sebagai berikut:
  • Driver adalah komponen untuk menangani komunikasi database server
  • Driver Manager adalah komponen untuk menangani obyek Driver dimana obyek Driver Manager juga mengabstraksi detail dari proses kerja obyek Driver
  • Connection adalah komponen untuk merepresentasikan koneksi secara fisik ke Database
  • Statment adalah komponen untuk mengirim perintah-perintah SQL ke database
  • ResultSet adalah komponen untuk menyimpan data yang didapat dari database setelah perintah SQL dijalanan dengan menggunakan komonen Statment
  • SQL Exception adalah komponen untuk menangani kesalahan-kesalahan atau error yang mungkin terjadi dalam pengolahan database.



    Referensi :
    https://dklp02j2ee11.wordpress.com/2011/11/16/pengertian-jdbc/
    http://meldhycom.blogspot.com/2013/05/membuat-database-dengan-odbc-ms-access.html

HTTP Request dan HTTP Respon

Pemograman Web 1 Pertemuan 7

Pada catatan pw kali ini, kita akan membahasa tentang bentk komunikasi antara client dan server yaitu request dan respond.

HTTP itu adalah suatu bentuk protokol umum, yang digunakan oleh server dan client untuk berkomunikasi di dunia web. Komunikasi ini terjadi dalam bentuk request dan response. Jadi, kalo sang client merequest, maka sang server akan merespon.

Respon apa yang akan diberikan oleh sang server, sangat bergantung dari request (permintaan) dari sang client.

Klien dan Server Web

Siklus hidup dari permintaan HTTP umumnya terlihat seperti ini:
  1. Seorang pengguna mengunjungi URL dari sebuah situs web.
  2. Hal ini menciptakan permintaan yang diarahkan ke web server melalui internet (jaringan DNS itu, router dan switch) melalui HTTP (Hypertext Transfer Protocol).
  3. Web server menerima permintaan HTTP dan merespon pengguna dengan halaman web (atau isi) yang diminta.


1. HTTP Request

Request adalah permintaan dari client yaitu web browser seperti Firefox, Chrome dll ke server seperti web server.

Contoh HTTP request :
GET /kategori/desain/blah-blah-blah/ HTTP/1.1
Host: www.namasitus.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=vj2r4q43ibr2t5u5djq1q73vt0
Pragma: no-cache
Cache-Control: no-cache
Stuktur dan method request
  • Get : Bagian method untuk menandakan jenis request yang digunakan..
  • Path : merupakan bagian dari URL yang diambil setelah nama domain
  • Host : berisi host dan port yang digunakan pada original URL
  • Accept : berisi informasi MIME atau tipe yang akan dikenali oleh browser
  • Accept-Encoding : berisi informasi encoding yang dikenali oleh browser
  • Connection : memberitahu ke server apakah client dapat menghandle HTTP connections
  • Cookie : mengirimkan kembali cookie ke server

 Transaksi HTTP
  

2. HTTP Respons

Setelah browser mengirimkan request, server kemudian akan membalasnya dengan sebuah HTTP respons

Contoh Format Pesan HTTP

Contoh HTTP Response:
HTTP/1.1 200 OK
 Server: Microsoft-IIS/5.0
 Date: Tue, 31 Oct 2012 03:01:44 GMT
 Connection: close
 Content-Type: message/http
 Content-Length: 39

Bagian pertama dari response adalah versi protokol. Format dan arti versi protokol sama dengan yang ditemukan pada pesan request.
Bagian berikutnya dari response, yaitu 200 OK  berisi kode status dari informasi yang diminta oleh pesan request. Jika method memberikan informasi apa yang harus dilakukan, maka bagian ini memberikan informasi apa yang terjadi setelah operasi dilakukan. Kode status terdiri dari dua bagian:
  1. Bagian pertama berupa kode angka (status-code; 200 pada contoh). Dibuat agar kode status mudah diproses oleh komputer.
  2. Bagian kedua berupa teks penjelasan (reason-phrase; OK pada contoh). Dibuat agar mudah dimengerti oleh manusia (pengguna sistem).
Kode status dibagi ke dalam beberapa kateogri, yang dapat dilihat pada tabel berikut:

Keseluruhan KodeKode yang TerdefinisiKategori
100 - 199100 - 101Informasional
200 - 299200 - 206Sukses
300 - 399300 - 305Redirection
400 - 499400 - 415Kesalahan Client
500 - 599

500 - 505Kesalahan Server
Referensi :
http://bertzzie.com/knowledge/serverside-nodejs/ProtokolHTTP.html


















Jumat, 08 Mei 2015

Web Arsitektur dan Konsep MVC

Pemograman Jaringan 1

Arsitektur web merupakan struktur rancangan (desain) web agar dapat tersusun suatu informasi yang tepat (terorganisasi) dan mudah ditemukan isinya. Dimana struktur rancangan harus memenuhi beberapa aspek antara lain form, fungsi, navigasi, interface, interaksi, visual, dan maksud informasi itu sendiri, yang akan dibangun dalam sebuah web.

Pertimbangan besarnya dari kebutuhan dan batasan dalam pembangunan sebuah web meliputi:
  • Kebutuhan fungsional
  • Kebutuhan kualitas
  • Integrasi dengan sistem yang telah ada

Kategori arsitektur web :
  1. Aspek Layering yaitu software distrukturkan dalam beberapa tier atau tingkatan untuk mengimplementasikan pemisahan urusan
  2. Aspek data, terbagi dua yaitu secara terstruktur seperti relasional database dan XML, dan secara non struktur meliputi konten multimedia dan gambar,audio,video.

Komponen arsitektur aplikasi web dasar yaitu:
  1. Client : biasanya browser
  2. Firewall : software yang mengatur jaringan internet dengan LAN perusahaan
  3. Proxy : untuk menyimpan halaman web pada cache
  4. Web server: bagian pendukung protokol web untuk memproses permintaan client.
  5. Database server: menyediakan data dalam bentuk terstruktur
  6. Media server: untuk content streaming data besar yang tidak terstruktur
  7. Content management server: menangani content untuk melayani aplikasi
  8. Aplikasi server: melayani permintaan akses dari komputer client.

Pattern
Pattern adalah solusi yang digunakan untuk menangani masalah pada design. Design pattern bukan desain final yang dapat ditransformasikan secara langsung kedalam kode. Ini hanyalah deskripsi atau template untuk mengetahui bagaimana menyelesaikan permasalahan yang dapat digunakan pada berbagai macam situasi yang berbeda.

Framework
Fremework adalah sekumpulan fungsi, class, dan aturan-aturan. Berbeda dengan library yang sifatnya untuk tujuan tertentu saja, framework bersifat menyeluruh mengatur bagaimana kita membangun aplikasi. Framework memungkinkan kita membangun aplikasi dengan lebih cepat karena sebagai developer kita akan lebih memfokuskan pada pokok permasalahan sedangkan hal-hal penunjang lainnya seperti koneksi database, form validation, GUI, dan security; umumnya telah disediakan oleh framework.

3 Tier
Konsep pemrogramman three tier (3 tier) atau yang biasa disebut dengan konsep client server programming merupakan konsep pemrograman yang terdiri dari 3 komponen logic layer yang saling berkaitan . 

Layer pada 3 tier:  
1. Client Layer yaitu komponen yang berjalan diatas local komputer user / client. (tier 1) Pada layer ini , akses tidak bisa sampai pada RDBMS layer jika tidak ada koneksi ke aplikasi server (layer 2 / tier 2) .
2. Server Layer yaitu komponen yang berjalan pada remote server yang berfungsi sebagai koneksi antara klien dengan database system. (Tier 2). Pada layer ini , merupakan layer yang menghubungkan antara layer client (tier 1) dengan layer RDBMS Application (tier 3). layer ini berisi package, objek, method, fungsi dan segala aktifitas query yang akan dijalankan pada layer 3 / tier 3 (RDBMS Application).
3. RDBMS Layer yaitu kumpulan database , data resource manager dan aplikasi mainframe (Tier 3). Pada layer ini, berisi kumpulan database dan data resource manager yang merupakan pusat database suatu sistem. Layer 3 / tier 3 atau aplikasi RDBMS , tidak bisa diakses secara langsung melalui layer 1 / tier 1 atau aplikasi klien. jika aplikasi klien tidak terkoneksi ke layer 2 / tier 2 atau aplikasi server .

Kelebihan arsitektur 3 Tier : 
- Segala sesuatu mengenai database terinstalasikan pada sisi server, begitu pula dengan pengkonfigurasiannya. Hal ini membuat harga yang harus dibayar lebih kecil. Apabila terjadi kesalahan pada salah satu lapisan tidak akan menyebabkan lapisan lain ikut salah. Perubahan pada salah satu lapisan tidak perlu menginstalasi ulang pada lapisan yang lainnya dalam hal ini sisi server ataupun sisi client.
- Keamanan dibelakang firewall.Transfer informasi antara web server dan server database optimal. Komunikasi antara system-sistem tidak harus didasarkan pada standart internet, tetapi dapat menggunakan protocol komunikasi yang lebvih cepat dan berada pada tingkat yang lebih rendah. Penggunaan middleware mendukung efisiensi query database dalam SQL di pakai untuk menangani pengambilan informasi dari database. 

Beberapa Keuntungan Arsitektur 3-Tier : 
- Keluwesan teknologi. 
- Mudah untuk mengubah DBMS engine. 
- Kemungkinkan pula middle tier ke platform yang berbeda 
- Biaya jangka panjang yang rendah. 
- Perubahan-perubahan cukup dilakukan pada middle tier daripada pada aplikasi keseluruhan. 
- Keunggulan kompetitif. 
- Kemampuan untuk bereaksi terhadap perubahan bisnis dengan cepat, dengan cara mengubah modul kode daripada mengubah keseluruhan aplikasi 

Kekurangan arsitekture 3 Tier : 
- Lebih susah untuk merancang 
- Lebih susah untuk mengatur 
- Lebih mahal 

Beberapa software aplikasi yang biasa menggunakan konsep 3 tier yaitu : sybase, webspherre, java , dll.
Secara visual, penggambaran arsitektur 3 tier adalah sebagai berikut : 
N-Tier
N-Tier merupakan arsitektur client server dimana presentasi, pemrosesan aplikasi, dan data fungsi manajemen secara logis dipisahkan. Huruf n pada n-tier menunjukan variabel yang dapat berisi angka sebanyak apapun.

Komponen yang ada pada N-Tier:
  1. Presentasi layer: dapat disebut user interface, berfungsi sebagai penertemahkan tugas dan hasil yang telah dikerjakan layer sebelumnya.
  2. Bisnis logic layer : koordinat dari aplikasi, memproses perintah, membuat keputusan logic dan evaluasi serta menghitung performa.
  3. Data Layer : untuk menyimpan informasi dan mengolah file system.

Keuntungan N-Tier:
  1. Kemudahan perubahan bisnis logic pada masa depan
  2. Bisnis logic yang mudah diimplementasikan
  3. Aplikasi client dapat mengakses berbagai tipe DBMS yang berbeda beda secara transparan.

Kerugian N-Tier:
  1. Sistem N tier termasuk mahal untuk development dan instalasinya
  2. memerlukan adaptasi yang semakin luas ruang lingkupnya
  3.  memerlukan rentang waktu relatif lama
  4. penggunaan memori komputer yang besar.

MVC 
Model-View-Controller atau MVC adalah sebuah metode untuk membuat sebuah aplikasi web dengan memisahkan data (Model) dari tampilan (View) dan cara bagaimana memprosesnya (Controller). MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data, antarmuka pengguna, dan bagian yang menjadi kontrol dalam sebuah aplikasi web.
Bagian dari MVC :
  1. Model, Model mewakili struktur data. Biasanya model berisi fungsi-fungsi yang membantu seseorang dalam pengelolaan basis data seperti memasukkan data ke basis data, pembaruan data dan lain-lain.
  2. View adalah bagian yang mengatur tampilan ke pengguna. Bisa di katakan berupa halaman web web.
  3. Controller, Controller merupakan bagian yang menjembatani model dan view. Controller berisi skrip-skrip php yang berfungsi untuk memproses suatu data dan mengirimkannya ke halaman web.
Dengan menggunakan metode MVC maka aplikasi akan lebih mudah untuk dirawat dan dikembangkan. Untuk memahami metode pengembangan aplikasi menggunakan MVC diperlukan pengetahuan tentang pemrogram berorientasi objek (Object Oriented Programming).
 
cara-kerja-mvc 
 
Jenis MVC:
  1. Server slide MVC : terjadi pada aplikasi web tradisional yang tidak melibatkan client side
  2. Mixed client side dan server side MVC
  3. Rich internet application MVC

Kelebihan dengan adanya Model adalah :
a. Proses maintenance aplikasi
Penempatan detail data dan operasinya pada area yang ditentukan (Model) sehingga tidak tersebar pada keseluruhan lingkup aplikasi.
b. Reusable Model
Penggunaan kembali aplikasi model oleh aplikasi lain yang disebabkan adanya pemisahan data dengan interface.
 
Kelebihan dari View adalah :
a. Memudahkan penggabungan divisi desain dalam development team.
b. Ketersediaan multiple interface dalam aplikasi.
 
Kelebihan dari Controller adalah :
a. Komponen view dapat didesain tanpa harus memperhatikan bagian lain secara berlebih
b. Pemisahan jelas antara presentation logic dan business logic


Kelemahan MVC :
adanya peningkatan kompleksifitas sehingga pada aplikasi kecil yang tidak membutuhkan loose coupling pada Model yang menjadi blok penghalang dalam pola MVC ini sendiri.


Referensi:
http://criztian-blacklizt.blogspot.com/2011/12/about-mvc.html
https://chachataki.wordpress.com/2011/05/05/arsitektur-mvc/
http://nikenkinanti212.blogspot.com/2014/09/pengertian-3-tier-dan-n-tier-serta.html
https://lizana89.wordpress.com/2010/10/30/perbedaan-pattern-dan-framework-pengertian-mvc-dan-struts-arsitektur-codeigniter-integrasi-sistem-dan-arsitektur-soa/