คำถามคำตอบเกี่ยวกับ C# และ .Net Framework

    มึคำถามเกี่ยวกับ C# และ .Net Framework อยู่มาก คำตอบส่วนมากก็มักจะได้จากผู้ที่ติดตามมันอย่างใกล้ชิดเช่นผม แต่คำตอบพวกนี้ไม่ใช่คำตอบที่เป็นทางการอย่างที่ทาง Microsoft ตอบ ดังนั้นคำตอบที่คุณได้จาก web ของผม หรือของทางฝรั่งก็ตอบก็ตาม มักจะหนีการนั่งเทียนไปไม่พ้น  ทาง Microsoft เองค่อนข้างสงวนท่าทีไม่ค่อยยอมตอบคำถามซักเท่าไหร่ อาจจะเป็นไปได้ว่ายังเอาแน่นอนไม่ได้ มาวันนี้ www.developer.com ได้รับอนุญาตให้ถามคำถามกับคนตัวใหญ่ๆ ของ Microsoft ซึ่งผมเห็นว่าน่าสนใจเลยเอาเรียบเรียงมาลงที่ twoguru.com ดังนี้

คำถาม (จาก www.developer.com)

    ในปี 1995 Microsoft พยายามผลักดัน OLE และ COM แต่อย่างไรก็ตาม Developer ก็ไม่ได้ให้ความสนใจสักเท่าไหร่ มาปี 1996 Microsoft เริ่มผลัก ActiveX ขึ้นมาแทน OLE และ COM จากนั้นปี 1999 Microsoft มาใหม่ด้วย Distributed Internet Architecture (DNA) ดูเหมือนว่า Microsoft จะมีการปรับเปลี่ยนกลยุทธ์ทุกๆ 2-3 ปี เหตุการณ์นี้จะเกิดขั้น .NET หรือไม่?

คำตอบ (Chales Sterling, Product Manager, .Net Framework)

    Microsoft มีเป้าหมายหลักคือพยายามทำให้การทำ distributed computing ง่ายขึ้นสำหรับ Developer โปรแกรมที่เขียนขึ้นมาจะใหญ่ขึ้นพื่อรองรับงานที่ซับซ้อนขึ้นได้ รองรับการกระจายงานที่ดีขั้น ส่งผลทำให้โปรแกรมนั้นปรับปรุงแก้ไขได้โดยง่าย ส่วน ชื่อที่คุณกล่าวมานั้นเป็นเพียงพัฒนาการอย่างต่อเนื่องเพื่อให้ได้มาซึ่งเป้าหมายนี้ ไม่ว่าชื่อมันเปลี่ยนแปลงเป็นอย่างไร แต่สิ่งที่คุณพูดมานั้นล้วนแล้วแต่มีพื้นฐานมาจาก COM

ประวัติคร่าวๆ ของ COM:

--> COM (เดิมชื่อ OLE) เป็น spec สำหรับ โปรแกรมต่างให้สามารถติดต่อกันโดยไม่คำนึงถึงภาษา

--> ActiveX เป็น spec ที่เพิ่มเติมทำให้เราสามารถสร้าง Control และ ทำ script เพื่อทำงานอัตโนมัติ

--> DNA เป็นการรวบรวมเอา Technology ของ Microsoft มาใช้ร่วมกันเพื่อสร้าง distributed applications (ทั้งหมดที่พื้นฐานจาก COM)

มีคำที่ควรรู้เพิ่ม

 --> DCOM เป็น protocol ของ COM เพื่อใช้ในการทำ Remote Procdedure call (RPC)

--> COM+ เป็น Services ที่มีมากับ Windows 2000 เพื่อการพัฒนาโปรแกรมที่ดีขั้น (Transaction, security, event, messaging) เหล่านี้ล้วนแต่มีพื้นฐานมาจาก COM ทั้งสิ้น

แล้ว .Net มันอยู่ตรงไหน?

