รู้จักกับ Silverlight

by mk
21 May 2007 - 11:44

ช่วงนี้กระแส Rich Internet Application กำลังแรง เพราะค่ายซอฟต์แวร์ใหญ่ๆ ต่างทยอยเปิดตัวโซลูชันของตัวเอง ผมได้ชวนคุณสุวิชชา จันทร แห่ง ThaiSharp.net ให้มาเขียนแนะนำ Silverlight ของค่ายไมโครซอฟท์ให้กับผู้อ่าน Blognone กันหน่อย นอกจากส่งบทความมาให้แล้ว คุณสุวิชชายังบอกว่าจะขึ้นพูดเรื่อง Silverlight ในงาน MSDN วันพรุ่งนี้ (อังคาร 22) ด้วย ถ้าใครสนใจก็ตามไปฟังกันได้ครับ

หมายเหตุ: สำหรับแฟนๆ Flex และ Java FX ถ้าสนใจมาเขียนประลอง ทางเราก็ยินดีรับเช่นกัน -- mk

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 จะเริ่มเปิดให้ดาวน์โหลดได้อย่างเป็นทางการในช่วงฤดูร้อนของอเมริกา แต่ในตอนนี้เรามีเวอร์ชั่น 1.0 Beta และ 1.1 Alpha ให้ใช้กันแล้ว รวมถึงมีข่าวแว่วมาถึงฟีเจอร์ที่จะมีในเวอร์ชั่น 2.0 กันบ้างแล้วด้วยครับ

ฟีเจอร์สำคัญในเวอร์ชั่น 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 ลงในเพจอีกด้วย

เป็นไงกันบ้างครับ ความสามารถใหม่ๆ ของ 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 Code Name "Orcas" - เขียนโปรแกรมตอบโต้กับส่วนอินเทอร์เฟส "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 จึงเป็นทางเลือกหนึ่งที่น่าสนใจ ที่จะเลือกมาใช้กับการทำงานของคุณ

ขอให้สนุกกับการทำงานนะครับ :-)

แหล่งข้อมูลเพิ่มเติม

Blognone Jobs Premium