จริงแล้ว ตัว 2008 นี่ RTM ตั้งแต่เดือนพฤศจิกายนแล้วนะครับ ซึ่งผมก็หาโอกาสเขียนโพสเกี่ยวกับ 2008 นี่มานานแล้วเหมือนกัน แต่ยังไม่ได้ฤกษ์ซะที ทั้งเรื่องงาน และเรื่องพยายามเอาเว็บกลับขึ้นมาเนี่ยแหละ [:'(] และพอดีว่า เดี๋ยวผมจะต้องใช้ Workflow, WCF และอะไรอีกหลายๆ อย่าง ซึ่งผมก็ไม่ได้แตะมานาน ไหนๆ ก็ไหนๆ แล้ว ระหว่างการขุดค้นข้อมูล ผมก็จะเขียนโพสตามไปด้วยเลยครับ ว่าผมเจออะไรมาบ้าง
Multi-Targeting
หนึ่งในความน่าเบื่อตอนเปลี่ยนจาก 1.1 มาเป็น 2.0 ใน Visual Studio 2005 ก็คือว่า เราจะต้องลงทั้ง 2003 และ 2005 คู่กันครับ ถ้าอยากจะทำโปรเจคเดิมต่อ โดยใช้ .NET Framework 1.1 (ซึ่งในทางทฤษฎีแล้ว Project ที่ไม่ได้ใช้ฟีเจอร์เทพมากๆ ของ .NET Framework ก็มักจะ Upgrade เป็น 2.0 ผ่านได้ด้วยดี) ใน 2008 นี้ เราเลือกได้ทุกเวอร์ชั่นเลยครับ (ทราบหรือไม่ว่า ตอนนี้เรามี .NET 3.5 แล้วนะ...) ยกเว้น 1.1 เพราะคาดว่า มันคงจะ End Of Life ไปแล้วละ มันก้อตั้ง 5 ปีแล้วเหมือนกัน 
แล้วพอเวลาเราเลือกเวอร์ชั่นของ Framework ต่างออกไป เราก็จะมองเห็นตัวโปรเจคไม่เหมือนกันครับ เพราะบางอันจะมีแค่ใน 3.0 บ้าง 3.5 บ้าง ก็ว่ากันไป ซึ่งแน่นอนว่า สำหรับ 3.0 ก็จะมีพวก WCF, WPF, WF (CardSpace มันเป็นเทคโนโลยี หรือว่า Library เฉยๆ ครับ ไม่มีโปรเจค) นั่นเอง แต่ใน 3.5 ก็จะมีโปรเจคเพิ่มมาหลักๆ ตามนี้ครับ
Web:

ASP.NET จะเป็นเวอร์ชั่น 3.5 ครับ แล้วก็มี AJAX ในตัวเลย (แต่เทมเพลทของ AJAX 1.0 มาปนอยู่ซะงั้น) | Office

จะมีพวก Add-In ของ Office 2003, 2007 ให้เราเลือกเลยครับ ไม่ต้องลง VSTO มีตั้งแต่ใน Professional เลยครับ |
WCF:
 จะเห็นว่ามี Workflow Service กับ Syndication Service เพิ่มเข้ามาครับ | WorkFlow (WF)
แล้วก็ ถ้าจะทดสอบตัว WF ก็ทำง่ายขึ้นแล้วครับ มีโปรเจคแบบ Console App ไว้ให้เลย |
WCF + WF = Workflow Service
ใน .NET 3.5 เนี่ย Workflow กะ WCF มันจะรวมกันได้ แล้วเรียกว่า Workflow Service ครับ เหตุผลนั่นก็คือ จริงๆ แล้ว มันเป็นอะไรที่ควรจะอยู่คู่กันมาตั้งแต่ต้นครับ เพราะทั้งสองคนเนี่ย ต่างก็อยากจะพึ่งพากันและกันอยู่แล้ว
WF ต้องการ WCF
- เนื่องจาก WF เนี่ย มันเป็นการจำลองแบบของ Business Process ดังนั้น มันจึงมักจะถูกวางไว้ใน Server เป็น Assembly (.dll) ให้คนอื่นมาเอาตัว Business Process นี้ไปทำงาน
- แล้ว WF มันก็รันด้วยตัวเองไม่ได้ จำเป็นต้องอาศัย Host ซึ่งเราก็มักจะใช้ โปรเจคแบบ Windows Service กัน
- แล้วการที่จะให้คนข้างนอก ต่อเข้ามายัง Windows Service เพื่อสั่งให้ Workflow ทำงาน หรือว่า รับส่งข้อมูลกับตัว Workflow ก้อมีสองทาง คือ เขียนเปิด Socket กันเอง แต่ว่า อุตส่าห์ใช้ .NET 3.0 แล้ว มัวมาเปิด Socket เองเนี่ย คงจะอายเขาแย่ ยังไง ก็หนีไม่พ้น WCF อยู่ดี
- และเป็นไปได้ว่า WF อาจจะต้องการติดต่อกับ Web Service หรือ WCF Service เพื่อส่งค่าบางอย่างไปประมวลผล (ในกรณีที่เรามี Architecture ข้างในเป็น SOA) ก็หนีไม่พ้นการใช้ WCF ในการ Call อยู่ดีอีกนั่นแหละ ซึ่งใน 3.0 เราก็มักจะใช้ CodeActivity เพื่อเขียนโค๊ดเอง หรือสร้าง Custom Activity เพื่อ Call ตัว Service นั้น
WCF ก็ต้องการ WF
- แน่นอนว่า WCF Service ที่ใช้งานจริงๆ มันมักจะต้องมีการ Authentication หรืออาจจะต้องมีลำดับการ Call ตัว Service ที่ถูกต้อง เช่น ต้องสั่ง Sign-In ขอ Security Token ก่อน แล้วเอา Security Token ผ่านไปให้ ฟังก์ชั่นอื่นๆ บน Service ไม่อย่างนั้น มันจะทำงานไม่ได้ เพราะว่า Sign-In ไม่ผ่าน นั่นเอง
- แทนที่จะมานั่งตรวจสอบว่า ตอนนี้ Client คนนี้ อยู่ State ไหนแล้ว ทำไมไม่ใช้ WF ล่ะ ???
โดยสรุปก็คือ เราสามารสร้าง WorkFlow ที่มันเปิดตัวเองเป็น WCF ให้คนอื่นเรียกเข้ามาได้ และอีกนัยหนึ่งคือ เราสามารถสร้าง WCF Service ที่ต้องมีลำดับการ Call ที่ถูกต้องได้ด้วย WF อย่าเพิ่งงงนะครับ ลองดูตัวอย่าง WorkFlow (คร่าวๆ) ของการเบิกค่าใช้จ่าย ด้านล่างนี้
จะเห็นว่า หลังจากผมสร้าง WF จบแล้ว ผมก็ต้องไปเขียน WCF Service เพิ่ม เพื่อให้..
- ผู้ใช้ สามารถส่งเรื่องขอเบิกเงิน เพื่อเริ่มการทำงานของ WorkFlow ได้ อาจจะเป็นฟังก์ชั่นชื่อ StartExpenseClaim
- ให้ตัวระบบ สามารถรับคำสั่งจากหัวหน้า ว่าจะรับรอง หรือไม่รับรองการเบิกนี้ และ ส่ง Event เข้าไปยัง Workflow เพื่อให้การทำงาน เกิดขึ้นต่อได้ อาจจะเป็นฟังก์ชั่นชื่อ ApproveExpenseClaim, RejectExpenseClaim
แล้วจากนั้น ซึ่งตอนจบ ผมก็จะได้โปรเจค 2 ตัว คือ ตัว WorkFlow และตัว WCF ที่เป็นคนติดต่อกับ WorkFlow ซึ่งผมก็ต้องสร้างอีกโปรเจคหนึ่ง มาเป็นตัว Host ทั้ง WCF, Workflow นี่อีกรอบ ซ้ำซ้อนมากๆ เลย เห็นไหมครับ
แต่ถ้าเป็น Workflow Service ผมก็สามารถที่จะเอา WCF รวมกับ WorkFlow นี้ได้เลย
แล้วเดี๋ยวผมจะมี Tutorial เกี่ยวกับ Workflow Service และการเรียกใช้มันจากตัว Windows Mobile ในโอกาสหน้าครับ ขอไปทำความเข้าใจกับมันแบบถ่องแท้ทีนึงก่อน
แน่นอนว่า WF และ WCF นี่ จะมีประโยชน์มากทีเดียว กับการสร้าง App ที่ใช้งานด้านธุจกิจ บนพวก Windows Mobile
มาเข้าเรื่องของเราบ้าง
สำหรับพวกเราแล้ว คอนเซปต์ Multi-Targeting ก็ตามมาด้วยครับ จะมีหน้าจอสำหรับเลือกเลยว่า จะเอา .NET Compact Framework ตัวไหน และจะใช้ SDK รุ่นอะไร น่าแปลกว่า รุ่นที่มาพร้อมกับ VS2008 ดันเป็น WM5 ครับ แทนที่จะเป็น WM6 ซึ่งก็สามารถโหลดมาติดตั้งได้ ไม่มีปัญหาครับ แต่ผมยังไม่มีเครื่อง WM6 เลยยังไม่ได้ทดลองลงเอาไว้เล่นเลย 
แล้วก็ เราได้ Emulator ใหม่ด้วยครับ เป็นเวอร์ชั่น 3.0 ซึ่งตัวนี้ จะเป็นการจำลองเครื่องแบบ ARM เลย (ของเก่าจะเป็น x86 เหมือนว่าจะเอา Virtual PC มาทำ...
) ดังนั้น เราจึงอุ่นใจได้มากยิ่งขึ้นว่า App เรา รันได้ถูกต้องบนเครื่องจริง แต่ยังไง ก็คงหนีไม่พ้นการทดสอบกับเครื่องจริงอยู่ดี เพราะนั่นคือสาเหตุที่เราจงใจมาเล่น Compact Framework เลยใช่มั๊ยล่ะ จะได้ขอเจ้านายซื้อเครื่องพวกนี้ มาให้เราใช้นั่นเอง ฮ่าๆ 
สำหรับคอนโททรล เท่าที่ดูก็ไม่มีอะไรใหม่ครับ แต่ว่าสำหรับตัว .NET CF 3.5 จะมีของเล่นอยู่ใน Framework ที่ได้รับการอัพเดทเยอะเลย จะเห็นว่ามี System.ServiceModel ซึ่งคือตัว WCF (เป็นแค่ Client) มี Managed DirectX 3.5 แล้วก็ System.Xml.Linq ด้วย
เดี๋ยวพอผมศึกษาว่า พวกนี้มันเล่นอะไรได้บ้าง จะเอามาเขียนเล่าให้ฟังอีกทีครับ
สำหรับนาทีนี้ 2008 น่าเล่นมากครับ เอาโปรเจคเดิมจาก 2005 มาทำต่อก็ได้ น่าจะลองเล่นดูนะครับ สำหรับแผ่นผมคงไม่ต้องบอกนะครับ ว่าจะหาจากที่ไหน
แต่เดี๋ยวตามงาน MSDN หรืองานสัมนา ของไมโครซอฟท์ ได้ยินว่าจะมีแผ่นที่เป็น Resource Kit ที่ข้างในมี Visual Studio 2008 Trial 90 วัน และ Workshop อยู่ข้างใน ให้เราไปเรียนรู้พวกเทคโนโลยีใหม่ๆ เอง ฟรีด้วย เดี๋ยวต้องคอยติดตามครับ