วันศุกร์ที่ 11 พฤษภาคม พ.ศ. 2555

ปรับ App ให้เหมาะสมกับ Device Portrait vs. Landscape

Portrait vs. Landscape
Portrait คือการแสดงผลแบบแนวตั้ง Landscape คือการแสดงผลแบบแนวนอน ซึ่งทั้งสองแบบนั้นเป็นคุณสมบัติพื้นฐานใน Windows Phone 7 Application แต่ค่าเริ่มต้นใน Silverlight จะเป็นแบบ Portrait ส่วน XNA จะเป็นแบบ Landscape (ซึ่งเกมส์จะแสดงผลได้ดี ถ้าจอเป็นแนวนอน) สำหรับในตอนนี้ผมจะเน้นไปที่ Silverlight Application และเราจะทำอย่างไรเมื่อมีการเปลี่ยนจากแนวตั้ง เป็นแนวนอนโดยให้ Application ของเราไม่ได้รับผลกระทบ
หน้าจอเริ่มต้นคือ “Portrait” อย่างเดียวเหรอ?
ถ้าคุณเริ่ม Project ใหม่ คุณจะเห็นสองพร๊อพเพอตี้ที่อยู่บนสุดของหน้า MainPage.xml คือ
สำหรับ SupportedOrientation เป็นการเซ็ตตำแหน่งหน้าจอแรกให้กับApplication ของคุณ โดยมีค่าอยู่ สามค่าคือ
  • - Portrait (default)
  • - Landscape
  • - PortraitOrLandscape
สำหรับ Orientation เป็นค่าเริ่มต้นให้กับ Application ของคุณเมื่อมีการเริ่มต้นใหม่ ซึ่งมีอยู่หลายค่าที่คุณสามารถเพิ่มเติมเข้าไปได้ดังนี้
  • - Landscape
  • - LandscapeLeft
  • - LandscapeRight
  • - Portrait
  • - PortraitDown
  • - PortraitUp
ข้อแนะนำหากคุณต้องการใช้โหมด Landscape คุณควรกำหนดค่าใน SupportedOrientationเป็น Landscape ด้วย จะรายการด้านบน คุณไม่จำเป็นให้ Application เริ่มต้นแบบ Portrait หรือ Landscape เพียงอย่างเดียว คุณสามารถให้ Application ของคุณเริ่มจากมุมไหนก็ได้บนหน้าจอ

ปรับหน้าจอ App ตามใจคุณ

มีอยู่สองวิธีในการปรับแต่งค่า Orientation คือ แบบแรก คือกำหนดค่า SupportedOrientationเป็น “PortraitOrLandscape” ซึ่ง OS บนเครื่องจะช่วยคุณเองในจุดๆนี้ มีอยู่หลายกรณีที่ผมไม่แนะนำ เพราะจะทำให้ App ของคุณไม่พอดีกับหน้าจอบนเครื่อง แบบที่สองคือแก้ไขผ่าน Code ซึ่งผมจะแสดงตัวอย่างให้ในลำดับถัดไป
เริ่มหน้าจอแรกเป็นแบบแนวตั้งก่อน ตัวอย่างรูปด้านล่าง
คุณจะเห็นว่าในแนวนอนของ Application ปุ่มส่วนมากจะแสดงผลไม่ตรงตามที่ควรจะเป็น วิธีการจัดการง่าย เพียงแค่นำหัวข้อ “เครื่องคิดเลข” ทำให้หายไป เพราะผมเชื่อว่าผู้ใชงานทั่วไป ไม่ได้สนใจหากรู้จัก Application นั้นแล้ว ซึ่งจะทำให้ปุ่มตัวเลขสามารถเรียงตัวได้อย่างถูกต้อง ผมได้แก้ไข Code บางส่วนในหน้า MainPage.xaml.csในการแก้ไขให้ Application สามารถแสดงผลทั้งแนวตั้งและแนวนอน
จุดประสงค์หลักของบทความวันนี้ เพราะผมคิดว่านักพัฒนาควรให้ความสนใจในเรื่องการแสดงผล Application ทั้งแนวตั้งและแนวนอน ซึ่งคุณสามารถนำไปประยุกต์ให้ Application ของคุณให้มีความแตกต่างจาก Application อื่นๆได้
ผลที่ได้จากการแก้ไข Code เป็นดังนี้
การทำหน้าจอให้เหมาะสม จะส่งผลถึงการทำ Accelerometer ด้วย

วันพฤหัสบดีที่ 10 พฤษภาคม พ.ศ. 2555

Microsoft เริ่มให้น้ำหนักกับ HTML5 มากกว่า Silverlight ของตนเอง ?

มีข่าวออกมามากมายเกี่ยวกับ Microsoft ว่า กำลังจะให้น้ำหนักกับ HTML5 มากกว่าเทคโนโลยี Silverlight ของตนเอง

ในการสัมมนา Professional Developers Conference (PDC) ของ Microsoft ที่ผ่านมา Microsoft พูดถึงการรองรับ และการสนับสนุน HTML5 ในซอล์ฟแวร์ Microsoft มากขึ้นเรื่อยๆ แต่พูดถึง Silverlight ของตนเองน้อยมาก

