สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial Web Programming

A01 JavaScript01 HelloWorld A02 JavaScript02 HelloWorld by Class A03 JavaScript03 Object A04 JavaScript04 Prototype A05 JavaScript05 Closure A06 NodeJS01 HelloWorld A07 npm01 Intro A08 React01 HelloWorld A09 AngularJS01 HelloWorld A10 VueJS01 HelloWorld A11 webpack01 Intro A12 ASPNET01 HelloWorld A13 Flask01 HelloWorld A14 Windows CommandLine A15 GoogleCloudPlatform Product A16 GoogleAppEngine01 HelloWorld A17 WhatIs01 WebServer A18 WhatIs02 API A19 WhatIs03 Linux A20 Linux CommandLine A21 Android01 HelloWorld A22 Android02 Gradle A23 Maven HelloWorld A24 Nancy HelloWorld A25 WhatIs04 Protocol A26 HowTo01 Install Ubuntu Desktop A27 HowTo02 Install WebServer on Ubuntu

A24_Nancy_HelloWorld

ในบทความก่อนๆหน้านี้ ถ้าท่านผู้อ่านยังจำได้ ผมเคยพูดถึง ASP.NET (A12_ASPNET01_HelloWorld) ซึ่งเป็น Web Framework ที่ใช้สร้างเว็บด้วย .NET ไปแล้ว ในบทความนี้ผมจะขอพาท่านผู้อ่านไปรู้จักอีกทางเลือกหนึ่งชื่อว่า Nancy ครับ

Nancy คืออะไร

Nancy เป็น open-source Web Framework ที่เบา ใช้สำหรับสร้าง HTTP based services บน .NET และ Mono โดยถูกออกแบบมาให้สามารถรองรับ request พวก DELETE, GET, HEAD, OPTIONS, POST, PUT, PATCH และใช้ Domain Specific Language (DSL) ที่เรียบง่ายในการคืน response ด้วยการพิมพ์โค้ดสั้นๆ

ประวัติ Nancy

Nancy ถูกพัฒนาโดย Andreas Håkansson, Steven Robbins และผู้สนับสนุนคนอื่นๆ Nancy เป็นส่วนหนึ่งของ NancyFx ซึ่งเป็น umbrella project ที่เก็บ component ทั้งหมดไว้ ผู้พัฒนา Nancy ได้รับแรงบันดาลใจมาจาก Sinatra ซึ่งเป็น framework สำหรับภาษา Ruby ดังนั้นพวกเขาจึงเลือกชื่อลูกสาวของ Frank Sinatra ที่ชื่อว่า Nancy มาใช้ ส่วน Fx หมายถึง framework 

ถ้าดูจากประวัติใน GitHub จะเห็นได้ว่า Nancy ถูก commit ขึ้น GitHub ครั้งแรกในช่วงปลายปี 2010 และได้รับการพัฒนาอย่างต่อเนื่องมาจนถึงปัจจุบัน ซึ่ง Nancy ได้รับการยอมรับในหมู่นักพัฒนาว่าเป็น framework ที่ดีและมีความเสถียรตัวหนึ่งครับ

Project Hello world

ในบทความนี้เราจะมาทดลองใช้ Nancy สร้างโปรเจกต์ Hello World กัน โดยเราจะลง Nancy ผ่าน Nuget ใน Visual Studio และเขียนด้วยภาษา C#

ต้องขอชี้แจงก่อนว่าผมคิดว่าผู้อ่านที่จะใช้ Nancy น่าจะมีพื้นฐานเขียนโปรแกรมกันอยู่แล้ว ดังนั้นผมจะขอไม่อธิบายเรื่องการติดตั้งโปรแกรมต่างๆหรือเรื่องอะไรที่เป็นความรู้พื้นฐานนะครับ

