อะไรคือข้อดีของการใช้ Apache CXF บน Apache Axis และในทางกลับกัน
อะไรคือข้อดีของการใช้ Apache CXF บน Apache Axis และในทางกลับกัน
คำตอบ:
โปรดจำไว้ว่าฉันมีอคติอย่างสมบูรณ์ (PMC Chair of CXF) แต่ความคิดของฉัน:
จากมุมมอง "โครงการสามารถทำสิ่งที่ฉันต้องการให้ทำ" อย่างเคร่งครัดทั้งสองมีความเท่าเทียมกัน มี "กรณีขอบ" บางอย่างที่ CXF สามารถทำได้โดยที่ Axis 2 ไม่สามารถและกลับกันได้ แต่สำหรับ 90% ของกรณีการใช้งานจะทำงานได้ดี
ดังนั้นจึงมีหลายสิ่งอื่นนอกเหนือจาก "คุณสมบัติกล่องกาเครื่องหมาย"
API - CXF ผลัก "API ตามมาตรฐาน" (ตามมาตรฐาน JAX-WS) ในขณะที่ Axis2 ทั่วไปมุ่งสู่สิ่งที่เป็นกรรมสิทธิ์ ที่กล่าวว่าแม้ CXF อาจต้องการการใช้ API ที่เป็นกรรมสิทธิ์เพื่อกำหนดค่า / ควบคุมสิ่งต่าง ๆ นอกข้อกำหนด JAX-WS สำหรับ REST นั้น CXF ยังใช้มาตรฐาน API (JAX-RS ที่สอดคล้องกับมาตรฐาน) แทนสิ่งที่เป็นกรรมสิทธิ์ (ใช่ฉันทราบถึง JAX-WS รันไทม์ใน Axis2 แต่เครื่องมือและเอกสารและทุกอย่างไม่ได้กำหนดเป้าหมาย)
ประเด็นด้านชุมชนและความช่วยเหลือ - CXF ภาคภูมิใจในการตอบสนองต่อปัญหาและทำให้ "ผู้ใช้" พร้อมใช้งานสำหรับผู้ใช้ CXF ทำ 12 fixpacks สำหรับ 2.0.x (เปิดตัวสองปีที่แล้วดังนั้นประมาณ 2 เดือน), 6 fixpacks ถึง 2.1.x และตอนนี้ 3 สำหรับ 2.2.x Axis2 ไม่ได้ "สนับสนุน" เวอร์ชันเก่ากว่าจริงๆ คุณอาจต้องรอจนกว่าจะถึงรุ่นใหญ่ครั้งถัดไป (พวกเขาเฉลี่ยประมาณทุก ๆ 9-10 เดือนหรือมากกว่านั้น) เพื่อรับการแก้ไข (แม้ว่าจะมีทั้งคุณสามารถคว้ารหัสที่มาและแก้ไข / แก้ไขด้วยตัวเองต้องรักโอเพนซอร์ส)
บูรณาการ - CXF มีการรวมสปริงที่ดีขึ้นมากถ้าคุณใช้สปริง การกำหนดค่าทั้งหมดและทำผ่านสปริง นอกจากนี้ผู้คนมักจะมองว่า CXF เป็น "แบบฝัง" (ฉันไม่เคยดู Axis2 จากมุมมองนี้) ไปยังแอปพลิเคชันอื่น ไม่แน่ใจว่าสิ่งที่ชอบสำหรับคุณ
ประสิทธิภาพ - ทั้งคู่ทำงานได้ดีมาก ฉันคิดว่าฐานข้อมูล ADB ที่เป็นกรรมสิทธิ์ของ Axis2 นั้นเร็วกว่า CXF เล็กน้อย แต่ถ้าคุณใช้ JAXB (API ตามมาตรฐานอีกครั้ง) CXF นั้นเร็วกว่าเล็กน้อย เมื่อใช้สถานการณ์ที่ซับซ้อนมากขึ้นเช่น WS-Security ความปลอดภัย "เอ็นจิ้น" (WSS4J) จะเหมือนกันสำหรับทั้งคู่ดังนั้นประสิทธิภาพจึงเทียบเท่ากันอย่างสมบูรณ์
ไม่แน่ใจว่าตอบคำถามได้หรือไม่ หวังว่าอย่างน้อยก็ให้ข้อมูลบางอย่าง
:-)
แดน
อีกสิ่งหนึ่งคือกิจกรรมของชุมชน เปรียบเทียบทราฟฟิกรายการส่งเมลสำหรับ Axis และ cxf (2013)
ดังนั้นหากนี่คือตัวบ่งชี้การใช้งานดังนั้นแกนจึงใช้งานน้อยกว่า cxf
เปรียบเทียบ CXF และแกนสถิติที่ Ohloh CXF มีกิจกรรมที่สูงมากในขณะที่ Axis มีกิจกรรมโดยรวมต่ำ
นี่คือแผนภูมิสำหรับจำนวนการคอมมิทชั่นเมื่อเวลาผ่านไปสำหรับ CXF (สีแดง) และ Axis1 (สีเขียว) Axis2 (สีฟ้า)
ข้อดีของ CXF:
ข้อดีของ Axis2:
โดยสรุป:จากรายการที่ได้เปรียบข้างต้นมันทำให้เรามีความคิดที่ดีในการเปรียบเทียบ Axis2 และ CXF กับข้อดีของพวกเขาเอง พวกเขาทั้งหมดมีพื้นที่ที่ได้รับการพัฒนาที่แตกต่างกันในบางสาขา CXF นั้นสามารถกำหนดค่าได้อย่างมากผสานรวมและมีชุดเครื่องมือที่หลากหลายและได้รับการสนับสนุนและใกล้กับชุมชน Java, Axis2 ได้ใช้วิธีการที่ทำให้มีลักษณะคล้ายกับ มันเป็นภาษาการเขียนโปรแกรมหลายภาษา เนื่องจากความเป็นอิสระ Axis2 จึงให้ยืมตัวเองไปยังบริการเว็บที่โดดเดี่ยวเป็นอิสระจากแอพพลิเคชั่นอื่น ๆ และมีฟังก์ชั่นที่หลากหลาย
ในฐานะนักพัฒนาเราต้องให้มุมมองของเราในการเลือกสิ่งที่ถูกต้องไม่ว่าคุณจะเลือกกรอบงานใดคุณจะได้รับประโยชน์จากชุมชนโอเพ่นซอร์สที่มีเสถียรภาพ ในแง่ของประสิทธิภาพฉันทำการทดสอบตามฟังก์ชั่นเดียวกันและกำหนดค่าในเว็บคอนเทนเนอร์เดียวกันผลลัพธ์แสดงว่า CXF ทำงานได้ดีกว่า Axis2 เล็กน้อยเคสเดียวอาจไม่สะท้อนความสามารถและประสิทธิภาพของพวกเขา
ในบทความวิจัยบางเรื่องพบว่าการสร้างฐานข้อมูล ADB ที่เป็นกรรมสิทธิ์ของ Axis2 นั้นเร็วกว่า CXF เล็กน้อยเนื่องจากไม่มีคุณสมบัติเพิ่มเติม (WS-Security) Apache AXIS2 เป็นเฟรมเวิร์กที่ใช้มากที่สุด แต่ Apache CXF มีคะแนนเหนือกว่า Web Services Framework อื่น ๆ เมื่อเปรียบเทียบกับความง่ายในการพัฒนาแนวโน้มของอุตสาหกรรมในปัจจุบันประสิทธิภาพการทำงานดัชนีชี้วัดโดยรวมและคุณสมบัติอื่น ๆ (เว้นแต่มีการสนับสนุน )
ตามประสบการณ์ของฉัน CXF นั้นดีในแง่ของการกำหนดค่าให้เข้ากับสภาพแวดล้อมของสปริง นอกจากนี้คลาสที่สร้างนั้นง่ายต่อการเข้าใจ และเนื่องจากมันใช้งานได้มากกว่าเราได้รับการสนับสนุนที่ดีกว่าเมื่อเปรียบเทียบกับ AXIS หรือ AXIS2
ข้อดีอีกประการของ CXF: เชื่อมต่อกับเว็บเซิร์ฟเวอร์โดยใช้การพิสูจน์ตัวตน NTLMV2 นอกกรอบ (ใช้โดย Windows 2008 และสูงกว่า) ก่อนใช้ CXF ฉันแฮ็ก Axis2 เพื่อใช้ HTTPClient V4 + JCIFS เพื่อให้เป็นไปได้