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

Web Programming

ASP.NET ต่างกับ ASP อย่างไร JavaScript - HelloWorld npm - Intro AngularJS - HelloWorld VueJS - HelloWorld webpack - Intro ASP.NET - HelloWorld Flask - HelloWorld Web Server คืออะไร API คืออะไร Maven - HelloWorld Nancy - HelloWorld Protocol คืออะไร วิธีติดตั้ง Web Server บน Ubuntu วิธีติดตั้ง PrestaShop with PHP 8 (ใช้ Amazon Lightsail) วิธีติดตั้ง XAMPP บน Ubuntu 22.04 วิธีติดตั้ง WordPress บน XAMPP บน Ubuntu 22.04 React - Simple Web App - People Counter React - Simple Web App - People Counter 2 React - Web App - Dictionary React - Web App - Multiple Pages React - Web App - Multiple Pages with APIs React - Web App - Calculator React - Web App - Smart Parking วิธีสร้าง AWS EC2 instance สร้าง Web Application โดยใช้ Django และ Deploy บน AWS EC2 React - Create and Run React Application React - Web App - SpO2 Tracker วิธีติดตั้งและใช้งาน CKEditor 5 Introduction to JSON JSON Full Form: JavaScript Object Notation History of JSON JSON vs XML Structure of JSON JSON Data Types JSON Objects Explained JSON Arrays Explained Key-Value Pairs in JSON JSON String Data Type JSON Number Data Type JSON Boolean Data Type JSON Null Data Type Nested JSON Objects JSON in APIs JSON Schema Overview How to Write JSON JSON File Extensions (.json) JSON Syntax Rules JSON Parsing in JavaScript JSON Stringify in JavaScript How to Use JSON.parse() How to Use JSON.stringify() Escaping Characters in JSON JSON Comments (and why they are not allowed) JSON in Web Development Sending JSON Data with HTTP Requests Receiving JSON Responses in APIs REST APIs and JSON JSON in AJAX Requests Working with JSON in Node.js How to Read a JSON File Saving Data in JSON Format How to Validate JSON JSONLint for Validation JSON Pretty Print JSON Minification JSON vs YAML JSON and JavaScript Compatibility JSON and Python Integration Working with JSON in Python (json module) JSON in Java (Jackson and GSON) JSON in C++ (RapidJSON and nlohmann/json) JSON in C# (Json.NET) JSON in PHP (json_encode and json_decode) How to Fetch JSON Data from APIs Fetching JSON in Python (requests module) Fetching JSON in JavaScript (fetch API) Fetching JSON in jQuery JSON Serialization JSON Deserialization JSON Data Interchange Common Errors in JSON Syntax Handling Large JSON Files Streaming JSON Data JSON Pagination Techniques JSON as a Configuration Format JSON in Cloud Storage JSON and MongoDB BSON vs JSON in MongoDB JSON Web Tokens (JWT) Security Considerations with JSON Cross-Origin Resource Sharing (CORS) and JSON JSON Schema Validation Creating a JSON Schema Required Fields in JSON Schema JSON Schema Property Types JSON Schema Examples Benefits of JSON Schema JSONPath: Querying JSON Data JSON Data Transformation Comparing Two JSON Objects Sorting JSON Data Flattening JSON Structures JSON Merge Techniques JSON in NoSQL Databases JSON in Relational Databases Storing JSON in MySQL JSON Functions in MySQL JSON Functions in PostgreSQL JSON Functions in SQL Server JSON and Elasticsearch Advantages of Using JSON Limitations of JSON JSON and GraphQL JSONP (JSON with Padding) JSON and Local Storage in Browsers JSON and Cookies JSON and Session Storage Importing and Exporting JSON Nested vs Flattened JSON Structures JSON Best Practices Debugging JSON Errors JSON Performance Optimization Real-Time Data with JSON Microservices and JSON JSON Versioning JSON in IoT Applications JSON for Data Exchange in Mobile Apps The Future of JSON Introduction to XML XML Full Form: eXtensible Markup Language History of XML XML vs HTML XML vs JSON Structure of XML XML Syntax Rules XML Elements Explained XML Attributes Explained XML Tags XML Prolog XML Declaration XML Namespaces XML Data Types XML Comments XML Empty Elements XML Well-Formed Documents XML Valid Documents XML DTD (Document Type Definition) XML Schema Definition (XSD) XML vs XSD XML vs DTD XML Namespaces Best Practices XML Parsers XML DOM (Document Object Model) SAX Parser in XML XML Parsing in Java XML Parsing in Python XML Parsing in C# XML Parsing in JavaScript XML with PHP How to Read XML Files How to Write XML Files How to Validate XML XML Formatting and Pretty Print XML Minification XML Tree Structure XML as a Data Interchange Format XML in Web Services SOAP and XML REST vs SOAP (XML in APIs) XML in AJAX XMLHTTPRequest in JavaScript XML in Mobile Applications How to Transform XML with XSLT XSLT for Formatting XML XPath Overview XPath Syntax XPath Expressions and Queries XML Query Languages XQuery Overview XLink for XML Linking XPointer for XML Fragment Identification XML for Configuration Files Storing XML in Databases XML in MySQL XML in PostgreSQL XML in SQL Server XML in Oracle Database XML Indexing XML Data Modeling XML and SOAP Faults XML Encryption XML Digital Signatures Security Best Practices for XML XML Schema Elements XML Schema Attributes XML Schema Validation XML Schema Restrictions and Extensions XML Schema Choice and Sequence Benefits of Using XML Limitations of XML XML in Big Data XML and NoSQL Databases XML for IoT Applications XML in E-commerce Systems XML for Document Storage XML for Multimedia Content XML in Content Management Systems XML and Microservices XML and Cloud Computing XML for RSS Feeds Atom and XML Feeds XML in Office Document Formats (DOCX, XLSX) XML and SVG (Scalable Vector Graphics) XML for Vector Graphics XML Compression Techniques XML with WebSockets XML in Real-Time Applications JSON vs XML Performance XML and CORS (Cross-Origin Resource Sharing) XML for API Design Common XML Parsing Errors Debugging XML Converting XML to JSON Converting JSON to XML XML Best Practices XML Versioning XML and GraphQL The Future of XML

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

 


Tag ที่น่าสนใจ: nancy web_framework .net http_services nancyfx open-source andreas_h?kansson steven_robbins sinatra dsl c# visual_studio nuget self_hosting


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

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

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

หรือติดต่อ

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

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

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

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
แผนที่ ที่ตั้งของอาคารของเรา