นาย Bob Muglia ผู้บริหารของ Microsoft ดูแลด้าน server and tools business กล่าวว่า “Silverlight จะยังคงพัฒนาอย่างต่อเนื่อง เพื่อให้งานได้กับหลากหลาย OS และ browser โดยเฉพาะบน Windows Phone .. แต่ HTML5 จะเป็นมาตรฐานการทำงานข้าม platform ที่แท้จริง รวมทั้งบนระบบปฏิบัติการ iOS ของ Apple ด้วย”
อย่างไรก็ตาม หลังสัมมนา เขาก็ได้ออกมาย้ำว่า Microsoft จะยังพัฒนา Silverlight อย่างต่อเนื่องบน Windows Phone และอุปกรณ์อื่นๆ เพียงแต่มองว่า HTML5 จะรองรับการทำงานข้ามเครื่องได้กว้างกว่าในอนาคต

นอกจากนี้ นาย Dean Hachmovitch ผู้จัดการของฝ่าย Internet Explorer ของบริษัท Microsoft ได้พูดอย่างชัดเจนว่า “เว็บในอนาคต คือ HTML5”
มาตรฐาน HTML5 นั้น ได้ถูกเริ่มต้นผลักดันอย่างมาก โดย Apple ในช่วงต้นปีนี้ 2010 หลังจากที่ออกจำหน่ายเครื่อง iPad และ iPhone ที่นำเทคโนโลยี HTML5 มาใช้งานแทน Adobe Flash และ Steve Jobs ก็เคยพูดว่า “Flash กำลังจะตาย HTML5 จะเป็นอนาคต”

การใช้งานอินเตอร์เน๊ตต่อไป จะมีมากกว่าแค่ตัวหนังสือ แต่จะมีภาพเคลื่อนไหว วิดีโอ เสียง, การใช้งานข้าม platform, การทำงานผ่านมือถือมากขึ้น ดังนั้น มาตรฐานในการรองรับสื่อเหล่านี้เป็นสิ่งที่จำเป็นและสำคัญ

แต่อย่างไรก็ดี HTML5 ยังเป็นแค่ มาตรฐานฉบับร่าง ในองค์กร World Wide Web Consortium (W3C) และกำลังถูกร่างให้เป็น มาตราฐานในการแสดงผลหน้าเว็บไซด์ โดยเฉพาะการเล่นภาพเคลื่อนไหว และวิดีโอ, หรือ การรองรับการทำงาน drag-and-drop, หรือการรองรับ การ Plug-in จากผู้ผลิตรายอื่นๆ อย่างเช่น Silverlight ของ Microsoft หรือ Flash ของ Adobe ด้วย

แม้ว่า HTML5 กำลังค่อยๆ ถูกยอมรับ และเริ่มเข้ามาเป็นมาตรฐานมากขึ้นเรื่อยๆ แต่แน่นอนว่า Adobe Flash และ Microsoft Silverlight จะยังคงไม่ถูกตัดทิ้งไปในระยะอันใกล้นี้แน่ เพราะยังมีเว็บไซด์ และโปรแกรมอีกจำนวนมาก ที่ถูกเขียนมาให้ใช้กับ Flash หรือ Silverlight และการเปลี่ยนเขียนขึ้นใหม่ เพื่อไปใช้ HTML5 ก็คงต้องใช้เวลาอีกพอสมควรทีเดียว
ดูเหมือนทั้ง Apple และ Microsoft เริ่มให้น้ำหนักไปที่ HTML5 มากขึ้นเรื่อยๆ นะ

เนื่องจากโปรแกรม Flash และ Silverlight ไม่ได้รับการสนับสนุนในอุปกรณ์ Mobile เท่าที่ควรและในบางประเทศที่ระบบเครื่องข่ายยังเป็น 2.5G ก็ไม่เหมาะที่จะใช้งาน แต่หากเป็น Intranet ในองค์กรที่มี LAN 10MB/100MB ก็สามารถทำได้ดี แต่หากเมื่อไรระบบเครื่อข่าย 3G มีการใช้อย่างแพร่หลายและทั่วถึงจะมีการใช้งาน Flash and Silverlight เพิ่มขึ้น

Rich Internet Application (RIA)

