ซึ่งแตกต่างจาก RequestFactory ซึ่งมีความสามารถในการจัดการและทดสอบข้อผิดพลาดที่ไม่ดี (เนื่องจากมันประมวลผลสิ่งต่างๆส่วนใหญ่ภายใต้ประทุนของ GWT) RPC ช่วยให้คุณใช้วิธีการที่มุ่งเน้นบริการได้มากขึ้น RequestFactory ใช้วิธีการฉีดขึ้นรูปแบบพึ่งพาที่ทันสมัยมากขึ้นซึ่งสามารถให้แนวทางที่เป็นประโยชน์หากคุณต้องการเรียกใช้โครงสร้างข้อมูลโพลีมอร์ฟิกที่ซับซ้อน เมื่อใช้ RPC โครงสร้างข้อมูลของคุณจะต้องแบนมากขึ้นเนื่องจากจะทำให้ยูทิลิตี้การจัดระเบียบของคุณสามารถแปลระหว่างโมเดล json / xml และ java ของคุณได้ การใช้ RPC ยังช่วยให้คุณสามารถใช้สถาปัตยกรรมที่มีประสิทธิภาพมากขึ้นตามที่ยกมาจากส่วน gwt dev บนเว็บไซต์ของ Google
"การปรับใช้ไคลเอนต์ / เซิร์ฟเวอร์อย่างง่าย
วิธีแรกและตรงไปตรงมาที่สุดในการนึกถึงคำจำกัดความของบริการคือการถือว่าเป็นส่วนหลังทั้งหมดของแอปพลิเคชันของคุณ จากมุมมองนี้รหัสฝั่งไคลเอ็นต์คือ "ส่วนหน้า" ของคุณและรหัสบริการทั้งหมดที่ทำงานบนเซิร์ฟเวอร์คือ "ส่วนหลัง" หากคุณใช้แนวทางนี้การติดตั้งบริการของคุณมีแนวโน้มที่จะเป็น API ที่ใช้งานทั่วไปมากกว่าซึ่งไม่ได้เชื่อมโยงอย่างแน่นหนากับแอปพลิเคชันเฉพาะ คำจำกัดความบริการของคุณอาจเข้าถึงฐานข้อมูลโดยตรงผ่าน JDBC หรือ Hibernate หรือแม้แต่ไฟล์ในระบบไฟล์ของเซิร์ฟเวอร์ สำหรับแอปพลิเคชันจำนวนมากมุมมองนี้เหมาะสมและมีประสิทธิภาพมากเนื่องจากลดจำนวนชั้นลง
การปรับใช้หลายชั้น
ในสถาปัตยกรรมแบบหลายชั้นที่ซับซ้อนมากขึ้นคำจำกัดความบริการ GWT ของคุณอาจเป็นเกตเวย์ที่มีน้ำหนักเบาซึ่งเรียกผ่านไปยังสภาพแวดล้อมเซิร์ฟเวอร์ส่วนหลังเช่นเซิร์ฟเวอร์ J2EE จากมุมมองนี้บริการของคุณอาจถูกมองว่าเป็น "ครึ่งเซิร์ฟเวอร์" ของอินเทอร์เฟซผู้ใช้ของแอปพลิเคชันของคุณ แทนที่จะเป็นวัตถุประสงค์ทั่วไปบริการต่างๆจะถูกสร้างขึ้นสำหรับความต้องการเฉพาะของอินเทอร์เฟซผู้ใช้ของคุณ บริการของคุณจะกลายเป็น "ส่วนหน้า" ไปยังคลาส "ส่วนหลัง" ที่เขียนโดยการรวมการเรียกเข้าด้วยกันไปยังชั้นบริการส่วนหลังที่มีวัตถุประสงค์ทั่วไปมากขึ้นซึ่งนำไปใช้งานเช่นเป็นคลัสเตอร์ของเซิร์ฟเวอร์ J2EE สถาปัตยกรรมประเภทนี้เหมาะสมหากคุณต้องการให้บริการส่วนหลังของคุณทำงานบนคอมพิวเตอร์ที่แยกจากเซิร์ฟเวอร์ HTTP ของคุณ "
โปรดทราบว่าการตั้งค่าบริการ RequestFactory เดียวต้องสร้างคลาส java ประมาณ 6 คลาสโดยที่ RPC ต้องการเพียง 3 โค้ดเพิ่มเติม == มีข้อผิดพลาดและความซับซ้อนมากขึ้นในหนังสือของฉัน
RequestFactory ยังมีค่าใช้จ่ายเพิ่มขึ้นอีกเล็กน้อยในระหว่างการประมวลผลคำขอเนื่องจากต้องมีการจัดลำดับแบบอนุกรมระหว่างพร็อกซีข้อมูลและโมเดลจาวาจริง อินเทอร์เฟซที่เพิ่มเข้ามานี้จะเพิ่มรอบการประมวลผลพิเศษซึ่งสามารถเพิ่มขึ้นในสภาพแวดล้อมขององค์กรหรือการผลิต
ฉันไม่เชื่อด้วยว่าบริการ RequestFactory เป็นบริการซีเรียลไลเซชั่นเหมือนบริการ RPC
สรุปแล้วหลังจากใช้ทั้งสองอย่างมาระยะหนึ่งแล้วฉันมักจะไปกับ RPC เนื่องจากมีน้ำหนักเบากว่าทดสอบและดีบักง่ายกว่าและเร็วกว่าโดยใช้ RequestFactory แม้ว่า RequestFactory อาจจะดูหรูหราและขยายได้มากกว่า แต่ส่วนของเคาน์เตอร์ RPC ความซับซ้อนที่เพิ่มเข้ามาไม่ได้ทำให้เป็นเครื่องมือที่ดีกว่าที่จำเป็น
ความเห็นของฉันคือสถาปัตยกรรมที่ดีที่สุดคือการใช้เว็บแอปสองตัวไคลเอนต์หนึ่งเครื่องและเซิร์ฟเวอร์หนึ่งเครื่อง เซิร์ฟเวอร์เป็นเว็บแอป java ทั่วไปที่มีน้ำหนักเบาซึ่งใช้ไลบรารี servlet.jar ไคลเอนต์คือ GWT คุณทำการร้องขอ RESTful ผ่าน GWT-RPC ในฝั่งเซิร์ฟเวอร์ของเว็บแอปพลิเคชันไคลเอนต์ ฝั่งเซิร์ฟเวอร์ของไคลเอ็นต์เป็นเพียงการส่งผ่านไปยังไคลเอ็นต์ apache http ซึ่งใช้ทันเนลที่คงอยู่ในตัวจัดการคำร้องขอที่คุณเรียกใช้เป็น servlet เดียวในเว็บแอ็พพลิเคชันเซิร์ฟเวอร์ แอปพลิเคชันบนเว็บ servlet ควรมีเลเยอร์แอปพลิเคชันฐานข้อมูลของคุณ (hibernate, cayenne, sql และอื่น ๆ ) ซึ่งจะช่วยให้คุณสามารถแยกโมเดลวัตถุฐานข้อมูลออกจากไคลเอนต์จริงได้อย่างเต็มที่โดยให้วิธีที่ขยายได้และมีประสิทธิภาพมากขึ้นในการพัฒนาและทดสอบแอปพลิเคชันของคุณ จริงอยู่ที่มันต้องใช้เวลาในการตั้งค่าเริ่มต้นเล็กน้อย แต่ในท้ายที่สุดคุณสามารถสร้างโรงงานการร้องขอแบบไดนามิกที่อยู่นอก GWT ได้ สิ่งนี้ช่วยให้คุณสามารถใช้ประโยชน์จากสิ่งที่ดีที่สุดของทั้งสองโลกได้ ไม่ต้องพูดถึงความสามารถในการทดสอบและเปลี่ยนแปลงฝั่งเซิร์ฟเวอร์ของคุณโดยไม่ต้องมีไคลเอ็นต์ gwt คอมไพล์หรือสร้าง