Internet ให้โอกาส developer ในการสร้างรูปแบบใหม่ๆ ในการเขียนโปรแกรม ซึ่งส่งผลให้ความต้องการเครื่องมือในการพัฒนาโปรแกรมเปลี่ยนแปลงไป

ตัวอย่าง protocols

HTTP เป็น stateless protocol lที่ทำให้ World Wide Web เป็นที่นิยม แต่ component ที่มีการพัฒนากันก่อนหน้านั้นเป็นแบบ session-based ทำให้ไม่สามารถเอาไปใช้กับ Web ได้

เรามีทางออกสองทางสำหรับปัญหานี้ วิธีแรกคือบริษัทที่ทำเครื่องมือให้ Developer ใช้วิธีสร้าง Protocol ของตัวเองขึ้นมาใหม่เพื่อส่ง Object ข้ามเครื่อง ซึ่งวิธีนี้จะทำให้มันผูกติดอยู่กับ Internet ส่วนวิธีที่สองเป็นวิธีที่ Microsoft เลือกใช้ใน .NET คือใช้งานมาตรฐานใหม่เช่น SOAP เพื่อสามารถทำให้ส่ง Object ข้ามเครื่องได้

แล้วสิ่งนี้เป็นผลพวงที่ได้มาจาก COM หรือไม่?  แน่นอนครับ Developer ต้องการความสามารถต่างๆ ที่แตกต่างออกไปเมื่อพัฒนา Applications บน Internet ผลลัพธ์จึงออกมาเป็น .Net Framework แต่ Microsoft ไม่ได้บอกว่าคุณจะต้องทิ้งความรู้ที่คุณมีมา COM คุณยังสามารถใช้ COM ภายใต้ .NET Framework ได้ คุณไม่มีอะไรที่ต้องทำยากกว่าเดิมเลย เมื่อคุณใช้ .NET Framework คุณจะได้ความสามารถใหม่ๆ เช่น Object สามารถถูกเรียกใน Internet โดยใช้ Web Service ผ่าน protocol XML

ท้ายสุดของคำถาม

    แล้ว Microsoft จะทิ้ง .Net ใน 2-3 ปีข้างหน้าหรือไม่? การออกแบบ .NET Framework นั้นมันสามารถรองรับความต้องการของ Developer ได้อยู่แล้ว ถ้าในอนาคต Internet ไม่ใช่ทางออกของ Developers ตัว SOAP อาจจะไม่ได้รับความนิยมอีกต่อไป แต่ .NET Framework นั้นสามารถรองรับภาษาและ protocol ใหม่ๆ ดังนั้นมันยังคสามารถงรองรับอนาคตได้

----------------------------------------------------------------------

คำถาม (จาก user ผู้เป็น System Integrator)

ผมใช้เวลาไปมากในการศึกษา MFC และ WIN32 API แต่พอผมรู้สึกว่าผมเราคุ้นเคยกับมัน ก็มี .NET โผล่มา ผมชอถามว่าแล้วความรู้ที่ผมอุตส่าห์เรียนมาต้องเอาไปทิ้งทั้งหมดใช่หรือไม่? แล้วผมต้องศึกษา .NET และ C# เพื่อไม่ให้ตกยุคหรือไม่?

คำตอบ (จาก Charles Sterling, Product Manager, .Net Framework)

ถ้ามีเพียงสองสิ่งที่ Developers ควรจะรู้เกี่ยวกับ .NET สองสิ่งนั้นก็คือ

1) มันเป็นระบบเปิดใช้มาตรฐาน เช่น XML เป็นต้น

2) ความรู้ที่คุณเคยศึกษามาไม่สูญเปล่า มันยังคงมีค่าอยู่

จากคำถามที่ว่า "ผมต้องศึกษา .NET และ C# เพื่อให้ไม่ตกยุคหรือไม่?"  คำตอบคือ ไม่!!! คุณสามารถเลือกที่จะศึกษาภาษอะไรก็ได้จะเป็น Cobol, VB, C++ หรืออะไรก็ตาม