ปัจจุบันการเว็บแอพพลิเคชั่น (Web Application) ได้มีการพัฒนาอย่างแพร่หลายและเป็นไปอย่างรวดเร็ว อีกทั้งขีดความสามารถและความสวยงาม รวมถึงฟังก์ชันต่างๆ ที่ช่วยเพิ่มความสะดวกสบายในการใช้งานก็มีเพิ่มขึ้นเป็นอย่างมาก โดยส่วนมากแล้วเว็บแอพพลิเคชั่นจะถูกใช้กับงานที่มีความซับซ้อนไม่มากนัก ซึ่งพบเห็นได้ทั่วไป เช่น กระดานสนทนา (web board) เว็บไซต์พาณิชย์อิเล็กทรอนิคส์ (E-commerce) เว็บเมล์ (web-based email / webmail) เว็บบล็อก (Weblog) เป็นต้น และในขณะเดียวกันก็มีเว็บแอพพลิเคชั่นอีกประเภทหนึ่งที่เรียกว่า Rich Internet Application (RIA) เกิดขึ้นและกำลังมีจำนวนเพิ่มมากขึ้นอย่างต่อเนื่อง
ซึ่ง RIA ก็คือแนวคิดใหม่ของเทคโนโลยีที่ถูกพัฒนาขึ้นบนเว็บ โดยเกิดจากการผสมผสานองค์ความรู้และเทคโนโลยีการพัฒนาเว็บในยุคใหม่เข้าด้วยกัน ทำให้ผู้ใช้สามารถเข้าถึงและใช้งานเว็บไซต์ได้เหมือนกับการใช้งานโปรแกรมบนคอมพิวเตอร์ เช่น ผู้ใช้สามารถ drag and drop อ็อบเจ็คต่างๆภายในเว็บไซต์ได้เช่นเดียวกับโปรแกรมบนคอมพิวเตอร์ เป็นต้น RIA จึงเป็นเหมือนเทคโนโลยีที่ทำให้เว็บไซต์เข้าใกล้ผู้ใช้มากขึ้น ยืดหยุ่นมากกว่าเดิม และมีลูกเล่นและฟังก์ชันใหม่ๆ ที่ทำให้การเล่นอินเตอร์เน็ตและการเข้าถึงเว็บไซต์มีประโยชน์มากขึ้น เพลิดเพลินมากขึ้นอีกด้วย ตัวอย่างของเทคโนโลยี RIA หลักๆ ที่เป็นที่นิยมและเปิดให้นักพัฒนาสามารถนำไปใช้ได้ เช่น Microsoft Silverlight, Adobe Flash/Flex/AIR, JAVAFX, Google Gears
จากจุดเด่นของแนวคิด RIA ที่ได้กล่าวถึงข้างต้น ซึ่งเป็นส่วนหนึ่งในความสามารถของ Microsoft Silverlight ประกอบกับความสามารถในส่วนของการสร้างส่วนติดต่อผู้ใช้ (User Interface) ที่มีความสวยงาม หรูหรา รวมไปถึงความสามารถทางด้านมัลติมีเดีย เช่น สามารถแสดงผลวีดีโอที่มีคุณภาพระดับ High Definition (HD) ได้ สามารถทำงานกับไฟล์เสียง ในระดับ CD Quality ที่ 64 กิโลไบต์ต่อวินาที, Radio ที่ 32 กิโลไบต์ต่อวินาที และ HD Video Content ที่ 2 เมกะไบต์ต่อวินาที และสามารถทำ Video Streaming ได้ดีกว่าแพลตฟอร์มอื่นและสามารถทำงานที่ค่อนข้างซับซ้อนได้ดี จึงทำให้ Microsoft Silverlight เป็นเทคโนโลยีที่น่าสนใจ แต่กลับมีผู้ที่รู้จักและสามารถใช้งาน Microsoft Silverlight ได้ไม่มากนักในประเทศไทย ทางผู้จัดทำซึ่งได้เล็งเห็นข้อดีดังกล่าวข้างต้นของ Microsoft Silverlight จึงอยากจัดทำสื่อการสอนการใช้ Microsoft Silverlight เบื้องต้น เพื่อเป็นการเผยแพร่ความรู้เกี่ยวกับ Microsoft Silverlight แก่บุคคลทั่วไปและผู้ที่สนใจให้สามารถนำความรู้ไปต่อยอดได้

SkyDrive คือ

SkyDrive คือ พื้นที่สำหรับเก็บข้อมูลออนไลน์ของค่ายยักษ์ใหญ่แห่งวงการคอมพิวเตอร์ ซึ่งก็คือไมโครซอฟท์นั่นเอง สกายไดร์ฟถูกนำมาให้บริการได้พักใหญ่ๆ แล้วแหละ พอดีเพิ่งจะลองเข้าไปใช้บริการวันนี้ เลยถือโอกาสนำมาบอกกล่าวให้ได้ทราบด้วยว่าแจ่มไม่แจ่ม หรือไม่? อย่างไร?



พื้นที่ที่ SkyDrive อนุญาตให้ใช้ได้รวมแล้วไม่เกิน 25 GB

ความหมายหรือข้อจำกัดของการใช้ทั้ง 3 รายการ มีดังนี้
  1. ส่วนบุคคล : ใช้คอมพิวเตอร์หลายเครื่องใช่หรือไม่ ไม่เป็นปัญหาแต่อย่างใด คุณสามารถจัดเก็บและเข้าถึงไฟล์ส่วนบุคคลต่างๆ จากที่ใดก็ได้แบบออนไลน์
  2. ใช้งานร่วมกัน : แบ่งปันข้อมูลร่วมกับเพื่อน ผู้ร่วมงาน หรือครอบครัวได้อย่างง่ายดายเมื่อทุกคนเพิ่มและอัปเดตไฟล์ในโฟลเดอร์ที่ใช้งานร่วมกัน
  3. ฟลเดอร์สาธารณะ : อย่าเก็บความคิดดีๆ ไว้กับตัวคุณเพียงคนเดียว ร่วมแบ่งปันความคิดเหล่านี้ในโฟลเดอร์สาธารณะที่มีเพียงคุณเท่านั้นที่อัปเดตได้
