Thursday, May 24, 2007

tapestry 5

ช่วงนี้ลูกหลับกลางวันเป็นเวลา เลยได้มีโอกาสลองเล่น tapestry 5
หลังจาก download tutorial มาทดสอบดูแล้ว
ก็พบ issue ที่น่าสนใจดังนี้
1. เดิม tapestry หรือ framework อื่นๆมักจะใช้ servlet
เป็นจุดตั้งต้น framework ของตัวเอง
แต่ tapestry 5 เปลี่ยนไปใช้ filter เป็นจุดเริ่มต้น
<filter>
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry.TapestryFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>app</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

น่าสนใจมาก ว่าการเปลี่ยนแบบนี้จะนำมาซึ่งข้อดีและข้อเสียอะไรบ้าง

2. การเปลี่ยน page เดิมจะใช้วิธี forward เป็นหลัก
แต่ใน tapestry5 จะใช้ redirect เป็นหลักแทน
ซึ่งข้อดี ก็คือการ handle กรณี user กด refresh จะทำได้ถูกต้องขึ้น

3. การเริ่มต้นสร้างโปรเจคใหม่ทำได้ง่ายมาก (อิทธิพลจาก rails)
ด้วยการ integrate กับ maven, ทำให้เรา create new project,
running project(start server) ได้ภายใน 2 command line.

4. loop การแก้ไข + ทดสอบ + แก้ไข + ทดสอบ ...
โดยไม่ต้อง restart server ทำได้เรียบร้อยดี
ยกเว้น case ที่เราเพิ่ม page ใหม่ๆ เข้าไปหลังจาก start server ไปแล้ว
ที่ต้องมีการ restart server ใหม่

5. ระยะเวลาการ start server เร็วกว่าเดิมแบบไม่เห็นฝุ่น
เดิมประมาณ 3-7 วินาที ของใหม่ หลัก 300 millisec
ที่เป็นเช่นนี้เพราะมีการ rewrite Ioc container ใหม่

6. เปลี่ยน Ioc(Inversion of Control) ไปใช้ java code + annotaion
แทน xml file, อันนี้แหล่ะตัวงงเลย เพราะผมใช้ xml ใน spring มาจนเคยตัวแล้ว

Related link from Roti

5 comments:

ziddik::zdk said...

พอดีผมไม่ใช่ขา Java แต่เท่าที่ทราบ
tapestry5 ตัดทิ้งทั้ง HiveMind และ Spring
เขียน Tapestry IoC เอาเอง optimize สุดๆ
เลย start server เร็วจี๋

ได้ข่าวว่า GlassFish v3 เร็วเหมือนกัน ที่สำคัญ Support Ruby :) ว่างๆรีวิวนะพี่

PPhetra said...

ใช่ๆ, เขาเปลี่ยน IoC container ตัวใหม่
ที่เร็วขึ้นส่วนหนึ่งมาจากการที่ไม่ต้องเสียเวลา parse xml ด้วย

ส่วน spring นั้น, ไม่ได้ตัดออกนะ
ของเดิมไม่ได้ใช้ spring อยู่แล้ว
(เป็นแค่การ integrate ใช้ร่วมกันได้เฉยๆ)

veer said...

load tutorial ตัวไหนมาเหรอครับ?

PPhetra said...

Veer: ตัวนี้ tutorial

veer said...

ขอบคุณมากครับ สมกับที่ subscribe feed comment ไว้รอคำตอบ lol