ขอตั้งกระทู้บ่นหน่อยเถอะ
แบบว่าผมใช้เวลาเป็นอาทิตย์แล้วในการศึกษาเรื่อง Client Synchronization ใช้พลังงานในการวิจัยเล็กๆ ไปมากพอดู เลยพอจะสรุปได้คร่าวๆ ว่า ปัจจุบันพวก Flex Middle Ware เป็นยังไงกันบ้าง
เราก็คงรู้กันดีอยู่แล้วว่า Flex ทำหน้าที่เป็นได้เพียง Client สวยๆ ลูกเล่นดีๆ (ที่บางคนว่าสู้ SilverLight กับ WPF ไม่ได้ แต่ผมว่า Flex ดีกว่า อิอิ) แต่เมื่อเราจะใช้มันเพื่อติดต่อกับ Database หรือทำ Business Logic ซึ่งเป็นสองสิ่งที่จำเป็นมากในการพัฒนา Enterprise Application เราจะต้องหา "ตัวกลาง" หรือ middle ware มาช่วย โดยในตลาดตอนนี้มี Product พวกนี้ออกมาหลายตัวดังนี้
ของเสียตังค์
1. LiveCycle Data Service ES (ก่อนหน้านี้ยังมีเวอร์ชั่นให้ใช้ฟรีอยู่ ซึ่งผมได้โพสไปในกระทู้ก่อนหน้านี้แล้ว ใครอยากใช้ของฟรีแล้วดี แบบถูกกฏหมายก็รีบไปดาวน์โหลดกันเน้อ ขอบอกว่าท่านไม่สามารถหาดาวน์โหลดจาก Torrent หรือ Rapidshare ได้นะครับผม แล้วก็ไม่รู้ด้วยว่า Adobe จะเก็บไฟล์นี้ไว้ใน site ของตัวเองนานแค่ไหน)
ของฟรี
1. Blaze DS
2. WebORB
3. FluorineFX
4. Granite Data Service
etc.
คงไม่ต้องสงสัยว่าตัวที่มีความสามารถเด่นที่สุด ณ ปัจจุบันนี้ก็หนีไม่พ้น LiveCycle Data Service (LC DS) โดยมันมีความสามารถคร่าวๆ ดังนี้
1. RPC (Remote Procedure Call) ซึ่งเป็น Feature ที่ Flex สนับสนุนโดยตรงอยู่แล้ว ทั้ง HTTPService (REST), WebService และ RemoteObject โดยการทำงานก็อย่างที่เราได้รู้ไปแล้วว่า เป็นการเรียกใช้ "function" บนฝั่ง Server โดยผ่าน Protocol ต่างๆ ทั้ง HTTP, SOAP หรือ AMF ซึ่งถ้าใครศึกษาแต่ส่วนของ Flex ในด้าน Client จะรู้ว่าตัว Flex เองจะ Provide มาให้เพียงเท่านี้ โดย Feature จะทำงานในรูปแบบ Request/Response
2. Messaging เป็นการทำ "Server Push" โดย Server ส่งข้อมูล (หรือ message) มายัง Client เองโดยผ่าน Protocol ที่มีชื่อว่า RTMP (Real Time Messaging Protocol) โดย Protocol นี้จะใช้สำหรับส่งข้อมูลในลักษณะ Real Time (คล้ายๆ กับ พวก Video/Audio Streaming นั่นแหล่ะ) สามารถใช้ ActionScript หรือ Java เป็นตัวส่ง message ก็ได้ (โดยของฝั่ง Java จะเรียกว่า JMS (Java Messaging Service)) เป็น Feature ที่ใช้ในโปรแกรมประเภท ตลาดหุ้น, รายงานสภาพอากาศ และอะไรก็ได้ที่ต้องมีการส่งข้อมูลมาอัพเดตข้อมูลได้เอง โดย Feature จะทำงานในรูปแบบ Publishing/Subscribing
3. Data Management Service อันนี้แหละครับพระเอกของ LC DS (และในความเห็นของผม เป็นพระเอกของ Rich Internet Application ในปี 2007-2009 เลยครับ) มันทำอะไรได้รู้มั๊ยครับ แต่น แต๊น... เอาคร่าวๆ นะครับ ผมว่าหลายคนคงเคยใช้ Access นะครับ เวลาเรากรอกข้อมูล หรือ update ข้อมูลใหม่ หรือลบข้อมูล เราไม่ต้องกด save ข้อมูล แต่ข้อมูลใน Database ก็เปลี่ยนแปลงโดยทันที เจ้าตัวนี้ก็ทำให้เวลาเรากรอกข้อมูลในหน้า page ข้อมูลจะทำการ "Synchronization" ไปยัง Database ทันที โดยเราไม่ต้องไป concern เลย เท่านั้นยังไม่พอ การ "Synchronization" นั้นยังทำให้ หน้าจอของ client ที่เปิดดูข้อมูลใน Table เดียวกันได้เห็นข้อมูลที่เปลี่ยนแปลงแบบ Real Time (คือ ทันทีที่มีคนแก้ข้อมูล คนที่นั่งดูอยู่อีก browser หนึ่ง จะเห็นการเปลี่ยนแปลงทันที) ซึ่งเขาเรียกว่า "Client Synchronization" แล้วยังมีความสามารถในการแก้ Conflict ที่เกิดขึ้นเมื่อมีการแก้ไข หรือลบ เรคคอร์ดเดียวกันผ่านมือของ client หลายๆ ตัวด้วย ทำให้แน่ใจได้ว่าสามารถทำงานแบบ Concurrency ได้อย่างแท้จริง และยังมีอีกหลาย Feature ที่อยู่ภายใต้ Data Management Service ที่เด็ดๆ อีกเพียบ ที่ทำให้ใครได้ลองใช้แล้วรับรอง "ตาโต" แน่นๆ
คราวนี้พวกเราเหล่านักพัฒนาที่มักจะไม่ค่อยจะพ้น SMEs เท่าไหร่ ซึ่งคงไม่น่าจะยินดีเท่าไหร่นักที่จะไปเพิ่มต้นทุนสินค้าด้วยการซื้อ LC DS มาใช้ เพราะปัจจุบันมีของฟรีใช้ดีอีกหลายตัว ดังเช่น 4 ตัวข้างบนที่ได้กล่าวมา
แล้วเราะจะเลือกใช้ตัวไหนดีล่ะ
มาดูที่ BlazeDS
BlazeDS นั้นก็เป็นของ Adobe และก็มีรูปแบบการใช้งานเหมือนกับ LC DS โดยทำออกมาให้อยู่ในรูปของ OpenSource เพื่อเข้าไปตีสนิทกับกลุ่ม Java Developer ให้มากขึ้น เพราะกลุ่มนักพัฒนากลุ่มนี้แทบจะเรียกได้ว่าเป็น De Facto ของวงการ Enterprise Application กันอยู่แล้ว Adobe จึงต้องปล่อยของที่ทำให้นักพัฒนากลุ่มนี้ชอบใจไปให้ใช้ นั่นคือ ของที่เรียกว่า OpenSource (นิยามของมันก็คือ ของฟรีที่ใช้งานได้ดี เปิดเผยซอร์ดโค๊ด แต่ใช้ยากส์ชิปเป๋ง)
BlazeDS นั้นเป็น Product ที่เป็น Subset ของ LC DS โดยทำการตัด Feature ที่มีชื่อว่า... Data Management Service ทิ้งไป (ตัดทิ้งไปทำไมฟะ ฮึ่ม) และตัด Protocol ที่เรียกว่า RTMS ที่ใช้ในการส่งข้อมูลแบบ Real Time ทิ้งไปด้วย (ทิ้งไปแต่ของดีๆ โอ๊ย ตรูจะบ้า) ถ้าใครจะมีความสุขกับการใช้ของที่ Adobe จงใจให้ดูเหมือน "ลูกเมียน้อย" ก็ใช้ไปเถอะครับ (พูดเป็นเล่นไป โปรเจ็กท์ล่าสุดที่ผมเพิ่งทำเสร็จไปก็ใช้ BlazeDS น๊า) ที่พูดนี่ไม่ใช่ว่า BlazeDS ไม่ดี เพียงแต่ผมอยากจะใช้ "Data Management Service" อ่ะ จะทำไงดี
คราวนี้ผมก็เริ่มวิจัยแล้วครับว่ายังมี Product ไหนบ้างที่สนับสนุน Feature นี้บ้าง แล้วผมก็ไปเจอผู้ช่วยชีวิตครับ นั่นคือ WebORB for Java 3.0
WebORB นั้นมีทุกอย่างที่ Blaze DS มี และยังเพิ่มส่วนของ Data Management Service เข้าไปด้วย
แต่ ครับยังมีแต่ Data Management Service ไม่มีในส่วนของ Synchronization ครับ โดยทางบริษัทเขาก็บอกมานะว่าเขาได้เพิ่ม Feature นี้เข้าไปใน Product แล้ว ดังรูปข้างล่างนี้

