วันอาทิตย์ที่ 13 เมษายน พ.ศ. 2557

คึกอยากจะทบทวน GWT Framework part 7-2 (end)

Sample GWT Picture

: Remote Procedure Calls (RPC) Code Example

จาก part ที่ 7-1 แนะนำไปแล้วสี่คลาส ได้แก่ Product bean, ProductService remote service interface, ProductServiceAsync interface และ ProductServiceImpl class implementation

คราวนี้ก็มาทำ test ง่ายๆด้วยคลาส TestBeginMVP และเรื่องหยุมหยิมของ servlet เพื่อ config พวกมันให้ทำงานร่วมกัน ดังนี้ครับ

(ดูภาพประกอบนะ ถ้าไม่เข้าใจอะ) ลอจิกของคลาส TestBeginMVP ก็คือสร้างออบเจ็กต์จาก interface โดยมี instance ชื่อว่า productServiceAsync เจ้า instance นี้เมื่อร้องขอรายการสินค้าทั้งหมดจาก getProducts ผลคือมันบังคับให้เรา implement ผลลัพธ์ต่อไปนี้ที่เป็นลักษณะของ async callback
1) onSuccess ผลสำเร็จนี้เท่านั้นผลลัพธ์จึงจะถูกส่งกลับมาแสดงผลได้
2) onFailure ล้มเหลวด้วยนานาสาเหตุ อาจเป็นที่เน็ตเวิร์คด้วยก็ได้

โดยผลลัพธ์ทั้งสองส่วนนี้มีเวลาตอบสนองไม่แน่นอน เราอาจคอยนานเป็นนาทีหรือมากกว่ากว่ามันจะบอกได้ว่า onSuccess หรือ onFailure ฉะนั้นระหว่างที่คอยเราก็ไปทำงานอื่นๆของหน้านี้ได้จ๊ะ (ถ้ามี)

ต่อมาด้านขวาของภาพคือการ config servlet แบ่งเป็นสองส่วนคือ
- servlet
- servlet-mapping

servlet เฉยๆและ servlet-mapping ต้องใช้ชื่อเดียวกัน (ดูกรอบสีส้ม) เจ้า servlet เฉยๆนี้จะบอกว่าคลาสที่เราต้องการลงทะเบียนอยู่ที่ไหนใน project ของเรา (ไล่ไปตามชื่อ package)

ส่วน servlet-mapping จะบอกว่าคลาสที่เราต้องการลงทะเบียนนั้นน่ะจะถูกเรียกด้วย URL อะไร (ตั้งมา แนะว่าเป็นตัวเล็ก) โดยใช้เครื่องหมาย / คั่นต่อจากชื่อของ project

***นิดหน่อย ใครที่ยังรันไม่ผ่านให้กลับไปดูที่ ProductService interface เพราะ GWT มีกลไกชื่อ @RemoteServiceRelativePath ซึ่งหมายความว่า หาก URL ข้างต้นส่งจากเครื่องผู้ใช้มายัง server ให้ URL นั้นมาทำงานกับ RemoteService interface ตัวนี้นะ (ก็ตัวที่เขียน @RemoteServiceRelativePath ไว้ข้างบนเนี่ย) มันก็จะสามารถจัดการคำร้องขอนั้นๆได้อย่างไรล่ะ

โอเคจบแล้วจร้า อ้อ ถ้าเกิดว่าผลลัพธ์มันออกมารกๆ (คือมีโค้ด HTML ปะปน ก็ให้ไปเปิดไฟล์ที่ชื่อ TestBeginMVP.html นะครับ (ดูกรอบสีเขียวในภาพ) จากนั้นก็ลบโค้ดในส่วนของ body ให้สะอาดตาหน่อย เป็นใช้ได้แล้วล่ะ

คราวหน้ามาดูว่าเราจะเพิ่ม MVP concept ให้กับ project นี้อย่างไร
เคเค ฝันดีครับคืนนี้

ไม่มีความคิดเห็น:

แสดงความคิดเห็น