1. เปิด Visual Studio ขึ้นมา ถ้าใครยังไม่มีหรือมีแล้วแต่เป็นเวอร์ชันเก่าดึกดำบรรพ์ก็สามารถดาวน์โหลดเวอร์ชันใหม่ได้จาก https://visualstudio.microsoft.com/downloads/ หลังจากทำการติดตั้งเรียบร้อยแล้วให้สร้างโปรเจกต์ใหม่โดยไปที่เมนู File > New > Project...

2. จะมีหน้าต่าง New Project ปรากฏขึ้นมา ที่แถบด้านซ้ายเลือก Visual C# แล้วเลือก Console App (.NET Framework) จากนั้นตั้งชื่อโปรเจกต์ในตัวอย่างนี้ตั้งชื่อว่า HelloApp และเลือกที่เก็บโปรเจกต์ตามต้องการ แล้วกดปุ่ม OK
หมายเหตุ: ในตัวอย่างนี้ผมใช้ .NET เวอร์ชัน 4.6.1 ถ้าของใครเวอร์ชันเก่ากว่านี้แล้วทำตามตัวอย่างทั้งหมดแล้วไม่สำเร็จก็ขอให้อัปเดท .NET เป็นเวอร์ชันใหม่ก่อนแล้วทำตามตัวอย่างอีกทีนะครับ

3. รอสักครู่ เมื่อสร้างโปรเจกต์เสร็จ Visual Studio จะแสดงหน้าไฟล์ Program.cs ซึ่งมีโค้ดตั้งต้นให้ส่วนหนึ่งแล้ว เดี๋ยวต่อไปเราจะเขียนโปรแกรมที่ไฟล์นี้ครับ แต่ก่อนอื่นเราจะมาลง Nancy กันก่อน

4. ไปที่เมนู Project > Manage Nuget Packages…

5. จะปรากฏหน้า Nuget: HelloApp ขึ้นมา ให้เลือก tab Browse แล้วพิมพ์คำว่า nancy ที่ช่องค้นหา จากนั้นกด Enter

6. รอจนค้นหาเสร็จ ให้เลือก Nancy แล้วกดปุ่ม Install เพื่อติดตั้ง (ในตัวอย่างนี้ติดตั้งเวอร์ชัน 2.0.0 ถ้าติดตั้งคนละเวอร์ชันกันอาจะทำให้ไม่สามารถใช้โค้ดตามตัวอย่างนี้ได้นะครับ)

7. จะมีหน้าจอ Preview ขึ้นมาให้กด OK

8. รอจนติดตั้งเสร็จ ให้เลือก Nancy.Hosting.Self แล้วกดปุ่ม Install เพื่อติดตั้ง จากนั้นทำเหมือนขั้นตอน 7

9. หลังจากติดตั้งเสร็จแล้วก็ปิดหน้า Nuget: HelloApp ได้เลยครับ กลับมาที่หน้าไฟล์ Program.cs ให้เขียนโค้ดตามนี้แล้วกด save

using Nancy.Hosting.Self;
using System;
 
namespace HelloApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var hostConfigs = new HostConfiguration
            {
                UrlReservations = new UrlReservations() { CreateAutomatically = true }
            };
 
            Uri uri = new Uri("http://localhost:5000");
            NancyHost host = new NancyHost(hostConfigs, uri);
            host.Start();
            Console.WriteLine("Press enter to exit...");
            Console.ReadLine();
        }
    }
}

10. ทดลองรันโปรแกรมโดยกดปุ่ม Start ด้านบน หลังจากกดแล้วบางเครื่องอาจจะขึ้นเตือนว่าคอมพิวเตอร์มีการเปลี่ยนแปลง ไม่ต้องตกใจครับ ให้กดยอมรับหรือตกลงไป

11. หลังจากที่รันโปรแกรมและมีหน้าต่าง Console ขึ้นมาแล้ว ให้เปิด browser ขึ้นมาแล้วลองเข้าไปที่ http://localhost:5000 ดูครับ จะเห็นว่ามันขึ้นหน้า Nancy - 404 Not Found แบบในภาพประกอบ แสดงว่าทุกอย่างใช้ได้ไม่มีปัญหาครับ ถ้าไม่ขึ้นหรือรันโปรแกรมไม่ได้แสดงว่าการติดตั้ง Nancy ของเรามีปัญหา ขอให้ลองทำตามขั้นตอนที่ 4 - 8 อีกครั้งนะครับ