[จาก developer.com : ในขณะนี้มีอย่างน้อย 21 ภาษาที่จะรองรับ .NET Framework ในเวลาที่ .NET Framework เปิดตัวอย่างเป็นทางการ]

----------------------------------------------------------------------

คำถาม (จาก www.developer.com)

ภาษาในการเขียนโปรแกรมอะไรดีที่สุดสำหรับ .NET? Developers จะต้องใช้ C# ใช่หรือไม่?

คำตอบ (จาก Charles Sterling, Product Manager, .Net Framework)

.NET Framework นั้นไม่อิงกับภาษาใดๆ ทุกภษาสามารถใช้กับ .NET Framework ได้ ในปัจจุบัน คุณสามารถเขียนโปรแกรม .NET โดยใช้ C++, VB.NET, JScript และ ภาษาใหม่คือ C# เท่านั้นยังไม่พอยังมีภาษาอื่นๆ จาก third-party อีกเช่น COBOL, Eiffel, Perl, Python, Smalltalk เป็นต้น ภาษาที่ดีที่สุดก็น่าจะเป็นภาษาที่คุณรู้สึกสะดวกในการใช้ที่สุดหรือเป็นภาษาที่สามารถรองรับงานที่คุณต้องการทำได้

Developers ไม่จำเป็นต้องศึกษา C# แต่อย่างไรก็ตามภาษา C# ถูกออกแบบให้ทำงานได้เร็วเหมือนกับ C++ และใช้ง่ายเหมือนกับ VB ซึ่งคุณสมบัติเหล่านี้ Microsoft คิดว่ามันเป็นภาษาที่ดึงเอาความสามารถของ .NET มาใช้อย่างเต็มที่ ทันทีที่ Developers รู้จักความสามารถของมัน C# จะได้รับความนิยมสูง

----------------------------------------------------------------------

คำถาม (จาก ผู้อ่าน www.developer.com)

ในงานสัมมนา .NET มีคน Microsoft คนหนึ่งที่ทำหน้าที่ MCS บอกว่า เราอาจจะสามารถใช้ Visual Studio.Net ในการสร้าง Application ที่เป็นอิสระกับ Platform ขอถามว่าตอนนี้ Microsoft จะรองรับ Platform ใดอีกนอกจาก Windows?

คำตอบที่  4 (จาก Charles Sterling, Product Manager, .Net Framework)

Microsoft ยังไม่ได้ประกาศแผนใดๆ ว่าจะรองรับ .NET Framework เต็มรูปกับ Platform ใดๆ ที่ไม่ใช่ Windows แต่ เราก็ส่ง spec ของ .Net Framework เฉพาะส่วนที่เป็น core จริงๆ และ spec ของ C# ให้ ECMA เพื่อสร้างเป็นมาตรฐานเป็นที่เรียบร้อยแล้ว ภายใต้กติกาของ ECMA ทุกคนมีสิทธิที่จะใช้ spec เหล่านี้เพื่อสร้าง .NET Framework ให้กับ Platform ใดก็ได้ และเราก็ได้ติดต่อกับบริษัทหลายบริษัทเพื่อให้สร้าง .NET Frameworkบน Platform ต่างๆ มีจุดสำคัญอยู่จุดหนึ่งที่ควรรู้ไว้ก็คือ ขณะนี้ Microsoft มี .NET Framework รุ่นหนึ่งที่ไม่อิงกับ Hardware และ OS ใดๆ ที่ชื่อว่า .NET Compact Framework ซึ่งออกแบบให้กับพวกอุปกรณ์เล็กๆ เช่น โทรศัพท์มือถือ และพวก Digital TV

----------------------------------------------------------------------

คำถาม (จาก Teddy)

คุณสามารถบอกที่ๆ เราสามารถหาข้อมูลของ โครงสร้างและ security ของ .NET?

คำตอบ (จาก Charles Sterling, Product Manager, .Net Framework)

