ปูพื้นฐาน .Net
  • What's .NET

A Vision

  • Business Model like Service

 

A Platform

  • The .Net Framwork
  • Visual Studio.Net
  • .Net Enterprise Servers
  • .Net Building Block Service   ,Passport

A Business Model

  • Sofware As a Service (เช่นการใช้ MS-Office บน Server 1 ตัว การใช้งานก็จะกำหนดระยะเวลาได้   และสามารถหยุดการใช้งานได้ทันที  ลักษณะคื อเป็นการจำกัดการใช้งาน โปรแกรมต่างๆ ได้)

Web Services

  • เป็นส่วนของโปรแกรมที่ทำงาน ทาง Standard WEB protocol  คือ เราส่งข้อมูลไปให้เครื่อง Server แล้วให้ Server ส่งข้อมูลมาให้เรา
  • Exposes functionality over the Web
  • Built on existing and emerging standards  (เช่น ใช้ XML เพื่อให้ใช้ได้ทุก standards เหมือนกับการสร้างมาตรฐานตัวกลางขึ้นมา เพื่อให้แลกเปลี่ยนข้อมูลระหว่างบริษัท หรือ หน่วยงานต่างๆ ที่ใช้คนละระบบได้) HTTP,XML,SOAP,UDDI,WSDL,...

The .NET Framework

  • A set of Technologies for developing and using components to create
     Webform,Web Service, Windows App
  • Support the software life cycle
    development,debug,...

.Net Framework Overview

Background knowledge

  • Application Architecture
     stand alone(การใช้ข้อมูลหลายๆเครื่อง ต้องมีข้อมูลนั้น ทุกๆเครื่อง) , Client-server(ข้อมูลอยู่ที่ Server ตัวเดียว ข้อเสียคือ Server อาจล่าช้าถ้ามีข้อมูลมาก client มาก),Distributed App(มีชั้นกลางในการประมวลผลระหว่าง Server และ  Client   ) เป็นลักษณะของ 3 tier  (Presentation -> Logic -> Data) ข้อดีคือ  Client ไม่จำเป็นต้องรู้ว่า ข้อมูลจัดอยู่ในรูปแบบใด ซึ่ง Logic จะทำหน้าที่จัดการเอง

 