SkyDrive ถึงแม้จะมาทีหลังกว่าเจ้าอื่นๆ แต่ความน่าเชื่อถืออาจล้ำหน้ากว่า การใช้งานก็พร้อมใช้ได้เลยเนื่องผู้ใช้ทั่วไปมีบัญชีอยู่แล้ว รูปแบบที่ชัดเจนที่จัดเตรียมไว้ให้อาจเป็นที่ชื่นชอบสำหรับท่านที่ไม่ต้องการความยุ่งยาก ลองใช้กันดูนะ อาจมีอะไรแจ่มๆ มากกว่านี้
ข้อดีของ SkyDrive
  • พื้นที่ฟรีถึง 25 GB (สุดยอด)
  • สามารถเข้าถึงได้ทุกที่ที่เชื่อมต่ออินเตอร์เน็ต เหมือนมีที่เก็บไฟล์ออนไลน์
  • ผู้อื่นสามารถใช้ไดร์ฟร่วมกับเราได้ (ต้องมี Account ของ Microsoft)
  • สามารถกำหนดสิทธิ์ในการเข้าถึงไฟล์และโฟลเดอร์ของเพื่อนแต่ละคน
  • สามารถกำหนดสิทธิ์เพื่อนแต่ละคนในการจัดการไฟล์ในโฟลเดอร์ได้
  • แบ่งปันไฟล์กับผู้อื่นเป็นสาธารณะ
  • สร้างโฟลเดอร์เองในไดร์ฟได้
  • นำ URL และ Embed ไปใช้ในเว็บได้ เหมือนเป็นที่ฝากรูปฝากไฟล์
  • ใช้งานง่ายเช่นเดียวกับหน้าต่างวินโดวส์
  • มีอีกหลายอย่าง ....

รู้จักกับ Silverlight

รู้จักกับ Silverlight

ช่วงนี้กระแส Rich Internet Application กำลังแรง เพราะค่ายซอฟต์แวร์ใหญ่ๆ ต่างทยอยเปิดตัวโซลูชันของตัวเอง Silverlight เป็นของค่ายไมโครซอฟท์

Silverlight
หลังจากการเปิดตัวอย่างเป็นทางการโดย Scott Guthrie (General Manager, Microsoft Developer Platform) ในช่วง Keynote ในงาน MIX 07 ที่ลาสเวกัสเมื่อต้นเดือนที่ผ่านมา Silverlight ก็ถูกพูดถึงในวงกว้างจากทั้ง Bloggers และเว็บไซต์ต่างๆ ที่มีชื่อเสียง ว่าจะเป็นนวัตกรรมใหม่ที่มาตอบสนองความต้องการทางด้าน Rich Internet Application (RIA) ผ่านเบราว์เซอร์ได้อย่างน่าตื่นตาตื่นใจ ผมได้รับคำเชิญชวนจากคุณ mk ให้ช่วยเขียนถึงเจ้าเทคโนโลยี Silverlight จากไมโครซอฟท์นี้สักหน่อย ก็เลยถือว่าเป็นโอกาสอันดีที่จะได้แนะนำให้นักพัฒนาหลายๆ ท่านที่สนใจได้รู้จัก Silverlight มากขึ้นครับ

Silverlight คืออะไร?

โดยนิยาม Silverlight คือ ดอทเน็ตปลั๊กอินที่ช่วยให้นักออกแบบ และนักพัฒนาสามารถพัฒนาแอพพลิเคชั่นประเภทมัลติมีเดียสมบูรณ์แบบสำหรับเบราว์เซอร์ได้ในหลายๆ เบราว์เซอร์ และสามารถรันได้บนหลายแพลตฟอร์ม นั่นหมายถึงว่า เราสามารถรันแอพพลิเคชั่นที่ทำด้วย Silverlight ได้ทั้งบน Firefox, Safari และที่แน่นอนก็คือ IE นอกจากนี้มันยังสามารถรันได้ทั้งบนวินโดว์สและแมคอินทอชอีกด้วย
Silverlight จะมีขนาดใหญ่เต็มที่ไม่เกิน 4 MB (ในปัจจุบันอยู่ที่ราว 1.38 MB) ซึ่งสามารถดาวน์โหลดได้ภายในราว 20 วินาทีด้วยอินเทอร์เน็ตความเร็วสูง โดยเราสามารถดาวน์โหลดได้ฟรีจากเว็บ http://www.silverlight.net หรือนักพัฒนาอาจฝังโค้ดมากับแอพพลิเคชั่นที่สร้างได้เช่นเดียวกันกับ Adobe Flash ซึ่งโดยทั่วไปหลังจากการติดตั้งก็จะสามารถรันแอพพลิเคชั่นด้วย Silverlight ได้ทันทีโดยไม่การสะดุดให้เสียอารมณ์ครับ
Silverlight 1.0 จะเริ่มเปิดให้ดาวน์โหลดได้อย่างเป็นทางการในช่วงฤดูร้อนของอเมริกา แต่ในตอนนี้เรามีถึงเวอร์ชั่น 5 ให้ใช้กันแล้ว

ฟีเจอร์สำคัญในเวอร์ชั่น 1.0 Beta

