สถาปัตยกรรมเทียร์ (Tier Architecture)

Download Report

Transcript สถาปัตยกรรมเทียร์ (Tier Architecture)

สถาปัตยกรรมเทียร์
TIER
ARCHITECTURE
ความหมายของเทียร์
• เทียร์ (TIER) คือโปรเซส (Process) ที่ใช้ในการจัดการ
งานใดงานหนึ่ ง ดังนั้นในระบบหนึ่ งจะมีเทียร์ อย่างน้อยที่สดด 1
เทียร์ แต่จะมีจานวนเท่าใดนั้นขึ้นอยูก่ บั
– ทรัพยากรของแต่ละเครื่ อง
– ลักษณะงานที่ทา
สถาปัตยกรรมเทียร์
• เทียร์เดียว (Single tier)
• สองเทียร์ (Two tier)
• หลายเทียร์ (Multi tier)
สถาปัตยกรรมแบบเทียร์เดียว
• ใช้ใ นเครื่ อ งคอมพิ ว เตอร์ โ ดยส่ ว นใหญ่ โดยที่ โ ปรแกรมนั้น
สามารถทางานได้ทดกอย่างในตัวของมันเอง ตั้งแต่การรับข้อมูล
ประมวลผล แสดงผล ตลอดจนการบันทึกงานลงในแฟ้ ม เช่ น
โปรแกรมMicrosoft word หรื อ Access
สถาปัตยกรรมแบบสองเทียร์
มี ก า ร แ บ่ ง เ ที ย ร์ อ อ ก เ ป็ น ส อ ง ส่ ว น (Client/
Server) ซึ่ งจะมีการทางานประสานกันโดยอาศัยข้อ
ตกตงทางการสื่ อสารที่ได้ตกลงกันไว้ท้ งั สองส่ วน หน้าที่
ของ Server คือทาหน้าที่ Background
Process รับผิดชอบด้านการประมวลผลของระบบ
ข้อ มู ล และในขณะที่ Client
ท าหน้า ที่
Foreground Process ที่รับผิดชอบทางด้าน
ของ User Interface
สถาปัตยกรรมแบบหลายเทียร์
• ในกรณี ของ 2 tiers นั้นถ้ามีการเปลี่ยนแปลงความสัมพันธ์ทาให้ไม่
สามารถสื่ อสารกันได้ หรื อทาให้เกิดความไม่เข้าใจระหว่างรู ปแบบของ
ข้อมูลที่ ใ ช้ใ นการสื่ อสารกัน จะต้องมี การปรั บปรด งหรื อเปลี่ ยนแปลง
เที ย ร์ ท้ ัง สองเพื่ อ ให้ ส ามารถสื่ อ สารกัน ได้ เช่ น ในระบบหนึ่ งเรามี
ฐานข้อมูล SQL
และมีการพัฒนาโปรแกรมขึ้นมาเพื่อใช้งาน
ฐานข้อมูลดังกล่าว แต่ต่อมามีการเปลี่ยนฐานข้อมูลจาก SQL เป็ น
Oracle
ทาให้ตอ้ งมีการเปลี่ยนแปลงหรื ออปรับปรด งส่ วนของ
Client ใหม่เพื่อเข้าใจรู ปแบบการสื่ อสารที่เปลี่ยนแปลงไป เพื่อเป็ น
การแก้ไขปั ญหานี้ จึงได้เพิ่มเทียร์ ที่อยู่ระหว่างกลาง (Application
tier)
Middleware
• ODBC
• ADO
• JDBC
การติดต่อฐานข้อมูล
JDBC-ODBC
การติดต่อกับฐานข้อมูล
• Architecture
Java Program
JDBC : Java
Database Connection
Driver
Database
ผูผ้ ลิต DB จะสร้าง driver สาหรับติดต่อฐานข้อมูล โดยที่ driver จะแปล
คาสัง่ จาก JDBC ให้เป็ นคาสั่งสาหรับเข้าใช้งาน DB ส่ วนโปรแกรมจาวา
จะส่ ง sql ไปที่ JDBC แล้ว JDBC จะเปลี่ยนคาสั่งนั้นให้เป็ นคาสั่ง
สาหรับ driver
การเริ่ มต้นการติดต่อกับ MS Access
• จะต้องมีฐานข้อมูล
• สร้าง user DSN
• ติดต่อด้วย Java Application
DSN
Java Application
DB
สร้างฐานข้อมูลใน MS Access
• สร้างฐานข้อมูล MyDb ใน Access
• สร้าง table ชื่อ STUDENT มีโครงสร้างดังนี้
name
_id
_name
_department
type
Integer
Varchar(30)
Varchar(15)
สร้างฐานข้อมูลใน MS Access
• ป้ อนข้อลงลง table ชื่อ STUDENT
_id
123
124
_name
PIYO
SORN
_department
BBA
ENG
• บันทึกลงใน D:\Eventprogramming\MyDb.mdb
การสร้าง DSN
• Start  Control Panel  Administrative
Tools  DataSource(ODBC)
Click ปุ่ ม ADD
เลือกรายการ Driver do Microsoft Acess (*.mdb)
แล้วคลิกปด่ ม Finish
 ป้ อนคาว่า STUDENT
 Click Select เพื่อเลือกฐานข้อมูล