Microsoft's Technologies

  • OLE(Word,Excel)  เช่นการนำ Graph ของ excel มาวางใน Word ได้ นั่นคือ OLE
  • COM (VB,VC) VB,VC สามารถเรียก COmponent ใช้งานร่วมกันได้ในเครื่องเดียวกัน
  • COM+(RPC)  เรียก function ของ VB หรือ VC ข้ามเครื่องได้
  • Windows DNA(VB6,ASP) พัฒนาได้ทั้ง WEB และ Application
  • .NET(VB.NET,C#)

Limittation of Windows DNA

  • การ Integrate ทำได้ยาก เนื่องจาก VB VC ใช้ RUNTIME คนละตัวกัน อาจเกิดการผิดพลาดของข้อมูลได้
  • การเข้าถึง Serveice คนละทางกัน

.NET Framework Design Goals

  • ทำงานได้เสถียรมากขึ้น เพิ่มความปลอดภัยของข้อมูล
  • เขียนได้หลายภาษา VB,C++,C#,JScript,J#
  • เขียนสั้นลง ง่ายขึ้น
  • มีรูปแบบเดียวกัน

Windows API

API (จะมีทุก OS อยู่แล้ว Java ก็มี API , Linux ก็มี API ของมัน เอง) 

การใช้   .NET Framwork  สำหรับ OS ต่าง ๆ หรือ

การใช้ JavaRuntime       สำหรับ OS ต่างๆ ได้

 

Compilation And Execution

การคอมไพล์ จะคอมไพล์ SourceCODe เป็น Assembly (DLL or EXE)

แล้วจะใช้ Common Language Runtime JIT Compiler มาคอมไพล์อีกที จะได้ managed Code  และ Unmanage Code  มาใช้กับ OS

 

ทดสอบคอมไพล์ โดยใช้ Visual Studio 2005 CommandPrompt หรือ SDK COmmand Prompt ของ .Net Framework ก็ได้

เขียนด้วย C# ตัวคอมไพล์เลอร์ชื่อ csc

ไฟล์ hello.cs

public class HelloWorld
{
   public static void  Main()
    {
         System.Console.WriteLine("Hello World");
         System.Console.ReadLine(); 
    }
}

พิมพ์บน prompt

เข้าไปที่Folder ที่เราเก็บไฟล์

พิมพ์ csc hello.cs

จะได้ไฟล์ Hello.EXE เป็น Assembly (Code IL,Metadata (รายละเอียดการคอมไพล์))

การแกะ Metada เพื่อดู จาก EXE ทำโดย เปิด MSIL DISASSEMBLY  ( .NetFramework ) เพื่อเปิดดู

 (IL  =  intermediat Lang..)

การแก้ไขของ .NET ที่ดีกว่าเดิม

  • Registration  เปลี่ยนเป็นการใช้ Metadata มาอธิบายแทน  เลยไม่ต้อง Regist DLL
  • GUIDS  (การใช้ตัวเลขอ้างถึง ที่ไม่ซ้ำกัน) เปลี่ยนเป็นการใช้ Namespace มาอ้างแทน
  • .IDL files -> unfield object model
  • Hresults -> structured exceptions
  • IUNknows->common root object
  • Addref/Release ไม่มีการคืน พื้นที่ memory -> garbage collect มีการคืนพื้นที่ memory  โดยมี process โดยเฉพาะ
  • สนับสนุน OOP แบบเต็มที่ สมบูรณ์ 100 %
    เขียน class VB  เอา C#  inherit ได้
  • Built-in interoperabillity
    (สนับสนุน ระบบเก่าได้   VB6 ก็ยังทำงานได้)

 

Robust Environment  (ทำให้โปรแกรมดีขึ้น)

  • Automatic lifetime management  (มีการคืนค่า mem อัตโนมัติ)
  • Exception Handling (ดักจับ ERR ให้)
  • Type-safety
    No Buffer overruns,ป้องกัน hacker ได้  จากการใช้เทคนิค buffer

 

Secure Environment

config ได้ที่ .Netframework Configuaration

  • Security designed-in
  • Code access security enforcement  (สามารถควบคุมตัวแปรให้ใช้ได้เฉพาะในclass ได้)
  • ASP.Net  นำมาใช้งานได้เลย โดยทาง WIndows ID,passport ก็ได้

Simplify deployment

  • (side-by-side )สามารถ copy ไปรันได้เลย โดยไม่ต้อง instaled ก็ได้

Extebsuble

  • สามารถดาวโหลด sourcecode หรือ library มาใช้งานได้เลย

 

เริ่ม VisualStudio 2005

Project=โปรแกรมที่ต้องการ

Solution=Project หลายๆอันมารวมกัน

FILE->NEW->project..

 

other Project type->VisualStudio Solution  เลือก BlankSolution เปลี่ยน path ตามต้องการ  เพื่อเลือกพื้นที่การทำงาน

เลือก solution Explorer ที่ View  แล้ว Add Project เข้ามาเลือก VC#  เลือก Console App-> OK

 

เริ่มการสร้าง Console Application (โปรแกรมบน DOS)

จะได้ CODe ตัวอย่าง  C#

การตั้ง namespace  MS  แนะนำให้ใช้ DomainName แทน เพื่อไม่ใช้ซ้ำกัน

เช่น th.ac.psu.cs.Myapp

ถ้าข้อความเป็นสีเขียว แสดงว่ามี class นี้จริง

ถ้าต้องการใช้ขึ้น LookUP ช่วยเขียนโปรแกรมแบบ manual ให้กด Ctrl+space

SC:

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

classProgram

  {

           static void Main( string [] args)

           {

               Console .WriteLine( "Hello World" );                Console .ReadLine();

            }

   }

}