ในเวอร์ชั่นนี้ เราเน้นไปที่การใช้งานมัลติมีเดียบนอินเทอร์เน็ตค่อนข้างมาก ดังนั้นฟีเจอร์ที่สำคัญๆ ก็มีอาทิ
  • มี Built-in Codec ที่สนับสนุนการเล่นไฟล์วิดีโอแบบ VC-1, WMV และไฟล์เสียงแบบ MP3 และ WMA ภายในเบราว์เซอร์ เจ้า VC-1 Codec นี้เป็นก้าวกระโดดสำคัญในการยกระดับประสบการณ์มัลติมีเดียบนเว็บ เพราะสามารถทำให้เล่นไฟล์วิดีโอได้ในระดับความละเอียดเทียบเท่า HD DVD หรือ Blu-ray DVD เลยทีเดียว และเจ้า Codec ที่ว่านี้ยังถูกใช้แพร่หลายอยู่แล้วทั่วไป ไม่ว่าจะเป็นในอุปกรณ์พกพาต่างๆ, XBOX 360, Windows Media Player และ Windows Media Center ต่างๆ ทำให้สามารถนำไฟล์วิดีโอที่มีอยู่แล้วมาใช้กับ Silverlight ได้ทันที นอกจากนี้ยังสามารถเล่นมีเดียเหล่านี้บนเบราว์เซอร์ส่วนใหญ่ได้โดยไม่ต้องลงซอฟต์แวร์ใดๆ เพิ่มเติมอีกด้วยครับ
  • นอกจากจะสนับสนุนการเล่นไฟล์วิดีโอแล้ว หากใช้ควบคู่กับ Windows Media Server (ที่มีมากับ Windows Server ทั้งหลาย) ก็จะสามารถเล่นไฟล์วิดีโอที่เป็น Streaming ได้อีกด้วย ซึ่งจะทำได้ทั้งการเล่นและค้นหาไปยังตำแหน่งที่ต้องการ ช่วยให้ประหยัดแบนด์วิธของทั้งผู้ให้บริการและผู้ใช้
  • ช่วยให้ผู้ใช้สามารถสร้างส่วนติดต่อผู้ใช้ (User Interface) และอนิเมชั่นได้อย่างอิสระ แล้วยังสามารถเชื่อมต่อกับจาวาสคริปต์เพื่อตอบสนองต่อการกระทำของผู้ใช้ได้ดีแถมยังง่ายอีกด้วย ยกตัวอย่างเช่น เราอาจจะสร้างหน้าตัวเล่นวิดีโอด้วย XAML แล้วกำหนดชื่อให้กับมัน จากนั้นสั่งให้มันทำงานต่างๆ เช่น เล่น, หยุดเล่น หรือหยุดภาพ ได้จากจาวาสคริปต์ เป็นต้น
  • อนิเมชั่นเป็นแบบ Time-based ซึ่งเป็นแบบเดียวกันกับใน WPF ทำให้ความคลาดเคลื่อนของเวลาในการแสดงผลต่ำกว่าแบบ Frame-based ใน Adobe Flash อนิเมชั่นจะปรากฏตามเวลาที่เรากำหนดไว้อย่างแม่นยำ
  • นอกจากนี้เรายังสามารถใช้พื้นที่แบบ Full Screen ได้ โดยการขยายเป็น Full Screen นี้ไม่ใช่แค่การขยายวินโดว์สแบบเต็มจอ แต่เป็น Native Full Screen จริงๆ โดยที่เราสามารถควบคุมอินเทอร์เฟสได้อย่างอิสระ เช่น สามารถทำเมนูที่เป็น Overlay ลอยอยู่บนวิดีโอที่กำลังเล่นได้ เป็นต้น และในขณะที่ทำการย่อหรือขยาย วิดีโอก็จะย่อหรือขยายตามในขณะที่กำลังเล่นภาพอยู่โดยไม่สะดุด และไม่ต้องเล่นใหม่ทุกครั้ง
ประทับใจกันบ้างหรือเปล่าครับ ถ้าคิดว่าแค่นี้พอแล้ว เราลองมาดูฟีเจอร์เด็ดๆ ในเวอร์ชั่น 1.1 Alpha ที่ออกมาพร้อมกันต่อด้วยดีไหมครับ เผื่อจะมีอะไรเด็ดๆ กว่าเดิม

ฟีเจอร์สำคัญในเวอร์ชั่น 1.1 Alpha

