Most popular

วันอาทิตย์ที่ 10 กรกฎาคม พ.ศ. 2554

Delphi XE Multi-tier (DataSnap)

การสร้าง Multi-tier ของ Delphi XE ถือได้ว่าง่ายกว่า Delphi 7 พอสมควร จุดที่เห็นได้ชัดเจนคือ การเพิ่มความสามารถให้กับ DBX(DBExpress) ที่ได่รับความนิยมอย่างมากด้วยจุดเด่นจากความรวดเร็วในการทำงานกับข้อมูล ได้รวมการเชื่อมต่อข้อมูลของ Datasnap เข้าไปด้วย

การสร้าง Application Server (DataSnap Server)
สร้าง Project ใหม่ โดยเลือกเป็นการสร้าง DataSnap Server

เลือก DataSnap Server แล้วกด OK
เลือก VCL Forms Application เพราะต้องการสร้าง App Server แบบที่มี GUI
เลือกการเชื่อมต่อแบบ TCP/IP ในหมวดของ Protocols เพียงอย่างเดียว แล้วกด Next
(ค่าเริ่มต้นจะมีการเลือก Sample Methods ไว้ ให้เอาออก)
หน้าต่างถัดมาคือการตั้งค่า Port ของ TCP/IP เป็นช่องทางในการรับ-ส่งข้อมูล โดยที่ Port 211 เป็นค่าเริ่มต้นที่ให้มา เราสามารถใช้ Port นี้ได้
ขั้นตอนสุดท้าย เลือก TDSServerModule แล้วกด Finish ได้เลย
จากนั้น Delphi XE จะสร้างโครงสร้างทั้งหมดที่ประกอบเป็น DataSnap Server ขึ้นมาให้ พร้อมที่จะ Implement ต่อไป

ส่วนประกอบทั้งหมด 3 Unit จะถูกสร้างขึ้นอัตโนมัติ
ขั้นตอนต่อไปคือการเชื่อมต่อกับ Database ในที่นี้ผู้เขียนใช้ Microsoft SQL Server
เชื่อมต่อ DBX ในหน้าต่าง Data Explorer แล้วใช้เมาส์ลาก Table เข้ามาใน ServerMethodUnit1

โปรแกรมจะสร้าง SQLConnection และ SQLDataSet ให้เอง
นำ DataSetProvider มาวางแล้วกำหนด DataSet ไปที่ DataSet ในที่นี้คือ EMPLOYEE   ตามภาพ
ขั้นตอนสุดท้ายให้กำหนดค่า Active=true ใน DataSet EMPLOYEE หากไม่มี error ถือว่าการเชื่อมต่อข้อมูลสำเร็จ Save Project ได้เลย


จากนั้นให้ทดสอบรัน DataSnap Server ขึ้นมา และค้างไว้เพื่อจะสร้างฝั่ง Client ขึ้นมาเชื่อมต่อ
(เนื่องจากใน Delphi XE จะไม่รัน App Server อัตโนมัติ เหมือนใน Delphi 7) 


การสร้าง Application Client
โปรแกรมฝั่ง Client ก็สร้างตามปกติ โดยเลือกสร้างเป็น VCL Forms Application

เลือก VCL Forms Application
ในฟอร์มฝั่ง Client วาง Component ต่างๆลงไป คือ SQLConnection , DSProviderConnection , CLientDataSet , DataSource และ DBGrid

Component ต่างๆ บนฟอร์ม Client
การกำหนดค่า Properties ใน SQLConnection1
การกำหนดค่า Properties ใน DSProviderConnection1
(ค่าของ ServerClassName =TServerMethods1 ก็คือชื่อคลาสของ ServerMethodUnit1 ที่อยู่บน App Server นั่นเอง)
Server Class Name
กำหนด RemoteServer และ ProviderName ให้กับ ClientDataSet1
จากนั้นก็เหลือแค่ DataSource1 ที่กำหนดให้ DataSet มองไปที่ ClientDataSet1
และ DBGrid ให้มองไปที่ DataSource1 จากนั้นเมื่อกำหนด Active=true ใน ClientDataSet แล้ว จะปรากฎข้อมูลใน DBGrid ซึ่งเป็นการรับข้อมูลมาจาก DataSnap Server หรือ Application Server นั่นเอง

เมื่อ ClientDataSet Active
หมายเหตุ
หาก Connect DataSnap Server จากฝั่ง Client ไม่ได้ให้ตรวจสอบ Property Driver -> Communication Protocol ว่ากำหนดชนิดการเชื่อมต่อเป็นไปตามที่กำหนดใน DataSnap Server หรือไม่




6 ความคิดเห็น:

  1. ไม่ระบุชื่อ11 กรกฎาคม 2554 เวลา 16:03

    ถ้ามี ตัวอย่างของ delhi 7 บ้าง จะของคุณมากเลยครับ ผม

    ตอบลบ
  2. มีครับ ลองหาบทความก่อนหน้านี้ดู
    หลักการทำคล้ายๆกันครับ

    ตอบลบ
  3. ไม่รู้ว่าตอน Deploy ต้องทำอย่างไงบ้างครับ

    ตอบลบ
  4. เอา Application Server ไปไว้ที่ Server แล้วนำตัว Client ติดต่อเข้ามาครับ

    ลองดูที่นี่ครับ
    ทำความเข้าใจกับสถาปัตยกรรมเทียร์ (Tier)
    http://systemdevman.blogspot.com/2011/06/tier.html

    ตอบลบ
  5. ไม่ระบุชื่อ28 ตุลาคม 2554 เวลา 16:13

    ขอบคุณ สำหรับความรู้ดี ๆ ที่เผื่อแผ่ ครับ

    ตอบลบ
  6. ถ้า ใช้ ADO ที่ฝั่ง server ได้ไม๊ครับ

    ตอบลบ