Custom Search
by  chalitbur   21 Nov 2014

.NET Native คือเทคโนโลยีในการ precompilation สำหรับสร้างและนำ application ส่งขึ้นไปยัง Windows Store. โดยจะเป็นการคอมไพล์โค๊ดที่เขียนด้วย Managed Code ( C# ) และทำการคอมไพล์เป็น Code แบบ Native (ภาษาเครื่อง) โดยปกติแล้ว application ที่เราเขียนด้วย .NET Framework จะถูกคอมไพล์เป็น Intermediate Language ( IL ) ขณะที่โปรแกรมเริ่มทำงาน Just-In-Time (JIT) Compiler จะแปลง IL ไปเป็น Native Code.   ซึ่่ง.NET Native ตัวนี้จะแปลง Windows Store application ที่เรา ทำขึ้นไปเป็น Native Code เลยทันที นั่นหมายความว่า 

1.) Windows store application ที่เราเขียนขึ้นนั้น จะมีประสิทธิภาพระดับเดียวกันกับ Native Code ( เช่นที่เขียนด้วยภาษา C++)
2.) เรายังคงเขียนโค๊ดด้วยภาษาที่เป็น High Level OOP (C#)
3.) เรายังสามารถเรียนใช้ Class Libraly ต่างๆ ที่มีอยู่ใน .NET Framework ได้, ยังคง Fueature Automation Memory Management ไม่ต้อง release pointer เอง โดย Grabage collection หรือ กลไก Exception Handding ก็ยังคงมีอยู่เหมือนการเขียนโค๊ดด้วย .NET  Framework ปกติ

 

สำหรับโปรแกรมที่เราทำการ compile ด้วย .NET Native นั้นจะมีผลกับผู้ใช้งานดังนี้
1.) เปิดโปรแกรมและโหลดโปรแกรมได้อย่างรวดเร็ว
2.) ทำงานได้รวดเร็วกว่า .NET Framework แบบ IL
3.) การส่งโปรแกรมเพื่อ deploy และ Update ทำได้รวดเร็วขึ้น
4.) ใช้ Memory (RAM)  ได้มีประสิทธิภาพมากขึ้น

 

 

แต่ขั้นตอนในการ compile  โปรแกรมจากโค๊ดที่เขียนด้วย C# ไปเป็น .NET Native จะมีเพิ่มขึ้นดังนี้
1.) ระหว่างขั้นตอนการเตรียมคอมไพล์ (precompilation) จะทำการแปลง .NET Framework ไปเป็น static link ไปยังโปรแกรมที่เราขียน ซึ่งแปลว่า หลังจากนี้โปรแกรมจะเรียกใช้งาน Class Library .NET Framework จาก app-local libraries เลยซึ่งส่งผลให้โปรแกรมที่เราเขียนทำงานได้อย่างรวดเร็ว

2.) .NET Native Runtime เป็น optimaized สำหรับ static precompilation ทำให้สามารถทำงานได้เร็วขึ้นอย่างมากในขณะเดียวกันก็ยังคงไว้ซื่ง core reflection feature ทำให้เขียนโค๊ดได้ง่าย

3.) .NET Native ใช้เบื้องหลังเดียวกับ C++ Compiler ซึ่งเป็นการ optimized  สำหรับ static precompilation  .NET Native สามารถดึงข้อดีด้าน performance ของ C++ มาประกอบกับการเขียนโค๊ดแบบ Manage Code ( ไม่ต้องยุ่งกับ pointer )

โดยเบื้องหลังแล้วใช้เครื่องมือเดียวกันกับ C++ ตามตารางด้านล่าง

 

.NET Native

C++

Libraries

The .NET Framework + Windows Runtime

Win32 + Windows Runtime

Compiler

UTC optimizing compiler

UTC optimizing compiler

Deployed

Ready-to-run binaries

Ready-to-run binaries (ASM)

Runtime

MRT.dll (Minimal CLR Runtime)

CRT.dll (C Runtime)

 

สำหรับในช่วง Developer Preview นี้  .NET Native จะรองรับเฉพาะ การเขียน Applicaiton ที่ส่งขึ้น Windows Store ในรูปแบบ  binaries 

in app packages (.appx files) แต่ทางไมโครซอฟท์ได้ออกมายืนยันว่าจะพัฒนาต่อไปในส่วนของ Desktop และ Server ต่อไป ซึ่งถ้า 

Microsoft มีการประกาศความคืบหน้าเมื่อไหร่ ทางทีมงานจะรายงานให้ทราบต่อไปครับ

ส่วนใครที่อยากทดสอบดูก่อน สามารถทำตามขั้นตอนใน Link นี้ได้เลยครับ

 

 

Post Your Comment
Please Login
Android Developer - ติดตั้ง Android Studio ใน Windows
by  chalitbur   02 Feb 2015
 android studio  ติดตั้ง  setup 

ก่อนที่เราจะเริ่มเขียนโปรแกรมบน Android สิ่งแรกที่ต้องทำก็คือการติดตั้ง IDE ซึ่งในอดีตเราจะต้องทำการเขียนโปรแกรมผ่าน Eclipse IDE ซึ่งจะ Download มาพร้อมกับ ADT แต่ปัจจุบัน Google ได้พัฒนา IDE Tools ตัวใหม่สำหรับให้นักพัฒนาได้ Download กับไปใช้สำหรับพัฒนาโปรแกรมชื่อ Android Studio วันนี้เราลองมาเริ่มติตตั้งเพื่อเตรียมความพร้อมสำหรับการสร้างสรรค์โปรแกรมในโลกของ Android กัน

ปัญหา DATETIME ปัญหาคู่ใจโปรแกรมเมอร์
by  chalitbur   05 Nov 2014
 C#  JAVA  Programming 
นับเป็นปัญหาที่โปรแกรมเมอร์ทุกคนต้องประสบพบเจอ บทความนี้จะพยายามสรุปเรื่องราวเกี่ยวกับ Date Time ที่หลายๆคนสงสัย ให้กระจ่างที่สุดเท่าที่จะทำได้นะครับ ปัญหาที่เจอคืออะไร ? ปัญหาส่วนมากคือเรื่องของ Locale ครับ เช่น ตอนเราพัฒนาโปรแกรมที่เครื่องของเรา มี filed ที่เก็บวันที่ พอเรา design database เราก็กำหนดให้เป็น type Datetime แต่เรามักจะให้ user input เป็น String Format เช่น dd/mm/yyyy ซึ่ง 08/07/2552 ก็หมายถึง วันที่ 08 กรกฎาคม พ.ศ. 2552 พอนำ text ชุดนี้ไป save ลง database ก็มักจะไม่มีปัญหาอะไร (แน่แหละ ถ้ามันบันทึกผิด เราก็ต้องแก้) แต่ปัญหามักจะเกิดตอนที่ เราย้าย code ของเราไปบน server แล้วก็เกิดปัญหาเรื่องของ Locale ขึ้น เช่น server มองว่า 2552 เป็นปี ค.ศ. แทนที่จะเป็น พ.ศ. หรือ 08/07/2552 แทนที่จะมองเป็น วันที่ 08 กรกฎาคม พ.ศ. 2552 กลับมองเป็น วันที่ 07 มิถุนายน พ.ศ. 3095 ซึ่งก็มักจะบันทึกไม่ได้ เกิด error datetime out of range