แน่นอนเวอร์ชั่น 1.1 จะต้องเด็ดกว่า 1.0 แน่ ในเวอร์ชั่นนี้จะเน้นไปที่การมาของ Cross Platform .NET Framework นั่นหมายถึงการนำเอา Common Language Runtime (CLR) ขนาดเล็กผนวกไปกับความสามารถทางมัลติมีเดียของเวอร์ชั่น 1.0 นอกจากนี้ยังมีความสามารถบางส่วนของ Windows Presentation Foundation (WPF) และ Net FX Library API และสุดท้ายที่จะลืมไม่ได้เลยก็คือ Dynamic Language Runtime (DLR) ครับ สรุปว่าในเวอร์ชั่น 1.1 จะมีฟีเจอร์เด่นๆ ดังนี้
  • มี Built-in CLR Engine ที่ทำให้การทำงานของ Silverlight ในเบราว์เซอร์มีประสิทธิภาพสูงขึ้นมาก เนื่องจากเป็น Core CLR ตัวเดียวกันที่มากับ .NET Framework ทุกวันนี้ ก็เลยมีระบบการจัดการเดียวกันไม่ว่าจะเป็นเรื่องของ Type, Garbage Collector (GC) หรือแม้แต่ JIT Engine ทำให้คุณสามารถเขียนโค้ดครั้งเดียวแล้วสามารถรันได้กับทั้ง Silverlight, ASP.NET, WinForm และ WPF Application และยังหมายถึงความเร็วที่มากขึ้นอีกด้วย เร็วขึ้นแค่ไหนน่ะเหรอครับ ก็ไม่มากมายอะไรแค่ประมาณ 250 เท่าของโค้ดที่เขียนด้วยจาวาสคริปต์เท่านั้นเองครับ
  • Silverlight จะมาพร้อมกับ Framework ที่พร้อมสมบูรณ์ และเป็นส่วนหนึ่งของ .NET Framework ปัจจุบัน ทำให้คุณสามารถใช้งาน Collections, Generics, Threading, Globalization, Networking และ LINQ ได้ด้วยการเขียนโค้ดแบบเดิม ทำให้ไม่ต้องเรียนรู้สิ่งใหม่มากนัก ประหยัดเวลา
  • ยิ่งไปกว่านั้นด้วย DLR ทำให้ Silverlight สนับสนุนการเขียนโปรแกรมด้วยภาษาที่นักพัฒนาถนัด ที่ประกาศออกมาแล้วว่าจะสนับสนุนก็มี VB, C#, JavaScript, IronPython และ IronRuby! เช่นเดียวกันกับ .NET ทุกภาษาจะทำงานผสานกันได้อย่างราบรื่น
  • เนื่องจาก Silverlight กำหนดส่วนอินเทอร์เฟสกับผู้ใช้ด้วยภาษา XAML ดังนั้นมันจึงเหมือนกันกับที่มีใน WPF (สำหรับผู้ที่ไม่คุ้นเคย ภาษา XAML = eXtensible Application Markup Language มีลักษณะคล้ายภาษา XML ใช้ในการกำหนดอินเทอร์เฟสรูปแบบต่างๆ ใน WPF เช่น <Button Text="OK"></Button> เป็นต้น) ดังนั้นมันจึงจะสนับสนุนบางส่วนของ WPF ด้วย เช่น เรื่องของการจัดการอีเวนท์, การผูกข้อมูลเข้ากับอินเทอร์เฟส หรือการจัดการรูปร่างหน้าตาของแอพพลิเคชั่น เป็นต้น
  • Silverlight จะอนุญาตให้เราควบคุม HTML DOM API ได้ นั่นหมายถึงว่าเราสามารถเขียนตัวจัดการอีเวนท์ของอีลิเมนท์ที่เป็น HTML เช่น ปุ่ม ได้ด้วย C# หรือ VB โดย Silverlight จะสร้างจาวาสคริปต์ภายในหน้าเพื่อเชื่อมมันเข้าด้วยกัน นอกจากนี้ยังมี JSON Serializer ที่สนับสนุนการแปลง Data Type ไปมาระหว่าง .NET และจาวาสคริปต์อีกด้วย ทำให้คุณสามารถส่งค่าตัวแปรจากจาวาสคริปต์ไปยังเมธอดที่เขียนด้วย C# หรือ VB และส่งค่าที่ซับซ้อนขึ้นเช่น Collections จาก C# หรือ VB กลับมาหาจาวาสคริปต์ได้โดยไม่มีปัญหาเรื่อง Type Conversion เป็นต้น
  • จะไม่ต้องใช้ ASP.NET บนเว็บเซิร์ฟเวอร์ ทำให้มีอิสระในการเลือกใช้งาน เช่น อาจจะใช้ Silverlight กับ LAMP (Linux, Apache, MySQL, PHP) ก็ย่อมได้อย่างไม่มีปัญหา อย่างไรก็ดีจะมีฟีเจอร์บางอย่างที่ ASP.NET สนับสนุนโดยเฉพาะ เพื่อเพิ่มความสะดวกในการใช้งาน เช่น การใช้งาน MeMBership, Roles, Profile ของ ASP.NET หรือการเรียกไปยังเว็บเซอร์วิสผ่าน Windows Communcation Foundation (WCF) หรือ ASMX (เว็บเซอร์วิสแบบธรรมดา) นอกจากนี้ยังจะมีเซิร์ฟเวอร์คอนโทรลเฉพาะที่ใช้สำหรับติดตั้ง Silverlight ลงในเพจอีกด้วย

ในงาน International Broadcasting Conference (IBC) ที่อัมสเตอร์ดัม ไมโครซอฟท์เตรียมโชว์ฟีเจอร์ใหม่ของ Silverlight 4 นั่นคือฟีเจอร์เกี่ยวกับมัลติมีเดียและการกระจายวิดีโอ

ฟีเจอร์แรกคือสนับสนุนการส่งวิดีโอแบบมัลติแคสต์ ทำให้ลดโหลดของวิดีโอเซิร์ฟเวอร์ลงได้ ฟีเจอร์ที่สองคือ DRM แบบออฟไลน์ ดาวน์โหลดวิดีโอไปก่อน แล้วดูทีหลังแต่จำกัดจำนวนครั้งหรือระยะเวลาได้ (จะคล้ายๆ กับ DRM ใน iTunes) เทคโนโลยี DRM นี้เรียกว่า PlayReady

