วันศุกร์ที่ 21 มีนาคม พ.ศ. 2557

Aspect Oriented Progeamming โดย AspectJ


        ในการเขียนโค๊ด มักจะเกิดปัญหาที่ต้องแก้ไขโค๊ด ซึ่่งมีปริมาณมาก หลายไฟล์ หลายบรรทัด ทำให้โปรแกรมเมอร์ต้องเสียเวลาแก้ไข ซึ่งยากเอาเรื่อง
      จึงได้เกิดเทคโนโลยี Aspect Oriented Programming ขึ้นเพื่อช่วยเหลือให้มีความง่ายต่อการเขียนโปรแกรมโดยใช้หลักการว่า

ใน Code โปรแกรม X
เมื่อเกิดการกระทำ Y แล้ว
ให้ทำงาน Z ด้วย    

โดยผมจะแสดงตัวอย่างง่ายๆนะครับกับสัก class นึงละกัน

เช่น โปรแกรม X มีเมท็อด main A B C D ดังรูปต่อไปนี้ครับ





แล้วหากเราสนใจการกระทำของเมท็อด B จุดสนใจก็จะเป็นดังรูปต่อไปครับ




จากนั้นหากเราต้องการให้เกิดทำงานอื่น ๆ เ่ช่นแสดงข้อความหรืออาจจะวาง Log แต่เราจะให้เกิดการทำงานเมื่อไหร่ละ ??? AOP มีตัวเลือกในการระบุให้ 2 ช่วงใหญ่ๆครับ คือ


1. ณ เวลาที่เรียกใช้จุดที่เราสนใจ (call)
โดยเราจะมองในรูปแบบ sequence diagram ได้แบบนี้ครับ



อธิบายก็คือ จะเป็น ณ จุดที่เมท็อด main เริ่มทำการเรียกใช้งานเมท็อด B และจนกว่าจะใช้งานเมท็อด B เสร็จครับ (ก็คือเรียกใช้เสร็จแล้วนั้ันเอง)
2. ณ เวลาประมวลผลจุดที่เราสนใจ (execution)
โดยเราจะมองในรูปแบบ sequence diagram ได้แบบนี้ครับ



อธิบายก็คือ จะเป็น ณ จุดที่เมท็อด B เริ่มทำการประมวลผล จนกระทั่งประมวลผลเสร็จครับ

และทั้ง 2 ส่วนใหญ่ๆจะมีการระบุเวลาที่สนใจอีก 3 ช่วงครับ (เยอะจริงๆ) คือ

1. ก่อนหน้า.... (before)
2. ระหว่างที่่.... (around)
3. หลังจาก.... (after)

ซึ่งจะสรุปได้ดังนี้ครับ

ก่อนหน้าการเรียกใช้จุดที่เราสนใจ   before call....
ระหว่างการเรียกใช้จุดที่เราสนใจ   around call....
หลังจากการเรียกใช้จุดที่เราสนใจ   after call....




ก่อนหน้าการประมวลผลจุดที่เราสนใจ   before execution.....
ระหว่างการประมวลผลจุดที่เราสนใจ    around execution.....
หลังจากการประมวลผลจุดที่เราสนใจ    after execution.....




โดยการที่เราเพิ่มการกระทำลงไปในโปรแกรม เราไม่ต้องเข้าไปแก้ไขโค๊ดเดิม เลยครับ แต่จะเพิ่มไฟล์ AOP ที่จะระบุจุดที่เราสนใจและแทรกการทำงานใหม่  ****(ในภาษาทางการหน่อยเรียกจุดที่สนใจว่าจุดตัดครับ และเรียกการระบุจุดที่สนใจว่าการตัดขวาง [cross cutting concern] ครับ)

เอาละครับคงจะพอเ้ข้าใจ concept คร่าวๆของ AOP แล้วนะครับในบทความถัดไป เราจะมาพูดถึงการ coding กัน

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

แสดงความคิดเห็น