อ่าน 4 นาที
เชอร์รี่พาย
CherryPy เป็น เฟรมเวิร์ก สำหรับการพัฒนาเว็บแอปพลิเคชัน แบบเชิงวัตถุ โดยใช้ ภาษาโปรแกรม Python ออกแบบมาเพื่อ การพัฒนา เว็บ แอปพลิเคชัน อย่างรวดเร็ว โดย การห่อหุ้ม โปรโตคอล HTTP...
เชอร์รี่พาย
| เชอร์รี่พาย | |
|---|---|
| นักพัฒนา | ทีม CherryPy |
| ปล่อย | มิถุนายน พ.ศ. 2545 [ 1 ] |
| เวอร์ชันเสถียร | 18.10.0 [ 2 ] |
| เขียนเป็น | ไพธอน |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| พิมพ์ | เฟรมเวิร์กแอปพลิเคชันเว็บ |
| ใบอนุญาต | ใบอนุญาต BSD [ 3 ] |
| เว็บไซต์ | เชอร์รีปี้ |
| ที่เก็บข้อมูล | คลังเก็บข้อมูล CherryPy |
CherryPyเป็น เฟรมเวิร์ก สำหรับการพัฒนาเว็บแอปพลิเคชันแบบเชิงวัตถุ โดยใช้ภาษาโปรแกรม Pythonออกแบบมาเพื่อ การพัฒนา เว็บแอปพลิเคชันอย่างรวดเร็วโดยการห่อหุ้มโปรโตคอลHTTPแต่ยังคงอยู่ในระดับต่ำและไม่ได้มีฟังก์ชันการทำงานมากไปกว่าที่กำหนดไว้ใน RFC 7231
CherryPy สามารถทำหน้าที่เป็นเว็บเซิร์ฟเวอร์ได้ด้วยตัวเอง หรือสามารถเรียกใช้งานผ่าน สภาพแวดล้อมที่เข้ากันได้ กับ WSGIก็ได้ มันไม่ได้จัดการงานต่างๆ เช่น การสร้างเทมเพลตสำหรับการแสดงผล หรือการเข้าถึงแบ็กเอนด์ เฟรมเวิร์กนี้สามารถขยายได้ด้วยฟิลเตอร์ ซึ่งจะถูกเรียกใช้ในจุดที่กำหนดไว้ในกระบวนการประมวลผลคำขอ/การตอบสนอง
อินเทอร์เฟซแบบไพธอน
หนึ่งในเป้าหมายของผู้ก่อตั้งโครงการอย่างRemi Delonคือการทำให้ CherryPy มีลักษณะเป็นแบบ Pythonicมากที่สุดเท่าที่จะเป็นไปได้ ซึ่งจะช่วยให้นักพัฒนาสามารถใช้เฟรมเวิร์กนี้ได้เหมือนกับโมดูล Python ทั่วไป และลืมไปได้เลย (จากมุมมองทางเทคนิค) ว่าแอปพลิเคชันนั้นสร้างขึ้นสำหรับเว็บ
ตัวอย่างเช่น โปรแกรม Hello World ทั่วไป ที่ใช้ CherryPy 3 จะมีลักษณะดังนี้:
นำเข้าcherrypyคลาสHelloWorld : def index ( self ): return "Hello World!" index . exposed = Truecherrypy.quickstart ( HelloWorld ( ) )หรืออย่างตัวอย่างที่แสดงอยู่บนเว็บไซต์ของพวกเขาในปัจจุบัน คือการใช้ Python decorator เพื่อเปิดเผยเส้นทาง index โดยอัตโนมัติ:
นำเข้าcherrypyclass HelloWorld ( object ): @cherrypy . expose def index ( self ): return "Hello World!"cherrypy.quickstart ( HelloWorld ( ) )คุณสมบัติ
CherryPy ดำเนินการดังต่อไปนี้:
- เว็บเซิร์ฟเวอร์แบบพูลเธรดWSGIที่สอดคล้องกับHTTP/1.1 [ 4 ]โดยทั่วไป CherryPy เองใช้เวลาเพียง 1–2 มิลลิวินาทีต่อหน้า[ 5 ] [ 6 ]
- รองรับเว็บเซิร์ฟเวอร์หรืออะแดปเตอร์ที่เปิดใช้งาน WSGI อื่นๆ รวมถึงApache , IIS , lighttpd , mod_python , FastCGI , SCGIและmod_wsgi
- อะแดปเตอร์mod_pythonดั้งเดิม
- เซิร์ฟเวอร์ HTTP หลายตัว (เช่น ความสามารถในการรับฟังบนพอร์ตหลายพอร์ต) [ 7 ]
- ระบบปลั๊กอิน [ 8 ] ปลั๊กอิน CherryPy จะเชื่อมต่อกับเหตุการณ์ภายใน กระบวนการ เซิร์ฟเวอร์ — ในการเริ่มต้นเซิร์ฟเวอร์ การปิดเซิร์ฟเวอร์ การออกจากเซิร์ฟเวอร์ ฯลฯ — เพื่อเรียกใช้โค้ดที่ต้องเรียกใช้เมื่อเซิร์ฟเวอร์เริ่มต้นหรือปิดลง
- CherryPy มีเครื่องมือในตัวสำหรับการแคชการเข้ารหัสเซสชันการอนุญาตเนื้อหาคงที่ และอื่นๆเครื่องมือเหล่านี้เชื่อมต่อกับเหตุการณ์ต่างๆ ภายใน กระบวนการ ร้องขอเมื่อใดก็ตามที่เซิร์ฟเวอร์ CherryPy ได้รับคำขอ จะมีขั้นตอนเฉพาะที่ดำเนินการเพื่อจัดการคำขอนั้น ตัวจัดการหน้าเว็บเป็นเพียงขั้นตอนหนึ่งในกระบวนการเท่านั้น นอกจากนี้ เครื่องมือยังมีไวยากรณ์และ API สำหรับการกำหนดค่าเพื่อเปิดและปิดใช้งานสำหรับชุดตัวจัดการเฉพาะอีกด้วย
- ระบบการกำหนดค่าสำหรับนักพัฒนาและผู้ปรับใช้[ 9 ] [ 10 ] [ 11 ]การปรับใช้ CherryPy สามารถกำหนดค่าได้ในระดับไซต์ แอปพลิเคชัน และคอนโทรลเลอร์ ผ่านพจนานุกรม Python ไฟล์การกำหนดค่า และออบเจ็กต์ไฟล์ที่เปิดอยู่
- ชุดทดสอบที่สมบูรณ์สำหรับฟังก์ชันหลักและเฟรมเวิร์กที่เกี่ยวข้องซึ่งสามารถใช้ในการทดสอบแอปพลิเคชัน CherryPy ได้[ 12 ]
- การสร้าง โปรไฟล์ในตัวตั้งแต่เวอร์ชัน 2.1 [ 13 ]การครอบคลุม[ 14 ]และการสนับสนุนการทดสอบ
CherryPy ไม่บังคับให้คุณใช้ ORM ( Object-Relational Mapper ), ภาษาเทมเพลตหรือไลบรารี JavaScript เฉพาะ เจาะจง
สามารถใช้งานร่วมกับ CherryPy ได้
- เส้นทาง — การนำระบบเส้นทางของRuby on Rails มาเขียนใหม่ด้วย Python เพื่อแมป URLกับคอนโทรลเลอร์/แอ็กชัน และสร้าง URL [ 15 ]
ตัวแมปอ็อบเจ็กต์เชิงสัมพันธ์
- SQLAlchemy — แบ็กเอนด์ฐานข้อมูลและORMสำหรับแอปพลิเคชัน Python TurboGears 2.x ใช้ CherryPy เป็นเซิร์ฟเวอร์และ SQLAlchemy เป็น ORM เริ่มต้น[ 16 ]
- SQLObject — ORM ยอดนิยม สำหรับการจัดเตรียมอินเทอร์เฟซอ็อบเจ็กต์ให้กับฐานข้อมูล รองรับแบ็กเอนด์ฐานข้อมูลทั่วไปหลายประเภท ได้แก่MySQL , PostgreSQL , SQLite , Sybase SQL Server , MaxDB , Microsoft SQL ServerและFirebird ที่รวมอยู่ในชุดการแจกจ่าย TurboGears 1.x ใช้ CherryPy เป็นเซิร์ฟเวอร์และ SQLObject เป็น ORM [ 17 ]
- Storm — ORMจากCanonical Ltd. (ผู้ผลิตUbuntu )
- Dejavu [ 18 ] — ซอฟต์แวร์สาธารณะ ORM ที่ปลอดภัยต่อเธรดสำหรับแอปพลิเคชัน Python
- MongoEngine — แพลตฟอร์มแบบODMสำหรับเชื่อมต่อกับMongoDB
ภาษาเทมเพลต
- Mako [ 19 ] — ไลบรารีเทมเพลตที่เขียนด้วย Python สามารถใช้งานได้กับเครื่องมือ CherryPy อย่างง่าย[ 20 ]
- Cheetah — เครื่องมือสร้างเทมเพลตและโค้ดแบบโอเพนซอร์ส เขียนด้วยภาษา Python
- CherryTemplate — ภาษาสำหรับสร้างเทมเพลตสำหรับ CherryPy
- Genshi [ 21 ] [ 22 ] — ภาษาเทมเพลต XML ที่ทรงพลัง
- Jinja — ภาษาเทมเพลตอเนกประสงค์ CherryPy มีเครื่องมือสำหรับใช้เทมเพลต Jinja [ 23 ]
- Kid — ภาษาเทมเพลตแบบง่ายสำหรับคำศัพท์ที่ใช้ XML ซึ่งเขียนด้วย Python TurboGears 1.x ใช้ CherryPy เป็นเซิร์ฟเวอร์และ Kid เป็นส่วนหน้า[ 24 ]
วิกิ CherryPy ช่วย[ 25 ]ในการเลือกภาษาเทมเพลต
ผลิตภัณฑ์ที่ใช้ CherryPy
- TurboGears — CherryPy 2.x เป็นส่วนประกอบหลักของ TurboGears 1.x
- Splunk Enterprise - CherryPy 3.1.2 [ 26 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เชอร์รี่พาย
CherryPy เป็น เฟรมเวิร์ก สำหรับการพัฒนาเว็บแอปพลิเคชัน แบบเชิงวัตถุ โดยใช้ ภาษาโปรแกรม Python ออกแบบมาเพื่อ การพัฒนา เว็บ แอปพลิเคชัน อย่างรวดเร็ว โดย การห่อหุ้ม โปรโตคอล HTTP...
อินเทอร์เฟซแบบไพธอน
หนึ่งในเป้าหมายของผู้ก่อตั้งโครงการอย่าง Remi Delon คือการทำให้ CherryPy มีลักษณะเป็น แบบ Pythonic มากที่สุดเท่าที่จะเป็นไปได้ ซึ่งจะช่วยให้นักพัฒนาสามารถใช้เฟรมเวิร์กนี้ได้เหมือนกับโมดูล Python ทั่วไป และลืมไปได้เลย (จากมุมมองทางเทคนิค)...
สามารถใช้งานร่วมกับ CherryPy ได้
วิกิ CherryPy ช่วย [ 25 ] ในการเลือกภาษาเทมเพลต
ผลิตภัณฑ์ที่ใช้ CherryPy
TurboGears — CherryPy 2.x เป็นส่วนประกอบหลักของ TurboGears 1.x Splunk Enterprise - CherryPy 3.1.2 [ 26 ]