ในฝั่งเซิร์ฟเวอร์ ไมโครซอฟท์ยังออก Internet Information Services (IIS) Media Services 3.0 เอาไว้ทำ Live Smooth Streaming และยังเปิดสเปกของ IIS Smooth Streaming Transport Protocol กับ Protected Interoperable File Format (PIFF) ให้ใช้สัญญาอนุญาตที่เปิดกว้างมากขึ้น เพื่อเรียกการสนับสนุนจากพันธมิตรในแวดวงสื่อ

ผมรู้สึกว่าหลังจาก Silverlight 2.0 เป็นต้นมานั้นพัฒนาเร็วมาก และฟีเจอร์ต่างๆ ที่เพิ่มเข้ามาก็ชัดเจนว่าไมโครซอฟท์มองไปถึงแพลตฟอร์มสำหรับมัลติมีเดียใน ยุคหน้านั่นเอง

แม้ว่าการปรับปรุงเวอร์ชั่นของ Silverlight ในครั้งนี้จาก Silverlight 4 มา Silverlight 5 จะมีฟีเจอร์ไม่โดดเด่น เหมือนตอน Silverlight 3 มาเป็น Silverlight 4 แต่ก็มีฟีเจอร์เด่น 10 อย่างที่นักพัฒนา Silverlight เห็นแล้วต้องชอบ ดังนี้:

1. Debug Data Binding Expressions by Using Breakpoints in XAML
2. Animations Made Easy with Transitions
3. Navigating Up the Visual Tree in Bindings using RelativeSource and Mode=FindAncestor
4. Binding View Events to the ViewModel Using Custom Markup Extensions
5. Changing Styles Runtime By Binding in Style Setters
6. Networking No Longer Happening on the UI Thread
7. Vector Based Printing
8. HTML Content and Additional Permissions Within Trusted Silverlight Application
9. 3D API
10. Smaller Enhancements: Text Clarity and Performance Improvements

เป็นไงกันบ้างครับ ความสามารถใหม่ๆ ของ Silverlight โดนใจท่านผู้อ่านกันบ้างหรือเปล่า โดยส่วนตัวผมคิดว่านี่เป็นการเปลี่ยนแปลงครั้งใหญ่เพราะเป็นการทำให้เราสามารถใช้ .NET CLR ได้บนแพลตฟอร์มต่างๆ อย่างจริงจังเป็นครั้งแรก แถมยังรวมเอาประสิทธิภาพมากมายที่จะทำให้การสร้างแอพพลิเคชั่นประเภท RIA มีคุณภาพสูงขึ้นด้วยครับ ในส่วนถัดไปเรามาลองดูเครื่องมือในการทำงานกันบ้างดีกว่า

เครื่องมือที่ใช้ในการทำงาน

สำหรับเครื่องไม้เครื่องมือนั้น อันที่จริงแล้วเนื่องจากอินเทอร์เฟสของ Silverlight สร้างโดยใช้ XAML เป็นหลัก และส่วนของสคริปต์โต้ตอบก็เป็นจาวาสคริปต์ ดังนั้นคุณไม่ต้องการเครื่องมือพื้นฐานใดๆ มากไปกว่า Text Editor ธรรมดาๆ ที่คุณชอบใช้ เช่น NotePad (หรือของผมเป็น DarkRoom) อย่างไรก็ดี เพื่อให้เกิดความสะดวกในการทำงานยิ่งขึ้น คุณสามารถดาวน์โหลดเครื่องมือต่างๆ ที่ช่วยในการทำงานที่เกี่ยวกับ Silverlight ได้ฟรีจากไมโครซอฟท์ครับ เครื่องมือที่ว่าก็อย่างเช่น
  • Microsoft Expression Design - เอาไว้สร้างไฟล์กราฟิกแบบ XAML ลักษณะการทำงานคล้าย Photoshop + Illustrator เมื่อสร้างไฟล์กราฟิกสำเร็จ สามารถ Export ออกมาเป็น XAML เพื่อใช้ใน Silverlight ได้ต่อไปดาวน์โหลด
  • Microsoft Expression Blend - ใช้ในการกำหนดสัดส่วนและคอมโพเนนท์ต่างๆ ของอินเทอร์เฟส เช่น อยากจะให้อินเทอร์เฟสมีรูปร่างหน้าตาแบบไหน มีอนิเมชั่นอย่างไร ปุ่มวางตรงไหน วิดีโอวางตรงไหน เอากราฟิกที่ได้จาก Expression Design มาใช้ตรงไหน อย่างไร เป็นต้นดาวน์โหลด
  • Microsoft Visual Studio  - เขียนโปรแกรมตอบโต้กับส่วนอินเทอร์เฟส "Orcars" จะสนับสนุน Intellisense สำหรับจาวาสคริปต์ ทำให้การเขียนและ Debug ทำได้ง่ายขึ้น เว็บไซต์ส่วนใหญ่แนะนำให้ดาวน์โหลดเวอร์ชั่น Profession ซึ่งใช้เนื้อที่ราว 5 GB มาลง แต่ผมใช้แค่ Visual Web Developer Expression Edition ซึ่งเป็นเวอร์ชั่นที่ใช้งานได้ฟรีของ Visual Studio เองก็เพียงพอครับดาวน์โหลด, Express Edition
  • Silverlight Plug-in และ SDK - Plug-in จำเป็นต้องใช้ในการรัน Silverlight ในเบราว์เซอร์ ส่วน SDK จะมาพร้อมกับจาวาสคริปต์ที่จำเป็นในการติดตั้ง Silverlight ในเบราว์เซอร์ พร้อมกับตัวอย่างโค้ดและ Documentation เพื่อย่นเวลาในการพัฒนาให้สั้นขึ้นดาวน์โหลด