12. ตอนนี้เราจะมาทำหน้า Hello World กัน ก่อนอื่นให้หยุดรันโปรแกรมในขั้นตอนที่ 11 ก่อนโดยกดปุ่ม Stop แล้วสร้าง class ใหม่โดยการคลิกขวาที่ชื่อโปรเจกต์ในช่อง Solution Explorer แล้วเลือก Add > Class...

13. จะมีหน้าต่าง Add New Item ปรากฏขึ้นมา ให้เลือก Class แล้วตั้งชื่อไฟล์ ในตัวอย่างนี้ตั้งว่า HelloModule.cs จากนั้นกดปุ่ม Add

14. ไปที่หน้า HelloModule.cs แล้วเขียนโค้ดตามนี้

using Nancy;
 
namespace HelloApp
{
    public class HelloModule : NancyModule
    {
        public HelloModule()
        {
            Get("/", args => {
                return "Hello World";
            });
        }
    }
}

15. รันโปรแกรมโดยกดปุ่ม Start รอจนมีหน้าต่าง Console ขึ้นมา ให้เปิด browser แล้วลองเข้าไปที่ http://localhost:5000 อีกครั้ง คราวนี้จะเห็นว่าหน้าเว็บของเราแสดงข้อความ Hello World ได้อย่างถูกต้องแล้วครับ

 

เสร็จแล้วครับโปรเจกต์ Hello World ด้วย Nancy ของเรา ดูเหมือนขั้นตอนจะเยอะเพราะต้องติดตั้ง Nancy และต้องสร้าง class ด้วย แต่ว่าไม่ยากเกินไปใช่ไหมครับ? ถ้าอยากเรียนรู้เพิ่มเติมหรือลองทำอย่างอื่นเพิ่มเติมก็สามารถอ่านได้จาก document ใน [1] และตัวอย่างโค้ดใน [2] ซึ่งกลุ่มผู้พัฒนาเป็นผู้เขียนเอง ดังนั้นจึงมั่นใจได้ว่าครบถ้วนและถูกต้องแน่นอนครับ แต่ๆๆ ที่ต้องระวังคือตั้งแต่เวอร์ชัน 2.0.0 เป็นต้นไปมีวิธีการเขียนบางอย่างต่างไปจากเดิมดังนั้นต้องดูให้ดีว่าเราต้องเขียนแบบไหนนะครับ

ประโยชน์ของ Nancy ในแง่ธุรกิจ

แน่นอนครับว่ามันฟรีเพราะเป็น open-source เราสามารถใช้งานได้กับระบบปฏิบัติการอื่นไม่จำเป็นต้องใช้กับ Windows เท่านั้น ดังนั้นถ้าเราเอามันไปใช้กับ Linux เราก็จะไม่เสียค่าใช้จ่ายทั้งเรื่อง OS และ Software ครับ 

และจุดเด่นที่สุดที่ทำให้ Nancy ได้รับความนิยมคือคำสั่งที่สั้น กระชับ และมีความหมาย ในขณะที่มีความยืดหยุ่นพอให้เราได้สิ่งที่เราต้องการโดยการเขียนโค้ดนิดเดียวเมื่อเทียบกับ Framework อื่น นอกจากนี้ยังสามารถเริ่มใช้งานได้ง่ายๆโดยไม่จำเป็นต้องมีการตั้งค่าใดๆทั้งสิ้น ซึ่งสองอย่างนี้ช่วยให้ง่ายต่อการเรียนรู้และประหยัดเวลาไปได้มากครับ

พื้นฐานที่ควรมีก่อนเรียนรู้ Nancy

การใช้งาน Nancy ควรมีความรู้เรื่อง C# (หรือ VB.NET) และ Web Programming ครับ 