การ Loading JDBC Driver
• สามารถทาได้ดว้ ยคาสัง่
Class.forName
("sun.jdbc.odbc.JdbcOdbcDriver");
การเริ่ มต้น Connect
Connection c =
DriverManager.getConnection
("jdbc:odbc:STUDENT"," "," ");
Password
Data Base Name
User Name
Statements
• Statement เป็ น Interface สาหรับการสร้าง class ที่ทา
หน้าที่ส่งประโยค sql ไปสู่ DB ผ่านทาง Connection ถ้ามี
ผลลัพธ์ ก็สามารถรั บผลลัพธ์น้ ันกลับเข้าสู่ โปรแกรมเป็ น resultset
ซึ่ง Statement สามารถใช้งานได้ 3 รู ปแบบ คือ
– Statement สาหรับทางานประโยค SQL ที่สร้างขึ้นครั้งเดียว
– PrepareStatement สาหรับทางานประโยค SQL ที่มีรูปแบบเดิม
หลายครั้ง
– CallableStatement สาหรับทางานกับ Store Procedures
Statements (con.)
• Statement s = c.createStatement( );
• ResultSet r = s.executeQuery (" ______ ");
– s.executeQuery ("SQL");
ใช้ในกรณี ที่ประโยค sql นั้นมีผลลัพธ์กลับมา
SQL Statement
– s.executeUpdate ("SQL");
ใช้ในกรณี ที่ประโยค sql นั้นมีไม่ผลลัพธ์กลับมาแต่มีผลต่อฐานข้อมูล
– s.execute ("SQL");
ใช้ในกรณี ที่ไม่ทราบว่าประโยค sql นั้นมีผลลัพธ์กลับมาหรื อไม่ซ่ ึ งถ้ามีจะต้องใช้
getResultSet รับค่าที่คืนกลับ หรื อใช้ getUpdateCount เพื่อ
ตรวจสอบจานวน record ที่เปลี่ยนแปลง
การทดสอบการเชื่อมต่อ
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
import java.sql.*;
import java.lang.*;
class DBTest {
public static void main (String st[ ]) throws Exception {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c =
DriverManager.getConnection("jdbc:odbc:STUDENT","","");
Statement s = c.createStatement( );
ResultSet r = s.executeQuery ("SELECT * FROM STUDENT");
while(r.next()) {
System.out.println(r.getInt(1) + ", " +r.getString(2) + ", " +
r.getString(3)); }
s.close();
c.close();
}
}
การทดสอบการเชื่อมต่อ
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
import java.sql.*;
import java.lang.*;
class DBTest{
public static void main (String st[]) throws Exception{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c = DriverManager.getConnection("jdbc:odbc:STUDENT","","");
Statement s = c.createStatement();
s.executeUpdate("INSERT INTO STUDENT VALUES(134,'LUPING','MBA.')");
ResultSet r = s.executeQuery("SELECT * FROM STUDENT");
while(r.next()){
System.out.println(r.getInt(1) + ", " +r.getString(2) + ", " +
r.getString(3));}
s.close();
c.close();
}
}