บทสรุป

จะเห็นได้ว่าการมาของ Silverlight เป็นการปฏิวัติวงการอินเทอร์เน็ตครั้งหนึ่งที่ต้องจารึกไว้ในประวัติศาสตร์ของโลกไซเบอร์เลยทีเดียว ด้วยความสามารถในการสนับสนุนการสร้างแอพพลิเคชั่นแบบ RIA จะทำให้แอพพลิเคชั่นบนอินเทอร์เน็ตในอนาคตเปลี่ยนรูปโฉมไปอย่างมาก การสนับสนุนมัลติมีเดียและอนิเมชั่นด้วยคุณภาพที่ดีขึ้นจะทำให้ผู้ชมได้รับความบันเทิงและความพึงพอใจมากขึ้นในการเยี่ยมชมเว็บไซต์ นอกจากนี้ยังมีความเร็วและประสิทธิภาพในการทำงานสูงขึ้น เพราะใช้ Core CLR แบบเดียวกับ .NET Framework หลัก นักพัฒนาไม่จำเป็นต้องเรียนรู้สิ่งใหม่มากนัก ก็สามารถพัฒนางานได้อย่างรวดเร็ว ด้วยเครื่องมือที่พรั่งพร้อมตั้งแต่เริ่มออกแบบจนจบกระบวนการติดตั้ง Silverlight จึงเป็นทางเลือกหนึ่งที่น่าสนใจ ที่จะเลือกมาใช้กับการทำงานของคุณ

WCF RIA Services คืออะไร

WCF RIA Services

[WCF RIA Services Version 1 Service Pack 2 is compatible with either .NET framework 4 or .NET Framework 4.5, and with either Silverlight 4 or Silverlight 5.]
WCF RIA Services simplifies the development of n-tier solutions for Rich Internet Applications (RIA), such as Silverlight applications. A common problem when developing an n-tier RIA solution is coordinating application logic between the middle tier and the presentation tier. To create the best user experience, you want your RIA Services client to be aware of the application logic that resides on the server, but you do not want to develop and maintain the application logic on both the presentation tier and the middle tier. RIA Services solves this problem by providing framework components, tools, and services that make the application logic on the server available to the RIA Services client without requiring you to manually duplicate that programming logic. You can create a RIA Services client that is aware of business rules and know that the client is automatically updated with latest middle tier logic every time that the solution is re-compiled.
The following illustration shows a simplified version of an n-tier application. RIA Services focuses on the box between the presentation tier and the data access layer (DAL) to facilitate n-tier development with a RIA Services client.
RIA Services n-tier applicationRIA Services adds tools to Visual Studio 2010 that enable linking client and server projects in a single solution and generating code for the client project from the middle-tier code. The framework components support prescriptive patterns for writing application logic so that it can be reused on the presentation tier. Services for common scenarios, such as authentication and user settings management, are provided to reduce development time.

DomainContext.SubmitChanges Method

DomainContext.SubmitChanges Method (Action<SubmitOperation>, Object)


WCF RIA Services Version 1 Service Pack 2 is compatible with either .NET framework 4 or .NET Framework 4.5, and with either Silverlight 4 or Silverlight 5.]
Submits all pending changes to the domain service.
This member is overloaded. For complete information about this member, including syntax, usage, and examples, click a name in the overload list.


NameDescription
Public methodSubmitChanges()Submits all pending changes to the domain service.
Public methodSubmitChanges(Action<SubmitOperation>, Object)Submits all pending changes to the domain service.



public virtual SubmitOperation SubmitChanges(
Action<SubmitOperation> callback,
Object userState
)

Remarks




You use the SubmitChanges method to update, insert, or delete data. All of the pending changes are submitted in one operation. You provide a callback method when you have code that must execute after the asynchronous operation has finished. In the callback method, you can check for errors and update the user interface as needed.

private void SaveButton_Click(object sender, RoutedEventArgs e)
{
    _customerContext.SubmitChanges(OnSubmitCompleted, null);
}

private void RejectButton_Click(object sender, RoutedEventArgs e)
{
    _customerContext.RejectChanges();
    CheckChanges();
}

private void CustomerGrid_RowEditEnded(object sender, DataGridRowEditEndedEventArgs e)
{
    CheckChanges();
}

private void CheckChanges()
{
    EntityChangeSet changeSet = _customerContext.EntityContainer.GetChanges();
    ChangeText.Text = changeSet.ToString();

    bool hasChanges = _customerContext.HasChanges;
    SaveButton.IsEnabled = hasChanges;
    RejectButton.IsEnabled = hasChanges;
}

private void OnSubmitCompleted(SubmitOperation so)
{
    if (so.HasError)
    {
        MessageBox.Show(string.Format("Submit Failed: {0}", so.Error.Message));
        so.MarkErrorAsHandled();
    }
    CheckChanges();
}