A couple I highly recommend:  

Avoiding DLL Hell: Introducing Application Metadata in the Microsoft .NET Framework <netresources/metadata/metadata.htm>" by Matt Pietrek, MSDN Magazine, Oct. 2000 is reprinted by permission. Copyright 2000 Microsoft Corp. and CMP Media, Inc. All rights reserved. For more information on MSDN Magazine, please visit <http://msdn.microsoft.com/msdnmag>.

"Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework <netresources/GCI/garbagecollection.htm>" by Jeffrey Richter, MSDN Magazine, Nov. 2000 is reprinted by permission. Copyright 2000 Microsoft Corp. and CMP Media, Inc. All rights reserved. For more information on MSDN Magazine, please visit <http://msdn.microsoft.com/msdnmag>.

"Microsoft .NET Framework Delivers the Platform for an Integrated, Service-Oriented Web <netresources/framework/framework.htm>" by Jeffrey Richter, MSDN Magazine, Sept. 2000 is reprinted by permission. Copyright 2000 Microsoft Corp. and CMP Media, Inc. All rights reserved. For more information on MSDN Magazine, please visit <http://msdn.microsoft.com/msdnmag>.

"Part 2: Microsoft .NET Framework Delivers the Platform for an Integrated, Service-Oriented Web <netresources/framework2/Framework2.htm>" by Jeffrey Richter, MSDN Magazine, Oct. 2000 is reprinted by permission. Copyright 2000 Microsoft Corp. and CMP Media, Inc. All rights reserved. For more information on MSDN Magazine, please visit <http://msdn.microsoft.com/msdnmag>.

"The Programmable Web: Web Services Provides Building Blocks for the Microsoft .NET Framework <netresources/webplatform/WebPlatform.htm>" by Mary Kirtland, MSDN Magazine, Sept. 2000 is reprinted by permission. Copyright 2000 Microsoft Corp. and CMP Media, Inc. All rights reserved. For more information on MSDN Magazine, please visit http://msdn.microsoft.com/msdnmag.

----------------------------------------------------------------------

คำถาม (จาก Software Engineer คนหนึ่ง)

ผมสามารถหาข้อมูลของ .NET ได้จากที่ไหนได้บ้าง?

คำตอบ (จาก Charles Sterling, Product Manager, .Net Framework)

This site is an MSDN reference for .NET technical articles and probably the best place to start:
http://msdn.microsoft.com/library/default.asp?URL=/library/techart/netanchor.htm

This one is .NET Framework Developers Guide:
http://msdn.microsoft.com/library/default.asp?URL=/library/dotnet/cpguide/cpguide_start.htm

This site is Visual Studio.NET Beta 1 Evaluation Guide Download:
http://www.msdn.microsoft.com/vstudio/nextgen/evalguidedownload.asp

----------------------------------------------------------------------

คำถาม (จาก www.codeguru.com)

ฉันเคยได้ยินมามา VS.NET มีความสามารถใหม่ที่ความสามารถที่ทำ Template ให้ VS.NET สามารถสร้าง comment ได้จาก source code เรื่องนี้จริงหรือไม่?

