Skip to content

ASP.NET

ASP.NET คือเฟรมเวิร์คสำหรับการพัฒนาเว็บแอปพลิเคชันที่พัฒนาโดย Microsoft ทำงานบนแพลตฟอร์ม .NET ASP.NET ช่วยให้การสร้างเว็บแอปพลิเคชันที่มีความซับซ้อนและมีประสิทธิภาพเป็นไปได้อย่างง่ายดาย โดยมีฟีเจอร์ต่าง ๆ ที่รองรับการพัฒนาทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์

คุณสมบัติหลักของ ASP.NET

1. MVC (Model-View-Controller)

ASP.NET MVC เป็นสถาปัตยกรรมที่ช่วยในการแยกส่วนของแอปพลิเคชันออกเป็น 3 ส่วนหลัก คือ Model, View และ Controller ทำให้การพัฒนาและการทดสอบมีความง่ายดายและมีโครงสร้างที่ชัดเจน

2. Web API

ASP.NET ช่วยให้การสร้าง RESTful API สำหรับการสื่อสารระหว่างไคลเอ็นต์และเซิร์ฟเวอร์เป็นไปได้อย่างง่ายดาย โดยใช้ ASP.NET Web API

3. Razor Pages

Razor Pages เป็นรูปแบบการพัฒนาแบบใหม่ที่เพิ่มเข้ามาใน ASP.NET Core ซึ่งช่วยให้การพัฒนาเว็บแอปพลิเคชันที่มีความง่ายดายและเน้นการใช้งานแบบหน้าเดียว (single-page application)

4. SignalR

SignalR เป็นไลบรารีที่ช่วยให้การสร้างการสื่อสารแบบเรียลไทม์ระหว่างเซิร์ฟเวอร์และไคลเอ็นต์เป็นไปได้อย่างง่ายดาย

5. Dependency Injection

ASP.NET Core มีการสนับสนุน Dependency Injection ในตัว ทำให้การจัดการการพึ่งพาของส่วนต่าง ๆ ในแอปพลิเคชันเป็นไปได้อย่างง่ายดายและมีความยืดหยุ่น

6. Cross-Platform

ASP.NET Core สามารถทำงานได้บนหลายแพลตฟอร์ม เช่น Windows, macOS, และ Linux

การเริ่มต้นใช้งาน ASP.NET Core

1. การติดตั้ง .NET SDK

สามารถดาวน์โหลดและติดตั้ง .NET SDK ได้จาก Microsoft .NET Download

2. การสร้างโปรเจค ASP.NET Core ใหม่

ใช้คำสั่ง dotnet new เพื่อสร้างโปรเจคใหม่

bash
dotnet new mvc -o MyWebApp
cd MyWebApp
dotnet run

3. โครงสร้างโปรเจค

plaintext
MyWebApp/
├── Controllers/
│   └── HomeController.cs
├── Models/
├── Views/
│   ├── Home/
│   │   └── Index.cshtml
│   ├── Shared/
│   │   └── _Layout.cshtml
├── wwwroot/
├── appsettings.json
├── Program.cs
├── Startup.cs
├── MyWebApp.csproj

4. การสร้าง Controller

Controller เป็นส่วนที่รับผิดชอบในการจัดการการร้องขอจากผู้ใช้และส่งข้อมูลไปยัง View

csharp
using Microsoft.AspNetCore.Mvc;

namespace MyWebApp.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult About()
        {
            ViewData["Message"] = "Your application description page.";
            return View();
        }

        public IActionResult Contact()
        {
            ViewData["Message"] = "Your contact page.";
            return View();
        }
    }
}

5. การสร้าง View

View เป็นส่วนที่ใช้แสดงผลข้อมูลที่ได้รับจาก Controller

สร้างไฟล์ Views/Home/Index.cshtml

html
@{
    ViewData["Title"] = "Home Page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

6. การตั้งค่า Routing

การตั้งค่า Routing ใน ASP.NET Core สามารถทำได้ในไฟล์ Startup.cs

csharp
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace MyWebApp
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}

7. การใช้ Entity Framework Core สำหรับการเข้าถึงฐานข้อมูล

Entity Framework Core (EF Core) เป็น ORM (Object-Relational Mapping) ที่ช่วยให้การทำงานกับฐานข้อมูลใน .NET เป็นไปได้อย่างง่ายดาย

การติดตั้งแพ็กเกจ EF Core

bash
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools

การสร้าง DbContext และ Model

csharp
using Microsoft.EntityFrameworkCore;

namespace MyWebApp.Models
{
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        public DbSet<Product> Products { get; set; }
    }

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
    }
}

การตั้งค่า EF Core ใน Startup.cs

csharp
using Microsoft.EntityFrameworkCore;
using MyWebApp.Models;

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();

    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}

การตั้งค่า Connection String ใน appsettings.json

json
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyWebAppDB;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  ...
}

ASP.NET Core เป็นเฟรมเวิร์คที่ทรงพลังและยืดหยุ่นสำหรับการพัฒนาเว็บแอปพลิเคชันที่มีประสิทธิภาพและสามารถขยายตัวได้ดี การรวมการใช้งานของ MVC, Web API, Razor Pages และฟีเจอร์ต่าง ๆ ของ .NET ช่วยให้การพัฒนาเว็บแอปพลิเคชันเป็นไปได้อย่างราบรื่นและมีประสิทธิภาพ

แนะนำคอร์สเรียน

เรียนพื้นฐานภาษา C#

Saladpuk.com

หลังจากนั้นมาทำลองหัดเขียน ASP.NET Web API กันนะครับ

เริ่มต้นอีกครั้งกับ .NET 6 Web API

หลังจากนั้นมาลองหัดเขียน Clean Architecture กันครับ

Clean architecture from scratch with .NET7

Part#1

Part#2

Bonus Track

แนะนำ Beginner Playlist สำหรับท่านใดที่สนใจพัฒนาโปรแกรมด้วย .NET Technology จาก Microsoft นะครับ เรียนกันช่วงปิดปีใหม่สะดวกเลย เนื้อหาครอบคลุมทั้ง AI, IoT, Cloud, Desktop App, Mobile App, Web App

Awesome .NET