ตรงที่ผมขีดเส้นสีเขียวไว้นั่นแหละครับ แบบว่าเป็น feature สุดท้ายหลังเวอร์ชั่นเบต้า แล้วคลอดออกมาเป็นเวอร์ชั่น 3.0 (ซึ่งเป็นเวอร์ชั่นล่าสุด) เลย
แต่ผลปรากฏว่า "มันไม่ WORK" ครับ เพราะถ้าผมลองเลียนแบบการใช้งานโดยเปิด browser หลายๆ ตัว แล้วให้หน้าจอนึงทำ CRUD แล้ว แต่หน้าจอที่เหลือมันไม่ยอม "Synchronized" กับหน้าจอแรกเลย ก็แปลว่า Feature น้องใหม่ของ WebORB ตัวนี้ "ยังไม่ WORK" ครับ (เอ้า ถ้าเซียน WebORB ผ่านมาแล้วไม่เห็นด้วย โปรดแย้งเลยนะครับ ผมจะยินดีเป็นอย่างยิ่ง เพราะนั่นแปลว่าผมทำผิด ซึ่งผมจะดีใจมาก)
ผมก็ต้องรอ WebORB ให้จัดการกับ Feature ให้มัน work เสียก่อน จึงค่อยตัดสินใจไปใช้
แล้วผมไปรอ WebORB ทำไม ในเมื่อ Feature ก็มีอยู่ใน LC DS อยู่แล้ว เหตุผลน่ะหรือครับ
1. ตอนนี้ LC DS ไม่มีแบบให้ Download ฟรีๆ แล้ว ที่ให้ Download ก็มีแต่แบบ trial ที่ใช้ได้ในเวลาจำกัด ในขณะที่ WebORB นั้นให้ใช้งานได้ฟรีๆ แบบ Full feature "จริงๆ" โดยสิ่งที่ LC DS มี WebORB มีหมด (ขาดแต่ Client Synchronization อย่างที่บอกไปแล้ว)
2. Learning Curve และความซับซ้อนของการพัฒนาโดยใช้ LC DS นั้นค่อนข้างสูง แต่ทดแทนได้ด้วย Blog และ เอกสารที่มีพอสมควร (ไม่มาก ไม่น้อย แต่ก็ค่อนข้างน้อยนะกับ Product ระดับนี้) ไม่เหมือนกับ WebORB ที่ใช้งานง่ายกว่า แถมมี Code Generator ด้วย ทำให้ลดเวลาในการเขียน Code ทาง ฝั่ง Server ที่ใช้ในการติดต่อกับ Database ไปเยอะเลย
3. การ Deploy App. ไปยัง server อื่นๆ นอกจาก JRUN นั้นซับซ้อนมาก และก็มีข้อผิดพลาดรอเราอยู่เพียบ (ลองมาแล้ว ปวดใจทีเดียว) ไม่เหมือนกัน WebORB ที่แค่ copy ไฟล์ weborb.war ไปยังโฟลเดอร์ webapps ของ Web Server ก็ใช้งานได้เลย
พอเปรียบมวยกันแล้ว เห็นเลยว่า WebORB นั้นค่อนข้างเหนือกว่า แต่หมัดเด็ดของ LC DS ก็ยังคงอยู่ที่ Data Management Service ที่ WebORB นำมา implement ได้เพียงบางส่วนเท่านั้น แถมส่วนที่สำคัญที่สุดของ Feature นี้ (ตามความเห็นของผม) คือ Client Synchronization ก็ดันไม่มีเสียอีก เฮ้อ ถ้า App. ไหนต้องใช้ Data Management Service ก็คงจะต้องใช้ LC DS ไปก่อน แต่ถ้าไม่ซีเรียสมาก คงหันไปใช้ WebORB แน่นอน
You need to be a member of Thailand Flex and AIR developer to add comments!
Join this Ning Network