ถ้าผู้อ่านสนใจอยากเรียนรู้อย่างลึกซึ้ง นำไปใช้ต่อยอดได้จริง ก็ขอแนะนำคอร์สที่ดีที่สุดคุ้มที่สุดครอบคลุมที่สุดคือคอร์ส Web Programming PHP101-CS ของทาง EPT ครับ สามารถดูรายละเอียดคอร์สได้โดยคลิกที่นี่หรือติดต่อได้ที่ 085-350-7540

แล้วพบกันใหม่บทความหน้านะครับ 

 

ที่มาและเว็บไซต์อ้างอิง

[1] https://github.com/NancyFx/Nancy/wiki/Documentation
[2] https://github.com/NancyFx/Nancy

 



ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

Python

L16 PYTHON SIMPLE ARITHMETIC
L40 PYTHON TUTORIAL INTRO
L41 PYTHON GETTING STARTED
L42 PYTHON SYNTAX
L43 PYTHON COMMENTS
L44 PYTHON VARIABLES
L45 PYTHON DATATYPE
L46 PYTHON NUMBERS
L47 PYTHON CASING
L48 PYTHON STRINGS
L49 PYTHON BOOLEANS
L50 PYTHON OPARETORS
L51 PYTHON LISTS
L52 PYTHON TUPELS
L53 PYTHON SETS
L54 PYTHON DICTIONARY
L55 PYTHON IF ELSE
L56 PYTHON WHILE LOOP
L57 PYTHON FOR LOOP
L58 PYTHON FUNCTION
L59 PYTHON LAMBDA
L60 PYTHON ARRAYS
L61 PYTHON CLASSSES OBJECTS
L62 PYTHON INHERITANCE
L63 PYTHON ITERATORS
L63 PYTHON SCOPE
L64 PYTHON MODULES
L65 PYTHON DATETIME
L66 PYTHON JSON
L67 PYTHON REGEX
L68 PYTHON PIP
L69 PYTHON TRY EXCAPE
L70 PYTHON USER INPUT
L71 PYTHON FILE OPEN
L73 PYTHON STRING FORMATTING
L74 PYTHON READ FILE
L75 PYTHON WRILE CREATE FILE
L76 PYTHON DELETE FILE
L90 PYTHON POISSON DISTRIBUTION
L90 PYTHON RANDOM INTRODUCTION
L91 PYTHON CHI SQUARE DISTRIBUTION
L91 PYTHON EXPONENTIAL DISTRIBUTION
L92 PYTHON RAYLEIGH DISTRIBUTION
L93 PYTHON PARETO DISTRIBUTION
L94 PYTHON ZIPF DISTRIBUTION
L96 PYTHON RANDOM PERMUTATIONS
L97 PYTHON SEABORN
L98 PYTHON NORMAL DISTRIBUTION
L99 PYTHON DISTRIBUTION
L99 PYTHON LOGISTIC DISTRIBUTION
L99 PYTHON MULTINOMIAL DISTRIBUTION
L99 PYTHON NUMPY SPLITTING ARRAY
L99 PYTHON NUMPY UFUNCS
L99 PYTHON UNIFORM DISTRIBUTION
LM60PYTHON BUILT IN FUNCTIONS
LM61PYTHON STRING METHODS
LM62PYTHON LIST ARRAY METHODS
LM63PYTHON DICTIONARY METHODS
LM64PYTHON TUPLE METHODS
LM65PYTHON SET METHODS
LM66PYTHON FILE METHODS
LM67PYTHON KEYWORD
LM68PYTHON BUILT IN EXCAPTION
LM69PYTHON RANDOM MODULE
LM70PYTHON MATH MODULE
LM70PYTHON REQUSTS MODULE
LM72PYTHON CMATH MODULE
LM73PYTHON HOWTO REMOVE DUPLICATES FROM A PYTHON LIST
LM74PYTHON HOW TO REVERSE A STRING IN PYTHON
LM75PYTHON HOW TO ADD TWO NUMBERS IN PYTHON
LM95PYTHON RANDOM DATA DISTRIBUTION


แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา