วันพุธที่ 30 กรกฎาคม พ.ศ. 2557

Proxy Pattern


>> นี่เป็น design pattern ที่ต้องการจะสื่อว่า แหล่งทรัพยากรหรือข้อมูลใดๆที่เราต้องการนั้นอยู่ไกลและราคาแพงครับ เพราะถ้าอยู่ใกล้มากๆและราคาถูกขนาดว่าเรียกปุ๊บได้ใช้ปั๊บ design นี้ก็คงเกิดยากจริงไหม หรือจะกล่าวว่าช่องทางการเข้าถึงทรัพยากรหรือข้อมูลใดๆนั้นมีน้อยก็ย่อมได้ จึงต้องเกิดการกระจายไงล่ะ แต่เหตุผลนี้ก็มีคะแนนน้อยมากอยู่ดี

>> รูปแบบ (pattern) แบบ proxy ก็คือเรามีแหล่งทรัพยากร ในที่นี้ก็คือ server เอาง่ายๆว่าเป็นเครื่อง server แล้วกัน (ใกล้ตัวดี) เก็บสิ่งที่เราต้องการเอาไว้ พอเราอยากได้ก็จะติดต่อไปยัง server แล้วโหลดสิ่งนั้นมา ติดต่อครั้งหนึ่งก็โหลดเอาจาก server ครั้งหนึ่ง เป็นเช่นนี้เรื่อยไปครับ

>> ทีนี้ถ้าพวกเรามีกันสิบคนติดต่อไปยัง server ก็จะได้การติดต่อสิบครั้งจริงไหม ต่างคนก็ต่างโหลดสิ่งที่ตัวเองต้องการ ก็ว่ากันไป แล้วถ้าพวกเรามีกันเป็นพันเป็นหมื่นหรือแสนหรือล้านคนล่ะ? เจ้า server ก็ต้องเหนื่อยลิ้นห้อยหรือไม่ก็หัวใจวายแน่ๆ

>> แก้ปัญหานี้อย่างไร เด็กชายสมชายยกมือตอบทันทีว่า ซื้อเครื่อง server เพิ่มครับ! ใช่ ถ้าสมชายมีเงินมากพอจะซื้อ server เพิ่มเรื่อยๆล่ะก็ ก็ถือว่าแก้ปัญหาได้แล้ว แต่ความจริงไม่เป็นเช่นนั้นสิ เพราะ server มักมีราคาแพงมากถึงมากที่สุด สำคัญคือทรัพยากรหรือข้อมูลบางอย่างก็ไม่ได้มีอยู่ทั่วไปเสียด้วย ไหนจะต้องป้อนข้อมูลซ้ำๆให้ server แบบเกลื่อนกลาดด้วยงั้นเหรอ ไม่~ไม่ดีเลย

>> จึงมีการคิดค้น proxy หรือเครื่อง proxy ซึ่งเป็นตัวแทนของ server ขึ้นมา ยามใดที่เราหรือใครๆต้องการทรัพยากรก็แค่ร้องขอไปที่ proxy ก่อน จากนั้น proxy จะตรวจสอบว่าทรัพยากรนี้มีเก็บอยู่ที่มันหรือไม่ ถ้าไม่มีมันก็จะไปโหลดเอาจาก server หนึ่งครั้ง แต่ถ้ามีแล้วมันก็จะไม่ไปโหลดที่ server อีก (โหลดครั้งเดียว) ดังนั้นทรัพยากรอะไรก็ตามที่ซ้ำๆกัน คนแรกที่ร้องขอผ่าน proxy เท่านั้นที่ต้องคอยนานหน่อย เพราะ proxy ต้องติดต่อไปโหลดจาก server ส่วนคนต่อๆไปไม่ต้องคอยนาน เพราะทรัพยากรนั้นมีเก็บไว้ที่ proxy แล้วนั่นเอง

>> ผมขอยกมาเพียง chart diagram นะครับ ส่วนโค้ดภาษาจาวาประยุกต์เขียน pattern นี้อย่างไร โปรดเยี่ยมชมลิงค์ต้นฉบับด้านล่างนี้ได้เลยครับ
http://www.tutorialspoint.com/design_pattern/proxy_pattern.htm

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

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