ฉันใหม่กับ Java EE และฉันพยายามทำความเข้าใจแนวคิดของ Local interfaces และ Remote interfaces
ในเวอร์ชั่นเริ่มต้นของข้อมูลจำเพาะ EJB EJB เป็น "สันนิษฐาน" เป็นส่วนประกอบระยะไกลและวิธีเดียวที่จะเรียกใช้งานได้คือทำการโทรทางไกลโดยใช้ความหมายของ RMI และค่าใช้จ่ายทั้งหมดนั้นหมายถึง (การเรียกเครือข่ายและการทำให้เป็นอันดับวัตถุ การเรียกใช้เมธอด) ลูกค้า EJB ต้องจ่ายค่าปรับประสิทธิภาพนี้แม้ว่าจะจัดวางในเครื่องเสมือนเดียวกันกับคอนเทนเนอร์ EJB
ต่อมาซันตระหนักว่าแอปพลิเคชันทางธุรกิจส่วนใหญ่ไม่ได้กระจาย EJB ในระดับที่แตกต่างกันและพวกเขาแก้ไขสเป็ค (ใน EJB 2.0) โดยนำเสนอแนวคิดของ Local Interface เพื่อให้ลูกค้าจัดวางในเครื่องเสมือนเดียวกันกับคอนเทนเนอร์ EJB สามารถโทร EJB ได้ การเรียกใช้เมธอดโดยตรงโดยอ้อมผ่านความหมาย RMI ทั้งหมด (และค่าใช้จ่ายที่เกี่ยวข้อง)
ฉันได้รับการบอกแล้วว่าหนึ่งในข้อดีของ Java EE คือง่ายต่อการปรับขนาด (ซึ่งฉันเชื่อว่าคุณสามารถปรับใช้ส่วนประกอบต่าง ๆ บนเซิร์ฟเวอร์ที่แตกต่างกัน)
Java EE สามารถปรับขนาดได้ แต่นี่ไม่ได้แปลว่าจะกระจายคอมโพเนนต์ คุณสามารถรันแอปพลิเคชัน Web + EJB บนคลัสเตอร์โดยไม่ต้องแยกระดับเว็บและระดับ EJB
คุณควรจะใช้อินเทอร์เฟซระยะไกลหรือไม่หากคุณคาดว่าแอปพลิเคชันของคุณจะมีส่วนประกอบที่แตกต่างกันในเซิร์ฟเวอร์ที่แตกต่างกัน และใช้ Local interfaces หากแอปพลิเคชันของคุณอยู่บนเซิร์ฟเวอร์เดียวเท่านั้นหรือ
ฉันอยากจะพูดแบบนี้: ใช้ remote interface ถ้าไคลเอนต์ไม่ได้อยู่ใน JVM เดียวกัน (นี่ไม่ได้หมายความว่าใช้เพียงเซิร์ฟเวอร์เดียว / JVM)
(... ) เริ่มต้นโดยใช้ Local Interface และค่อยๆอัพเกรดเป็น Remote interfaces ที่ใช้งานได้?
ฉันอาจจะเริ่มจากการใช้ Local interfaces และตามคำแนะนำแล้วการสลับไปใช้อินเทอร์เฟซระยะไกลนั้นไม่จำเป็นเสมอไป (คุณสามารถทำคลัสเตอร์โครงสร้างcollocated )
ฉันขอแนะนำให้ตรวจสอบทรัพยากรที่กล่าวถึงด้านล่าง (2 รายการแรกค่อนข้างเก่า แต่ยังมีความเกี่ยวข้องและ 2 รายการล่าสุดกว่า)
ทรัพยากร