การCOmpile ให้ใช้ เมนู Build

หรือคลิกขวาที่ Project แล้ว Build ก็ได้

ไฟล์ EXE จะอยู่ที่ bin\debug

 

การCOmpile  มี 2 แบบ คือ Release(รวดเดียวเสร็จ) และ Debug (ทีละบรรทัด) เปลี่ยนการ compile ได้ที่ปุ่ม play

 

สร้างโปรแกรม ส่งเมลล์ อย่างง่าย

using System;

using System.Collections.Generic;

using System.Text;

using System.Net.Mail;

namespace ConsoleApplication1

{

classProgram

   {

     static void Main( string [] args) 

       {

          Console .WriteLine( "Sending E-mail " );

          SmtpClient mail = newSmtpClient();          

           mail.Host =
"smtp.psu.ac.th" ;   คอมเม้นท์ (SMTP ของ มหาลัย)

          mail.Send("[email protected]",

"[email protected],[email protected],[email protected]" ,

"Test DotNet",

"สวัสดี ชาวโลก ข้าจะยึดครองโลก 555+ (TestMail .Net Class)" );

          Console.WriteLine("Finish");

          Console .ReadLine();

           }

    }

}

 

การเรียกใช้ MSDN ให้ hilight ข้อความที่เราสนใจ แล้วกด F1 เลย    

เช่น hilight "smtp.client" +F1

 

 

เริ่มการทำ 2 Project  ใน 1 Solution 

เลือก solution  

Add new Project

VC#->Windows

ClassLibrary

 

Add Reference

การบอกว่า Console จำเป็นต้องใช้ ClassLibrary ตัวไหน ที่เราสร้างเอง

ให้คลิกขวาที่ Console แล้ว Add Reference

c:\windows\assembly  จะเป็น Reference ที่ไม่ต้อง Add Reference ก็ใช้ได้เลย

 

จากนั้นการอ้างถึงให้อ้างอิงถึง namespace.ชื่อclass ที่ต้องการใน ClassLib นั้น

 

สร้าง Class ใหม่เพิ่มใน ClassLibrary

ชื่อ DateHelper

คลิกขวาที่ ClassITEM  เลือก Add -> New Item  เลือกClass

ทดลองใช้ Class Diagram โดยคลิกที่มุมมอง ที่ Solution Explorer

 

ระดับการเข้าถึง Class

internal  เฉพาะใน Solution เดียวดัน

protected  เฉพาะ Class ที่ Inherrit เท่านั้น

 

การเปลี่ยนชื่อ Class,Method,ตัวแปร

ให้ Click ขวาที่ เราจะเปลี่ยน เลือก Refactor  ทุก Class ที่มีการเรียกใช้ก็จะเปลี่ยนทุกที่

 

ถ้าจะ นำ Code ที่เราพิมพ์แตกเป็น Method ก็คลิกขวา แล้ว Refactor -> Extract Method..

 

Refactor สามารถเปลี่ยน local Variable เป็น  Parameter ได้ เช่นกัน

 

 

การสร้าง Setting File เพื่อให้โปรแกรมยืดหยุ่น

using System;

using System.Collections.Generic;

using System.Text;

using System.Net.Mail;

namespace ConsoleApplication1

{

classProgram

{

static void Main( string [] args)

{

Console .WriteLine( "Sending E-mail " );

 

Thinawat.mail.
MailHelper mailObj = new Thinawat.mail. MailHelper ();

mailObj.SendEmail(Settings1.Default.To,

Settings1 .Default.Subject,

"สวัสดี ชาวโลก ข้าจะยึดครองโลก 555+ (TestMail .Net Class) สวัสดีประมวล สำเนียง 555+ , ยุพิน สมชาย 555+");

Console .WriteLine( "Finish" ); Console .ReadLine();

}

}

}