Service Layer กับ MVC

หลังจากที่อธิบายถึงแนวคิดในการใช้งาน MVC Framework มาแล้วต่อไปเราจะเจาะลึกลงไปในส่วนของ Model ที่มีการเพิ่มส่วนของ Service Layer ขึ้นมาเพื่อที่จะทำให้เราสามารถ maintain ในส่วนของ model ได้ง่ายขึ้น การสร้าง Service Layer เราจะทำการประยุกต์แนวคิดของ Service Oriented Architecture (SOA)  มาใช้งานร่วมกับ MVC

Service Oriented Architecture

ก่อนอื่นต้องอธิบายความหมายของ Service Oriented Architecture (SOA) ก่อน SOA เป็นแนวความคิดที่ถูกนำไปประยุกต์ใช้งานเกี่ยวกับ Web service เป็นส่วนมาก แต่ความจริงแล้วแนวความคิดนี้สามารถนำมาประยุกต์ใช้งานใน Model ได้ด้วย โดย SOA เป็นแนวคิดที่มองการทำงานส่วนต่างๆเป็น service หรือ บริการเพื่อให้นำกลับมาใช้ใหม่ได้ง่าย และยังลดความซ้ำซ้อนของข้อมูลในองค์กรได้ด้วย เพราะถ้าต้องการข้อมูลอะไรก็สามารถเรียก service ตัวนั้นขึ้นมาทำงานได้เลย จากรูปด้านซ้ายจะเป็นแนวคิดแบบเดิม Silo เรียกง่ายๆว่า Applicationของใครของมัน Application แต่ละตัวจะแยกกันทำงานและแน่นอนข้อมูลบางส่วนก็จะซ้ำซ้อนกัน จึงมีแนวคิดในการมองทุอย่างเป็น service และ integrate หรือ บูรณาการเข้าด้วยกัน ด้วยหลักการทำงานเป็น service ทำให้ถูกนำไปใช้คู่กับ Web service เป็นหลักในหลักการของ SOA เราจะทำการกำหนด flow ด้วย Enterprise Service Bus (ESB) ทำหน้าที่เชื่อมโยง service ต่างๆเข้าหากัน การแยก work flow ออกมาทำให้เราสามารถปรับเปลี่ยน work flow ได้ตามต้องการโดยไม่กระทบกับ service เลย ถ้าอ่านดูแล้วคงจะคุ้นกับแนวคิดแบบนี้เพราะมันคือ Controller ใน MVC นั่นเอง
Service Layer

จากรูปเราจะเห็นว่าการสร้าง service จะอยู่ครอบ domain model หรือการทำงานข้างในของ model โดยจุดประสงค์ของการสร้าง service ใน MVC ก็เพื่อที่จะครอบการทำงานข้างใน model เพื่อลดความซ้ำซ้อนลง และผลที่ได้ตามมาอีกอย่างคือจะลดความขึ้นต่อกัน(couple)ลง ทำให้เราสามารถถอดเอาส่วนต่างของระบบไปใช้งานใหม่ได้ง่ายขึ้น และตามหลักของ Software Engineering เราต้องพยายามที่จะทำระบบให้ high cohesion และ low couple ที่กล่าวมาทั้งหมดนี้ก็เป็นประโยชน์ที่จะได้มากมายจากการสร้าง Service Layer ใน Model

References:

http://martinfowler.com/eaaCatalog/serviceLayer.html

http://msmisthammasat.blogspot.com/2011/01/soa-service-oriented-architecture.html

รับเขียนโปรแกรมและสอนเขียนโปรแกรมด้วย PHP
ติดต่อสอบถามรายละเอียดเพิ่มเติมได้ที่ 062-419-9498
หรือ E-mail: training@irobust.co.th

Leave a Reply

Your email address will not be published. Required fields are marked *