คำตอบ (จาก Nick Hodapp, Product Manager, C#)

เวลานี้ C# เป็นภาษาเดียวที่เราสามารถสร้าง Document ใน VS.NET 7.0 โดยใช้ XML เราสามารถทำได้โดย เราเริ่มต้นบรรทัดด้วย /// แล้วตามด้วย class, delegate หรือ interface  ด้วยรูปแบบนี้ field, event, property method หรือ namespace สามารถสร้างเป็น comment ซึ่งเมื่อถูก process แล้วจะถูกสร้างมาเป็นแฟ้มข้อมูลแยกต่างหาก   แฟ้มนี้ เป็น XML document ซึ่งจะมี comment ของ developer และ ข้อมูลที่ compiler สร้างขึ้นมาเพื่อบ่งชี้แต่ละ comment (Compiler จะทำการตรวจสอบ XML syntax ที่ developer ใส่เข้าไป) แฟ้ม XML นี้จะถูก XSL style sheet นำไปสร้างเป็น HTML document

----------------------------------------------------------------------

คำถาม (จาก www.codeguru.com)

ผมสามารถหา C# compiler และ C# editor ฟรีๆ ได้ที่ไหน?

คำตอบ  (จาก Nick Hodapp, Product Manager, C#)

พูดถึง C# compiler ผมรู้จัก Microsoft Visual C#.Net ตัวเดียวครับ ซึ่ง Beta ของมันได้ถูกแจกจ่ายไปเป็นจำนวนมาก และมันก็เป็นส่วนหนึ่งของ VS.NET beta และ .NET Framework SDK beta, ส่วน Editor ก็เป็นส่วนของ VS.NET ด้วยเข่นกัน

-----------------------------------------------------

คำถาม (จาก Technical Director)

Web Service และ .NET จะบังคับให้ทุกคนต้องจ่ายเงินในทุกขั้นตอนจริงหรือไม่? แนวโน้มของ Internet ที่กลายเป็น "Pay-Per-View" นั้นค่อนข้างน่าลำคาญมาก สิ่งนี้จะให้ผลลบกับ end-user ใช่หรือไม่?

คำตอบ 

Microsoft ยังไม่ตอบ

-----------------------------------------------------

คำถาม (จาก www.developer.com)

ช่วยอธิบายเป็นคำพูดง่ายๆ หน่อยว่า .NET คืออะไร? และใครบ้างในวงการพัฒนาโปรแกรม ที่จะถูกกระทบโดย .NET?

คำตอบ 

Microsoft ยังไม่ตอบ

----------------------------------------------------

คำถาม (จาก www.developer.com)

ดูเหมือนว่า Web Service จะเป็นกุญแจดอกสำคัญของ .NET ทาง Microsoft ใด้นิยาม Web Services ของตัวเองแตกต่างจาก Web Services ของเจ้าอื่นเช่น Sun และ Oracle อย่างไร? หรือว่ามันเป็นของสิ่งเดียวกัน?

คำตอบ 

Microsoft ยังไม่ตอบ

----------------------------------------------------

คำถาม (จาก Rob)

This isn't really a question to be passed onto Microsoft...

[Is there a reason to] go with the Vignette/Oracle approach for site management as opposed to the .NET architecture or even products like Open Market or Broadvision.  We would like to introduce distributed authoring and dynamic content distribution. I was just wondering [how .NET could help in this area verses these other products].  Does the .NET architecture have any real (or perceived) shortcomings in this area?

คำตอบ 

Microsoft ยังไม่ตอบ

 

----------------------------------------------------

คำถาม (จาก Lars)

What .NET services will be available on other platforms (Linux / Solaris) and what is the time schedule for it? Will the basic economy for .NET be based on a yearly rent? Will the XML part be open, meaning that non-MS applications can access and use XML data generated with MS tools?

คำตอบ 

Microsoft ยังไม่ตอบ

----------------------------------------------------

คำถาม (จาก Frank)

With hailstorm and the like, there would be a definite chance of storing personal information on your own PC rather than on Microsoft's passport servers. Why not follow that route, providing a sort of peer-to-peer approach in distributing information?
 

คำตอบ 

Microsoft ยังไม่ตอบ

 

----------------------------------------------------

คำถาม (จาก Hdlsningar)

You asked in your newsletter if we readers had any questions regarding the new Microsoft .NET thingie (it encompasses to much for a single word I think). Now, I'm a modest developer that hasn't had the time necessary to read up on .NET so actually I have lots of questions but the question that I'm most anxious to have answered is this (right now anyway). Will the Microsoft certifications be replaced by new certificates? If so, what will be the worth of already existing certificates when .NET is launched?
 

คำตอบ 

Microsoft ยังไม่ตอบ