SpringPython
เมื่อมีคนบ้าพลังนำแนวคิดของ Spring Framework และ Spring Security Framework เอาไปทำด้วยภาษาเทพอย่าง Python โปรเจคนี้ไม่ได้ทำการ Port โค้ดบรรทัดต่อบรรทัดเหมือน spring .NET แต่ในทางกลับกัน
ทีมผู้สร้างนำแค่แนวคิดที่ดีต่างๆ ของ Spring ไปเขียนใหม่ด้วย Python แทน
ความสามารถหลักๆ
ณ ขณะนี้สิ่งที่ SpringPython ได้ทำไปแล้วมีดังนี้
Inversion Of Control-แนวคิดหลักที่เป็นหัวใจของ Spring คือการ decouple คลาสด้วยอินเทอร์เฟสซึ่งจะทำให้เราสามารถสร้างซอฟท์แวร์ในเชิงโมดูลมากขึ้นและนอกจากนี้เรายังสามารถใช้ PyContainerConfig และ PythonConfig
เพื่อ plug สิ่งที่เราสร้างใน Python เข้าไปใน ApplicationContext ได้
Aspect Oriented Programming – SpringPython เตรียมกระบวนการการ wrap advice เข้ากับ objects ไว้หลายวิธีซีง AOP นั้นเข้ามาช่วยเราในเรื่องของการทำ remoting, debug และการวัดประสิทธิภาพ
Database Template – Template ที่ springPython เตรียมไว้นั้นมีไว้เพื่อแก้ปัญหาเรื่องกระบวนการใช้ฐานข้อมูลเช่นเปิด cursors, อ่านข้อมูล, ปิด cursors และการจัดการ exception ต่างๆ
Database Transactions – การเขียนแอพพลิเคชั่นที่ต้องทำงานกับฐานข้อมูลที่มากกว่าหนึ่งตัวและต้องจัดการเรื่อง Transaction ด้วยนั้นจะทำให้โค้ดของเราเข้าใจได้ยากมาก ดังนั้ SpringPython จึงเตรียมเรื่องของการทำ Transaction มาด้วย
เพื่อทำมห้เราสามารถจัดการ Transaction ได้ง่ายโดยไม่ต้องเสียเวลาเขียนโค้ดเพิ่มขึ้น
Seurity – ส่วนเสริมเรื่อง security นั้นจะเข้ามาช่วยเราในเรื่องของการควบคุมสิทธิ์ต่างๆเช่นการทำ authentication และ authorization
Remoting – เมื่อใช้ SpringPython แล้วเราสามารถเปลี่ยนเซอร์วิสต่างๆที่เราทำอยู่ให้เป็น remoting ได้ในกรณีที่เราสร้างเซอร์วิสเหล่านั้นด้วย IoC Container เพราะเราทำได้เพียงแค่เปลี่ยน configuration เท่านั้น
Plug-ins/Command-Line Tool – เป็น plugin ที่มีไว้เพื่อทำให้เราสามารถพัฒนาแอพพลิเคชั่นได้อย่างรวดเร็ว
Samples – เพื่อทำให้เราสามารถทำงานได้ง่ายขึ้น SpringPython ได้เขียนตัวอย่างไว้สามตัวอย่างคือ
PetClinic
Spring Wiki
Spring Bot
สามารถอ่านเพิ่มเติมได้ที่ http://springpython.webfactional.com/

โอ้ว มันอะไรกันนี่
อ่านเจอตรงนี้มันน่าสนใจดีครับ
What’s Coming?
We are working on creating a fluent DSL for configuring the IoC container.
ขอเกรียนเรื่อง AOP หน่อยครับ
ตามเข้าไปอ่านที่ http://springpython.webfactional.com/reference/html/aop.html
แล้วต่อมแทบอักเสบ เพราะเห็นไม่ใช่แค่การ “wrap objects” ของ SpringPython ครับ แต่การใช้ term ทาง AOP สับสนได้ที่
ต้องแนะนำให้ทีมเขียน SpringPython ไปอ่าน AspectJ กับ Spring AOP ดี ๆ เลยละครับ