เว็บไซต์ ASP.NET หรือ ASP.NET Web Application?


848

เมื่อฉันเริ่มโครงการ ASP.NET ใหม่ใน Visual Studio ฉันสามารถสร้างแอปพลิเคชันเว็บ ASP.NET หรือสร้างเว็บไซต์ ASP.NET ได้

อะไรคือความแตกต่างระหว่าง ASP.NET Web Application และ ASP.NET Web Site? ทำไมฉันถึงเลือกอย่างใดอย่างหนึ่ง?

คำตอบนั้นแตกต่างกันไปตาม Visual Studio รุ่นที่ฉันใช้หรือไม่


6
การเปรียบเทียบและคำอธิบายแบบเต็มและล่าสุด (สำหรับ 4.5) พบได้ที่นี่ที่ MSDN: โครงการแอปพลิเคชันเว็บกับโครงการเว็บไซต์ใน Visual Studio
— Gustav

คำตอบ:


556

เว็บไซต์:

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

หาก Visual Studio ไม่ได้รับการบอกให้ใช้ชื่อเดิมซ้ำ ๆ ตลอดเวลาชื่อดังกล่าวจะปรากฏขึ้นพร้อมชื่อใหม่สำหรับไฟล์ DLL ที่สร้างโดยหน้าเว็บตลอดเวลา ที่สามารถนำไปสู่การมีสำเนา DLL หลายไฟล์ที่มีชื่อคลาสเดียวกันซึ่งจะทำให้เกิดข้อผิดพลาดมากมาย โครงการเว็บไซต์ถูกนำมาใช้กับ Visual Studio 2005 แต่มันกลับกลายเป็นว่าไม่เป็นที่นิยม

เว็บแอปพลิเคชัน:

แอพลิเคชันเว็บโครงการที่ถูกสร้างขึ้นเป็น add-in และตอนนี้มีอยู่เป็นส่วนหนึ่งของ SP 1 สำหรับ Visual Studio 2005 ความแตกต่างที่สำคัญคือโครงการแอพลิเคชันเว็บถูกออกแบบมาเพื่อการทำงานคล้ายกับโครงการที่มีเว็บที่ให้มาพร้อมกับ Visual Studio 2003 มันจะ รวบรวมแอปพลิเคชันเป็นไฟล์ DLL ไฟล์เดียวในเวลาบิลด์ เพื่ออัปเดตโครงการจะต้องทำการคอมไพล์ใหม่และไฟล์ DLL ที่เผยแพร่เพื่อให้การเปลี่ยนแปลงเกิดขึ้น

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

การอ้างอิง

บทความASP.NET 2.0 - เว็บไซต์เทียบกับโครงการเว็บแอปพลิเคชันยังให้เหตุผลว่าทำไมต้องใช้อย่างใดอย่างหนึ่ง นี่คือข้อความที่ตัดตอนมาจากมัน:

  • คุณต้องการโอนย้ายแอปพลิเคชัน Visual Studio .NET 2003 ขนาดใหญ่เป็น VS 2005 หรือไม่ ใช้โครงการแอปพลิเคชันเว็บ
  • คุณต้องการเปิดและแก้ไขไดเรกทอรีใด ๆ เป็นโครงการเว็บโดยไม่ต้องสร้างไฟล์โครงการ? ใช้โครงการเว็บไซต์
  • คุณต้องเพิ่มขั้นตอนก่อนสร้างและหลังสร้างระหว่างการรวบรวมหรือไม่ ใช้โครงการ Web Application
  • คุณต้องการสร้างแอปพลิเคชันเว็บโดยใช้หลายโครงการบนเว็บหรือไม่ ใช้โครงการ Web Application
  • คุณต้องการสร้างหนึ่งชุดสำหรับแต่ละหน้า? ใช้โครงการเว็บไซต์
  • คุณชอบการรวบรวมแบบไดนามิกและทำงานบนหน้าเว็บโดยไม่ต้องสร้างเว็บไซต์ทั้งหมดในแต่ละครั้ง ใช้โครงการเว็บไซต์
  • คุณชอบรูปแบบรหัสหน้าเดียวกับแบบจำลองโค้ดหรือไม่ ใช้โครงการเว็บไซต์

โครงการแอปพลิเคชันเว็บกับโครงการเว็บไซต์ (MSDN) อธิบายความแตกต่างระหว่างโครงการเว็บไซต์และโปรแกรมประยุกต์บนเว็บ นอกจากนี้ยังกล่าวถึงการกำหนดค่าที่จะทำใน Visual Studio


5
คุณยังสามารถรวบรวมเว็บไซต์ทั้งหมดของคุณให้เป็น dll โดยใช้เว็บไซต์เป็นไฟล์
— dtc

31
วิธีที่ฉันมักจะคิดว่ามัน หากคุณกำลังเขียนโปรแกรมประยุกต์ที่ใช้ HTML เป็น UI ให้ใช้ Web Application หากคุณมีเว็บไซต์ที่ต้องใช้ Asp.net เพียงเล็กน้อยในบางหน้าเว็บให้ใช้ Web Site Project
— Ian Ringrose

35
ที่จริงแล้ว Web Application Projects เป็นประเภทโครงการ ASP.NET ดั้งเดิมอย่างแม่นยำ พวกเขาจะไม่ "ชอบ" โครงการที่เรามีใน Visual Studio 2003 พวกเขาไม่ได้ถูกสร้างเป็น Add-in Visual Studio 2005 SP1 เพียงกู้คืนสิ่งที่ RTM Visual Studio 2005 นำออกโดยไม่ตั้งใจ
— จอห์นแซนเดอร์

1
คุณสามารถใช้เอาต์พุต WebApplication ในโครงการ WebDeployment คุณไม่สามารถใช้เว็บไซต์ออกในโครงการ WebDeployment หากคุณต้องการสร้างโครงการปรับใช้ให้ไปที่ WebApplication แต่สำหรับการพัฒนาเว็บไซต์จะสะดวกกว่า อย่างไรก็ตามการแปลงไม่ได้เป็นปัญหาเสมอไปดังนั้นเริ่มต้นด้วย WebApplication ทันที
— Stefan Steiger

8
@xarzu: เว็บไซต์ "โครงการ" ไม่มีไฟล์. csproj หรือ. vbproj มันไม่ใช่โครงการจริงๆ - มันเป็นแค่โฟลเดอร์ที่เต็มไปด้วยไฟล์
— จอห์นแซนเดอร์

171

เว็บไซต์คือสิ่งที่คุณปรับใช้กับเว็บเซิร์ฟเวอร์ ASP.NET เช่น IIS เพียงไฟล์และโฟลเดอร์มากมาย ไม่มีอะไรในเว็บไซต์ที่เชื่อมโยงคุณกับ Visual Studio (ไม่มีไฟล์โครงการ) การสร้างรหัสและการคอมไพล์ของหน้าเว็บ (เช่น. aspx, .ascx, .master) จะทำแบบไดนามิกเมื่อรันไทม์และการเปลี่ยนแปลงในไฟล์เหล่านี้ถูกตรวจพบโดยกรอบงานและรวบรวมใหม่โดยอัตโนมัติ คุณสามารถใส่รหัสที่คุณต้องการแชร์ระหว่างหน้าในโฟลเดอร์ App_Code พิเศษหรือคุณสามารถรวบรวมล่วงหน้าและวางแอสเซมบลีในโฟลเดอร์ Bin

Web Applicationเป็นโครงการ Visual Studio พิเศษ ความแตกต่างที่สำคัญกับเว็บไซต์คือเมื่อคุณสร้างโครงการไฟล์โค้ดทั้งหมดจะถูกคอมไพล์ในแอสเซมบลีเดียวซึ่งอยู่ในไดเรกทอรี bin คุณไม่ได้ปรับใช้ไฟล์รหัสกับเว็บเซิร์ฟเวอร์ แทนที่จะมีโฟลเดอร์พิเศษสำหรับไฟล์รหัสที่แชร์คุณสามารถวางไว้ที่ใดก็ได้เช่นเดียวกับที่คุณทำในไลบรารีคลาส เนื่องจากเว็บแอปพลิเคชันมีไฟล์ที่ไม่ได้ตั้งใจจะปรับใช้เช่นโครงการและไฟล์รหัสจึงมีคำสั่งเผยแพร่ใน Visual Studio เพื่อส่งเว็บไซต์ไปยังตำแหน่งที่ระบุ

App_Code vs Bin

การปรับใช้ไฟล์รหัสที่แชร์เป็นความคิดที่ไม่ดี แต่นั่นไม่ได้หมายความว่าคุณต้องเลือก Web Application คุณสามารถมีเว็บไซต์ที่อ้างอิงถึงโครงการห้องสมุดคลาสที่มีรหัสทั้งหมดสำหรับเว็บไซต์ เว็บแอปพลิเคชันเป็นวิธีที่สะดวกในการทำ

codebehind

หัวข้อนี้เป็นไฟล์เฉพาะสำหรับ. aspx และ .ascx หัวข้อนี้มีความเกี่ยวข้องลดน้อยลงในเฟรมเวิร์กแอปพลิเคชันใหม่เช่น ASP.NET MVC และ ASP.NET เว็บเพจที่ไม่ใช้ไฟล์ codebehind

โดยการรวบรวมไฟล์รหัสทั้งหมดไว้ในแอสเซมบลีเดียวรวมถึงไฟล์codebehindของเพจ. aspx และ .ascx ในเว็บแอปพลิเคชันคุณต้องสร้างใหม่สำหรับการเปลี่ยนแปลงเล็กน้อยทุกครั้งและคุณไม่สามารถทำการเปลี่ยนแปลงสดได้ สิ่งนี้อาจเป็นความเจ็บปวดอย่างแท้จริงในระหว่างการพัฒนาเนื่องจากคุณต้องสร้างขึ้นใหม่เพื่อดูการเปลี่ยนแปลงในขณะที่มีการตรวจพบการเปลี่ยนแปลงเว็บไซต์โดยรันไทม์และเพจ / การควบคุมจะถูกคอมไพล์ใหม่โดยอัตโนมัติ

การมีรันไทม์จัดการชุดประกอบ codebehind นั้นใช้งานได้น้อยลงเนื่องจากคุณไม่ต้องกังวลกับการให้หน้า / ควบคุมชื่อที่ไม่ซ้ำกันหรือจัดระเบียบให้เป็นชื่ออื่น

ฉันไม่ได้บอกว่าการปรับใช้ไฟล์รหัสเป็นความคิดที่ดีเสมอ (โดยเฉพาะในกรณีของไฟล์รหัสที่ใช้ร่วมกัน) แต่ไฟล์ codebehind ควรมีเฉพาะรหัสที่ทำงานเฉพาะ UI ตัวจัดการเหตุการณ์ wire-up ฯลฯ แอปพลิเคชันของคุณควรเป็น เลเยอร์เพื่อให้รหัสสำคัญสิ้นสุดในโฟลเดอร์ Bin เสมอ หากเป็นเช่นนั้นการปรับใช้ไฟล์โค๊ดหลังจะไม่ถือว่าเป็นอันตราย

ข้อ จำกัด อีกประการของ Web Applications คือคุณสามารถใช้ภาษาของโครงการได้เท่านั้น ในเว็บไซต์คุณสามารถมีบางหน้าใน C # บางหน้าเป็น VB และอื่น ๆ ไม่จำเป็นต้องรองรับ Visual Studio แบบพิเศษ นั่นคือความงามของความสามารถในการขยายตัวของผู้ให้บริการ

นอกจากนี้ในเว็บแอปพลิเคชันคุณจะไม่ได้รับการตรวจจับข้อผิดพลาดในหน้า / การควบคุมเนื่องจากคอมไพเลอร์รวบรวมเฉพาะคลาสของคุณเท่านั้นและไม่ใช่รหัสมาร์กอัป (ใน MVC คุณสามารถแก้ไขได้โดยใช้ตัวเลือก MvcBuildViews)

Visual Studio

เนื่องจากเว็บแอปพลิเคชันเป็นโครงการ Visual Studio คุณจะได้รับคุณสมบัติบางอย่างที่ไม่สามารถใช้ได้ในเว็บไซต์ ตัวอย่างเช่นคุณสามารถใช้ build events เพื่อทำงานที่หลากหลายเช่นลดขนาดและ / หรือรวมไฟล์ Javascript

ฟีเจอร์ที่ดีอีกอย่างที่แนะนำใน Visual Studio 2010 คือการแปลง Web.configการเปลี่ยนแปลงสิ่งนี้ยังไม่สามารถใช้ได้ในเว็บไซต์ ตอนนี้ทำงานร่วมกับเว็บไซต์ใน VS 2013

การสร้างแอปพลิเคชันเว็บเร็วกว่าการสร้างเว็บไซต์โดยเฉพาะสำหรับไซต์ขนาดใหญ่ นี่เป็นสาเหตุหลักเนื่องจากเว็บแอปพลิเคชันไม่ได้รวบรวมรหัสมาร์กอัป ใน MVC ถ้าคุณตั้งค่า MvcBuildViews เป็นจริงมันจะรวบรวมรหัสมาร์กอัปและคุณได้รับการตรวจจับข้อผิดพลาดซึ่งมีประโยชน์มาก ข้อเสียคือทุกครั้งที่คุณสร้างโซลูชันมันจะสร้างเว็บไซต์ที่สมบูรณ์ซึ่งอาจช้าและไม่มีประสิทธิภาพโดยเฉพาะถ้าคุณไม่ได้แก้ไขไซต์ l พบว่าตัวเองกำลังเปิดและปิด MvcBuildViews (ซึ่งต้องมีการยกเลิกการโหลดโครงการ) ในอีกทางหนึ่งกับเว็บไซต์ที่คุณสามารถเลือกได้ว่าคุณต้องการสร้างเว็บไซต์เป็นส่วนหนึ่งของการแก้ปัญหาหรือไม่ หากคุณเลือกที่จะไม่ทำสิ่งนั้นก็คือการสร้างโซลูชันนั้นรวดเร็วมากและคุณสามารถคลิกที่โหนดเว็บไซต์และเลือก Build หากคุณทำการเปลี่ยนแปลง

ในโครงการ MVC Web Application คุณมีคำสั่งและไดอะล็อกพิเศษสำหรับงานทั่วไปเช่น 'เพิ่มมุมมอง', 'ไปที่มุมมอง', 'เพิ่มตัวควบคุม' ฯลฯ ไม่สามารถใช้งานได้ในเว็บไซต์ MVC

ถ้าคุณใช้ IIS Express เป็นเซิร์ฟเวอร์การพัฒนาในเว็บไซต์คุณสามารถเพิ่มไดเรกทอรีเสมือน ตัวเลือกนี้ไม่สามารถใช้ได้ในเว็บแอปพลิเคชัน

NuGet Package Restore ไม่ทำงานบนเว็บไซต์คุณต้องติดตั้งแพ็กเกจด้วยตนเองที่ระบุไว้บน packages.configPackage Restore ตอนนี้ทำงานกับเว็บไซต์ที่เริ่มต้น NuGet 2.7


43
เนื่องจากโปรแกรมเมอร์เขียนแอปพลิเคชันแอปพลิเคชันจึงถูกสร้างขึ้น ทีมทดสอบจะทดสอบแอปพลิเคชันบนระบบทดสอบ จากนั้นลูกค้าจะติดตั้งแอปพลิเคชัน นั่นคือสิ่งที่คุณคิดว่าคุณต้องการคือใครก็ตามที่เปลี่ยนแปลงชีวิต!
— Ian Ringrose

12
สำหรับฉันการมีตัวเลือกที่ดีที่สุดคือในเว็บไซต์ที่คุณสามารถสืบทอดจากคลาสพื้นฐานที่รวบรวมไว้ล่วงหน้าหากคุณต้องการ มีหลายภาษา / กรอบงาน (เช่น PHP) ที่ผู้คนคุ้นเคยกับแนวคิดของการปรับใช้ซอร์สโค้ด ไม่ได้หมายความว่าแอปพลิเคชั่นเหล่านี้จะไม่ 'จริงจัง'
— Max Toro

6
"ที่จริงแล้วคุณไม่ได้จัดการ DLL เหล่านั้น [... ] คุณไม่จำเป็นต้องรู้ด้วยซ้ำว่ามันไม่มีปัญหา" - จนกว่าเฟรมเวิร์กจะสับสนอย่าล้างเวอร์ชันเก่าอย่างถูกต้องและเริ่มโยนข้อยกเว้นการคอมไพล์ด้วยชื่อที่ขัดแย้งกันทั่วไซต์ ... คุณสามารถเพิ่มการตรวจจับข้อผิดพลาดของมาร์กอัพผ่านการใช้โครงการ WebDeployment ฉันยังไม่แน่ใจในจุดสุดท้ายของคุณ "กับเว็บไซต์ที่คุณสามารถใช้ IIS เป็นเซิร์ฟเวอร์" คุณสามารถทำสิ่งนี้ได้ด้วย Web Application เช่นกัน - และฉันมีโครงการเช่นนี้ที่โครงการเป็นส่วนหนึ่งของเว็บแอปพลิเคชันขนาดใหญ่
— Zhaph - Ben Duguid

3
การปรับใช้เว็บไซต์ไม่จำเป็นต้องเป็นเซิร์ฟเวอร์จริงเสมอไป การพัฒนาซ้ำในโลกที่สมบูรณ์แบบควรได้รับการทดสอบบนกระจกแห่งสภาพแวดล้อม ด้วยความที่ Web Apps ไม่สามารถทำการเปลี่ยนแปลงรหัสอย่างรวดเร็วไปยังเว็บไซต์ที่ทำงานบนเซิร์ฟเวอร์ IIS การพัฒนา (เช่นไม่ได้ใช้งานโดยใช้อินสแตนซ์ VS ในเครื่อง) ทำให้เป็นเรื่องใหญ่ในการทดสอบโซลูชันขนาดเล็กอย่างรวดเร็ว สิ่งนี้เกิดขึ้นตลอดเวลาในระบบที่คุณไม่สามารถจำลองสภาพเดียวกันบนเครื่องของคุณ
— NikoRoberts

4
"นี่อาจเป็นความเจ็บปวดที่แท้จริงในระหว่างการพัฒนาเนื่องจากคุณต้องสร้างขึ้นใหม่เพื่อดูการเปลี่ยนแปลง" ... จำไว้ว่ามันจะต้องเป็นโครงการขนาดใหญ่หรือคอมพิวเตอร์เก่าจริงๆเพื่อให้มันเจ็บปวดที่ต้องทำ สร้างใหม่วันนี้
— Darren

75

Web Site = ใช้เมื่อเว็บไซต์ถูกสร้างขึ้นโดยนักออกแบบกราฟิกและโปรแกรมเมอร์แก้ไขเพียงหนึ่งหรือสองหน้าเท่านั้น

Web Application = ใช้เมื่อแอปพลิเคชั่นถูกสร้างขึ้นโดยโปรแกรมเมอร์และผู้ออกแบบกราฟิกแก้ไขเพียงหนึ่งเพจหรือสองภาพ / ภาพเท่านั้น

เว็บไซต์สามารถทำงานได้โดยใช้เครื่องมือ HTML ใด ๆ โดยไม่ต้องมีสตูดิโอพัฒนาเนื่องจากไฟล์โครงการไม่จำเป็นต้องได้รับการอัปเดต ฯลฯ เว็บแอปพลิเคชันจะดีที่สุดเมื่อทีมส่วนใหญ่ใช้สตูดิโอพัฒนาและมีเนื้อหารหัสสูง

(พบข้อผิดพลาดการเข้ารหัสบางอย่างในเว็บแอปพลิเคชันในเวลารวบรวมที่ไม่พบในเว็บไซต์จนกว่าจะถึงเวลาประมวลผล)

คำเตือน: ฉันเขียนคำตอบนี้เมื่อหลายปีก่อนและไม่ได้ใช้ Asp.net ตั้งแต่ ฉันคาดหวังว่าสิ่งต่าง ๆ จะดำเนินต่อไป


40

ถ้าคุณไม่มีความต้องการเฉพาะสำหรับโครงการที่รวบรวมแบบไดนามิกอย่าใช้โครงการเว็บไซต์ไม่ได้ใช้โครงการเว็บไซต์

ทำไม? เพราะโครงการเว็บไซต์จะช่วยผลักดันคุณขึ้นมาเมื่อพยายามเปลี่ยนหรือเข้าใจโครงการของคุณ ฟีเจอร์ค้นหาการพิมพ์แบบสแตติก (เช่นค้นหาการใช้งานการปรับโครงสร้าง) ใน Visual Studio จะใช้เวลาตลอดไปในโครงการขนาดที่เหมาะสม สำหรับข้อมูลเพิ่มเติมดูคำถาม Stack Overflow ที่ช้า“ ค้นหาการอ้างอิงทั้งหมด” ใน Visual StudioStudio

ฉันไม่สามารถเห็นได้ว่าทำไมพวกเขาทิ้งเว็บแอปพลิเคชันลงใน Visual Studio 2005 สำหรับการลดความเจ็บปวดการมีสติและการทำงานของเว็บไซต์พลอยสีแดง


30

มีบทความใน MSDN ซึ่งอธิบายความแตกต่าง:

การเปรียบเทียบโครงการเว็บไซต์และโครงการแอปพลิเคชันเว็บ

BTW: มีคำถามที่คล้ายกันเกี่ยวกับหัวข้อนั้นเช่น:


ฉันเดาคำตอบเกี่ยวกับฉันควรใช้ codefile หรือ codebehind ในมาร์กอัปหายไปพร้อมกับคำตอบที่ถูกลบโดย SO ...
— frenchone

ดังนั้นสำหรับผู้ที่สงสัยว่า: เว็บแอปพลิเคชัน = ทางออกที่มีโครงสร้างที่ดี = codebehind ในมาร์กอัป VS เว็บไซต์ = พวงของไฟล์ =
— โค้ด

22

นี่อาจฟังดูชัดเจน แต่ฉันคิดว่ามันเป็นสิ่งที่เข้าใจผิดเพราะ Visual Studio 2005 มาพร้อมกับเว็บไซต์เท่านั้น หากโครงการของคุณเกี่ยวข้องกับเว็บไซต์ที่มีข้อ จำกัด และไม่มีการแยกทางตรรกะหรือทางกายภาพจำนวนมากเว็บไซต์ก็ใช้ได้ อย่างไรก็ตามหากเป็นเว็บแอปพลิเคชันที่มีโมดูลที่แตกต่างกันซึ่งผู้ใช้จำนวนมากเพิ่มและอัปเดตข้อมูลคุณจะดีกว่าด้วยเว็บแอปพลิเคชัน

มือโปรที่ใหญ่ที่สุดของรูปแบบเว็บไซต์คือสิ่งที่อยู่ในapp_codeส่วนนั้นถูกรวบรวมแบบไดนามิก คุณสามารถทำการอัปเดตไฟล์ C # ได้โดยไม่ต้องติดตั้งใหม่ อย่างไรก็ตามสิ่งนี้มาพร้อมกับการเสียสละอย่างยิ่งใหญ่ หลายสิ่งหลายอย่างเกิดขึ้นภายใต้หน้ากากที่ควบคุมได้ยาก เนมสเปซนั้นควบคุมได้ยากและการใช้ DLL เฉพาะจะออกไปนอกหน้าต่างโดยค่าเริ่มต้นสำหรับทุกสิ่งภายใต้app_codeเนื่องจากทุกอย่างถูกรวบรวมแบบไดนามิก

โมเดลเว็บแอปพลิเคชันไม่มีการรวบรวมแบบไดนามิก แต่คุณสามารถควบคุมสิ่งต่าง ๆ ที่ฉันได้กล่าวถึง

หากคุณกำลังพัฒนาระดับ n ฉันขอแนะนำรูปแบบเว็บแอปพลิเคชัน หากคุณกำลังทำเว็บไซต์ที่มีข้อ จำกัด หรือมีการนำไปใช้อย่างรวดเร็วและสกปรกรูปแบบเว็บไซต์อาจมีข้อดี

การวิเคราะห์รายละเอียดเพิ่มเติมสามารถพบได้ใน:


3
> รุ่นที่ใหญ่ที่สุดของรุ่นเว็บไซต์คือสิ่งที่อยู่ในส่วน app_code นั้นถูกรวบรวมแบบไดนามิก นี่เป็นข้อเสียที่ยิ่งใหญ่เช่นกัน เว็บไซต์ของฉันโฮสต์กับ webhost4life ที่ราคาถูก แต่มีคุณสมบัติหลากหลาย ข้อเสียคือกระบวนการรีไซเคิลของผู้ปฏิบัติงานบ่อยมาก (15 นาที) ซึ่งหมายความว่าผู้ใช้รายถัดไปมีการเลื่อนหน้าแรกออกช้ามากเนื่องจากแอปพลิเคชันได้รับการรวบรวมใหม่
— Rob Nicholson

19

จากการสอบชุดฝึกด้วยตนเองของ MCTS 70-515 หนังสือ:

ด้วยโปรแกรมประยุกต์บนเว็บ (โครงการ)

  1. คุณสามารถสร้างแอปพลิเคชัน MVC
  2. Visual Studio เก็บรายการของไฟล์ในไฟล์โครงการ (.csproj หรือ. vbproj) แทนที่จะอาศัยโครงสร้างโฟลเดอร์
  3. คุณไม่สามารถผสม Visual Basic และ C #
  4. คุณไม่สามารถแก้ไขรหัสโดยไม่หยุดเซสชันการดีบัก
  5. คุณสามารถสร้างการพึ่งพาระหว่างหลายโครงการเว็บ
  6. คุณต้องรวบรวมแอปพลิเคชันก่อนการปรับใช้ซึ่งจะป้องกันคุณจากการทดสอบหน้าหากหน้าอื่นจะไม่รวบรวม
  7. คุณไม่จำเป็นต้องจัดเก็บซอร์สโค้ดบนเซิร์ฟเวอร์
  8. คุณสามารถควบคุมชื่อและเวอร์ชั่นของชุดประกอบ
  9. คุณไม่สามารถแก้ไขแต่ละไฟล์หลังจากการปรับใช้โดยไม่ต้องรวบรวมใหม่

# 4 ผิด สามารถเปิดใช้งาน "แก้ไขและดำเนินการต่อ" โดยมีข้อ จำกัด บางอย่าง อาจเป็นเรื่องจริงในปี 2011 # 9 ควรพูดว่า "คุณไม่สามารถแก้ไขไฟล์ซอร์สโค้ดได้โดยไม่ต้องคอมไพล์ใหม่" คุณสามารถแก้ไข. aspx, .js, .css ฯลฯ โดยไม่ต้องคอมไพล์ใหม่
— John Saunders

# 4 มีอีกมุมหนึ่ง หากคุณเปิดเว็บไซต์โดยใช้ไฟล์> เปิด> เว็บไซต์และนำทางไปยังโฟลเดอร์ระบบไฟล์สำหรับเว็บไซต์แทนที่จะเปิดเว็บไซต์ผ่านการเลือกโซลูชันจากหน้าต่างเริ่มต้นคุณสามารถแก้ไขโมดูลคลาสและ codebehind (อย่างน้อยใน vb.net ) โดยไม่หยุดการดีบัก คุณจะไม่เห็นการเปลี่ยนแปลงจนกว่าคุณจะสร้างใหม่อย่างไรก็ตามมักจะมีประโยชน์ที่จะสามารถดูพฤติกรรมของหน้าเว็บในขณะที่คุณกำลังแก้ไขรหัส ข้อเสียคือคุณสูญเสียทุกอย่างที่เป็นทางออก: จุดพักเปิดไฟล์คั่นหน้า ฯลฯ และคุณต้องลบไฟล์ sln / sou บางครั้ง
— wayfarer

16

มันขึ้นอยู่กับสิ่งที่คุณกำลังพัฒนา

เว็บไซต์ที่มุ่งเน้นเนื้อหาจะมีการเปลี่ยนแปลงเนื้อหาบ่อยครั้งและเว็บไซต์นั้นดีกว่า

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


16

Compilation ประการแรกมีความแตกต่างในการรวบรวมเป็น เว็บไซต์ไม่ได้รับการรวบรวมล่วงหน้าบนเซิร์ฟเวอร์ แต่จะถูกรวบรวมไว้ในไฟล์ อาจเป็นประโยชน์เพราะเมื่อคุณต้องการเปลี่ยนแปลงบางสิ่งในเว็บไซต์ของคุณคุณสามารถดาวน์โหลดไฟล์เฉพาะจากเซิร์ฟเวอร์เปลี่ยนและอัปโหลดไฟล์นี้กลับไปที่เซิร์ฟเวอร์และทุกอย่างจะทำงานได้ดี ในเว็บแอปพลิเคชันคุณไม่สามารถทำได้เพราะทุกอย่างถูกรวบรวมไว้ล่วงหน้าและคุณจะจบลงด้วย dll เดียวเท่านั้น เมื่อคุณเปลี่ยนบางสิ่งในไฟล์เดียวในโครงการของคุณคุณจะต้องรวบรวมทุกสิ่งอีกครั้ง ดังนั้นหากคุณต้องการที่จะมีความเป็นไปได้ที่จะเปลี่ยนไฟล์บางไฟล์บนเว็บไซต์เซิร์ฟเวอร์ทางออกที่ดีกว่าสำหรับคุณคือ นอกจากนี้ยังช่วยให้นักพัฒนาหลายคนทำงานบนเว็บไซต์เดียว อีกด้านหนึ่งหากคุณไม่ต้องการให้โค้ดของคุณพร้อมใช้งานบนเซิร์ฟเวอร์คุณควรเลือก Web Application

Project structure นอกจากนี้ยังมีความแตกต่างในโครงสร้างของโครงการ ใน Web Application คุณมีไฟล์โครงการเหมือนกับที่คุณมีในแอปพลิเคชันปกติ ในเว็บไซต์ไม่มีไฟล์โครงการแบบดั้งเดิมสิ่งที่คุณมีคือไฟล์โซลูชัน การอ้างอิงและการตั้งค่าทั้งหมดจะถูกเก็บไว้ในไฟล์ web.config @Page directive มีแอตทริบิวต์ที่แตกต่างกันในคำสั่ง @Page สำหรับไฟล์ที่มีคลาสที่เกี่ยวข้องกับหน้านี้ ใน Web Application เป็นมาตรฐาน "CodeBehind" ในเว็บไซต์ที่คุณใช้ "CodeFile" คุณสามารถเห็นสิ่งนี้ในตัวอย่างด้านล่าง:

เว็บแอปพลิเคชัน:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"  
Inherits="WebApplication._Default" %>  

เว็บไซต์:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

เนมสเปซ - ในตัวอย่างด้านบนคุณสามารถเห็นความแตกต่างอื่น ๆ ได้ - วิธีสร้างเนมสเปซ ใน Web Application namespace เป็นเพียงชื่อของโครงการ ในเว็บไซต์จะมีเนมสเปซเริ่มต้นสำหรับเพจที่รวบรวมแบบไดนามิก

แก้ไขและดำเนินการต่อ - ในเว็บแอปพลิเคชันตัวเลือกการแก้ไขและดำเนินการต่อมีให้ใช้งาน (ในการเปิดใช้งานคุณต้องไปที่เมนูเครื่องมือคลิกตัวเลือกจากนั้นค้นหาการแก้ไขและดำเนินการต่อในการดีบัก) คุณลักษณะนี้ไม่ทำงานในเว็บไซต์ ASP.NET MVC หากคุณต้องการพัฒนาเว็บแอปพลิเคชันให้ใช้

ASP.NET MVC (Model View Controller) ตัวเลือกที่ดีที่สุดและดีที่สุดคือ Web Application แม้ว่าจะเป็นไปได้ที่จะใช้ MVC ในเว็บไซต์ แต่ก็ไม่แนะนำ

สรุป - ความแตกต่างที่สำคัญที่สุดระหว่าง ASP.NET Web Application และเว็บไซต์คือการรวบรวม ดังนั้นหากคุณทำงานในโครงการขนาดใหญ่ที่มีคนไม่กี่คนที่สามารถปรับเปลี่ยนได้จะเป็นการดีกว่าที่จะใช้เว็บไซต์ แต่ถ้าคุณทำโครงการขนาดเล็กคุณสามารถใช้ Web Application ได้เช่นกัน


ในโครงการขนาดใหญ่ที่มีการเปลี่ยนแปลงมากกว่าหนึ่งคนคุณใช้การควบคุมแหล่งที่มาดังนั้นนี่จึงไม่ใช่เหตุผลที่จะใช้เว็บไซต์ "โครงการ"
— John Saunders

+1 สำหรับความแตกต่างใน codebehind (webapp) เทียบกับ codefile (เว็บไซต์) ในหน้าคำสั่ง นี่คือความแม่นยำซึ่งขาดในคำตอบที่เลือก
— frenchone

11

ใช่เว็บแอพพลิเคชันดีกว่าเว็บไซต์เพราะเว็บแอปพลิเคชันให้อิสระแก่เรา:

  1. มีหลายโครงการภายใต้หนึ่งร่มและสร้างการพึ่งพาโครงการระหว่าง เช่นสำหรับพีซีเราสามารถติดตามเว็บแอพพลิเคชั่นได้ -

    • เว็บท่า
    • ตัวควบคุมการแจ้งเตือน (สำหรับส่งอีเมล)
    • ชั้นธุรกิจ
    • ชั้นการเข้าถึงข้อมูล
    • ตัวจัดการข้อยกเว้น
    • ยูทิลิตี้เซิร์ฟเวอร์
    • บริการ WCF (ทั่วไปสำหรับทุกแพลตฟอร์ม)
    • รายการสินค้า
  2. เมื่อต้องการเรียกใช้การทดสอบหน่วยในรหัสที่อยู่ในไฟล์คลาสที่เกี่ยวข้องกับเพจ ASP.NET

  3. เพื่ออ้างถึงคลาสที่เชื่อมโยงกับเพจและการควบคุมผู้ใช้จากคลาสแบบสแตนด์อโลน
  4. เพื่อสร้างแอสเซมบลีเดียวสำหรับทั้งไซต์
  5. ควบคุมชื่อแอสเซมบลีและหมายเลขรุ่นที่สร้างขึ้นสำหรับไซต์
  6. เพื่อหลีกเลี่ยงการวางซอร์สโค้ดบนเซิร์ฟเวอร์ที่ใช้งานจริง (คุณสามารถหลีกเลี่ยงการปรับใช้ซอร์สโค้ดไปยังเซิร์ฟเวอร์ IIS ในบางสถานการณ์เช่นสภาพแวดล้อมการโฮสต์ที่ใช้ร่วมกันคุณอาจกังวลเกี่ยวกับการเข้าถึงซอร์สโค้ดที่ไม่ได้รับอนุญาตบนเซิร์ฟเวอร์ IIS (สำหรับโครงการเว็บไซต์คุณสามารถหลีกเลี่ยงความเสี่ยงนี้ได้ การคอมไพล์ล่วงหน้าบนคอมพิวเตอร์การพัฒนาและการปรับใช้แอสเซมบลีที่สร้างขึ้นแทนที่จะเป็นซอร์สโค้ดอย่างไรก็ตามในกรณีนี้คุณสูญเสียประโยชน์บางประการของการอัปเดตไซต์อย่างง่าย)
  7. ปัญหาประสิทธิภาพการทำงานกับเว็บไซต์ (การร้องขอครั้งแรกไปยังเว็บไซต์อาจต้องมีการรวบรวมเว็บไซต์ซึ่งอาจส่งผลให้เกิดความล่าช้าและหากเว็บไซต์ทำงานบนเซิร์ฟเวอร์ IIS ที่สั้นในหน่วยความจำรวมทั้งเว็บไซต์ทั้งหมดใน แอสเซมบลีเดียวอาจใช้หน่วยความจำมากกว่าที่จำเป็นสำหรับแอสเซมบลีหลายตัว)

11

หนึ่งในความแตกต่างที่สำคัญคือเว็บไซต์รวบรวมแบบไดนามิกและสร้างชุดประกอบแบบทันที เว็บแอพพลิเคชั่นรวบรวมเป็นชุดใหญ่

ความแตกต่างระหว่างทั้งสองถูกนำไปใช้ใน Visual Studio 2008


4
"ความแตกต่างระหว่างทั้งสองได้ทำไปแล้วใน vs2008" - ไม่แน่ใจว่าคุณหมายถึงอะไร - พวกเขายังคงประเภทโครงการที่แตกต่างใน VS2008 ทำงานแตกต่างกันและถูกสร้างขึ้นผ่านตัวเลือกเมนูที่แตกต่างกัน - อย่างน้อยพวกเขาทั้งสอง ใน VS2008
— Zhaph - Ben Duguid

9

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

ข้อดีของแอพคือไม่มีการรวบรวมซ้ำดังนั้นเวลาเริ่มต้นครั้งแรกจะเร็วขึ้น


นี่เป็นความจริงบางส่วนคุณสามารถรวบรวมหน้าเว็บล่วงหน้าได้ในเว็บไซต์หากคุณต้องการ
— Amr H. Abd Elmajeed

8

ฉันขอแนะนำให้คุณดูวิดีโอโครงการเว็บแอปพลิเคชันและโครงการปรับใช้เว็บบนเว็บไซต์ ASP.NET ซึ่งอธิบายความแตกต่างในรายละเอียดที่ยอดเยี่ยมมันเป็นประโยชน์กับฉันมาก

ไม่สับสนกับชื่อส่วนใหญ่ของวิดีโออธิบายความแตกต่างระหว่างโครงการเว็บไซต์และโครงการแอปพลิเคชันเว็บและสาเหตุที่ Microsoft เปิดตัวโครงการเว็บแอปพลิเคชันใหม่ใน Visual Studio 2005 (อย่างที่คุณอาจรู้อยู่แล้ว) เริ่มแรกจัดส่งด้วยโครงการเว็บไซต์เท่านั้นจากนั้นจึงเพิ่มโครงการเว็บแอปพลิเคชันใน SP1) วิดีโอยอดเยี่ยมที่ฉันขอแนะนำสำหรับทุกคนที่ต้องการทราบความแตกต่าง


วิดีโอได้ที่: asp.net/web-forms/videos/vs-2005/…
— Bob Reynolds

7

"เว็บไซต์" มีรหัสในไดเรกทอรี App_Code พิเศษและรวบรวมเป็น DLLs (ชุดประกอบ) หลายชุด ณ รันไทม์ "เว็บแอปพลิเคชัน" ถูกคอมไพล์ไว้ใน DLL เดียว


5

เว็บไซต์และโครงการ >> เว็บไซต์เป็นสองวิธีในการสร้างแอปพลิเคชัน ASP.NET โดยใช้ Visual Studio หนึ่งคือไร้โครงการและอื่น ๆ คือสภาพแวดล้อมของโครงการ ความแตกต่างคือ

  1. ไฟล์โซลูชันจะถูกเก็บไว้ในไดเรกทอรีเดียวกับไดเรกทอรีรากในสภาพแวดล้อมของโครงการ
  2. จำเป็นต้องลบไฟล์โซลูชันและโครงการก่อนที่จะปรับใช้ในสภาพแวดล้อมของโครงการ
  3. ไดเรกทอรีรากที่สมบูรณ์ถูกปรับใช้ในสภาพแวดล้อมที่ไม่มีโครงการ

ไม่มีความแตกต่างพื้นฐานมากในการใช้วิธีการอย่างใดอย่างหนึ่ง แต่ถ้าคุณกำลังสร้างเว็บไซต์ที่ใช้เวลานานให้เลือกสภาพแวดล้อมของโครงการ


1
ไฟล์โซลูชันไม่จำเป็นต้องอยู่ในโฟลเดอร์เดียวกัน นอกจากนี้กลไกการเผยแพร่มาตรฐานจะลบสิ่งประดิษฐ์ใด ๆ ที่ไม่ควรอยู่ในไซต์เป้าหมายตัวอย่างเช่นไฟล์ codebehind จะไม่ถูกปรับใช้
— จอห์นแซนเดอร์

5

รูปแบบโครงการเว็บแอปพลิเคชัน

  • ให้ความหมายของโครงการเว็บเดียวกับ Visual Studio .NET เว็บโครงการ มีไฟล์โครงการ (โครงสร้างตามไฟล์โครงการ) สร้างรูปแบบ - รหัสทั้งหมดในโครงการจะรวบรวมเป็นชุดเดียว รองรับ IIS และเซิร์ฟเวอร์การพัฒนา ASP.NET ในตัว รองรับฟีเจอร์ทั้งหมดของ Visual Studio 2005 (การเปลี่ยนโครงสร้าง, generics, ฯลฯ ) และ ASP.NET (เพจต้นแบบ, การเป็นสมาชิกและการเข้าสู่ระบบ, การสำรวจไซต์, ธีม ฯลฯ ) การใช้ส่วนขยายเซิร์ฟเวอร์ของ FrontPage (FPSE) จะไม่เป็นข้อกำหนดอีกต่อไป

รูปแบบโครงการเว็บไซต์

  • ไม่มีไฟล์โครงการ (ขึ้นอยู่กับระบบไฟล์)
  • รูปแบบการรวบรวมใหม่
  • การรวบรวมแบบไดนามิกและการทำงานบนหน้าเว็บโดยไม่ต้องสร้างเว็บไซต์ทั้งหมดในการดูหน้าเว็บแต่ละครั้ง
  • รองรับ IIS และเซิร์ฟเวอร์การพัฒนา ASP.NET ในตัว
  • แต่ละหน้ามีการชุมนุมของตัวเอง
  • รูปแบบรหัสที่ต่างกัน

5

มันขึ้นอยู่กับความต้องการของลูกค้าของคุณเสมอ ASP.NET มีคุณสมบัติที่ยืดหยุ่นที่ผู้ใช้ต้องการเพื่อความปลอดภัยและการบำรุงรักษาแอปพลิเคชันของคุณง่าย

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

แต่ข้อดีและข้อเสียของเทคโนโลยี ASP.NET ทั้งสองนี้มาในสิ่งที่ดี


4

เว็บไซต์ - จะไม่มีการสร้างไฟล์โซลูชัน ถ้าเราต้องการสร้างเว็บไซต์ไม่จำเป็นต้องใช้ Visual Studio

Web Application - ไฟล์โซลูชันจะถูกสร้างขึ้น ถ้าเราต้องการสร้างเว็บแอปพลิเคชั่นควรมี visual studio มันจะสร้าง.dllไฟล์เดียวในโฟลเดอร์ bin


2
-1 คุณมีไฟล์โซลูชันถ้าคุณสร้างโครงการเว็บไซต์ผ่าน visual studio คุณไม่มีไฟล์โครงการ
— Darren

+1 แน่นอนคุณสามารถสร้างไฟล์โซลูชันได้ แต่ไฟล์นี้ส่วนใหญ่จะว่างเปล่าดังนั้นมันจึงเป็นเพียงความรำคาญ (VS จะถามว่าจะบันทึกไฟล์ที่ทางออก) และไม่ใช่สิ่งที่มีประโยชน์
— Frenchone

3

ในโครงการแอพลิเคชันเว็บ Visual Studio ต้องการไฟล์. designer เพิ่มเติมสำหรับหน้าและตัวควบคุมผู้ใช้ โครงการเว็บไซต์ไม่ต้องการค่าใช้จ่ายนี้ มาร์กอัปนั้นถูกตีความว่าเป็นการออกแบบ


3

เว็บไซต์:มันสร้างโฟลเดอร์ app_code โดยอัตโนมัติและถ้าคุณเผยแพร่บนเซิร์ฟเวอร์และหลังจากนั้นถ้าคุณทำการเปลี่ยนแปลงบางอย่างในไฟล์หรือหน้าใด ๆ โดยเฉพาะอย่างยิ่งกว่าที่คุณไม่ต้องรวบรวมไฟล์ทั้งหมด

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


"การรวบรวมโครงการทั้งหมด" ไม่ได้หมายถึงการรวบรวมทุกไฟล์ในโครงการ ไฟล์ซอร์สโค้ดที่ไม่มีการเปลี่ยนแปลงจะไม่ถูกคอมไพล์ใหม่
— John Saunders

3

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


3

เว็บแอปพลิเคชั่นแน่นอนไฟล์ DLL ไฟล์เดียวและดูแลรักษาง่าย แต่เว็บไซต์มีความยืดหยุ่นมากกว่า คุณสามารถแก้ไขไฟล์ aspx ได้ทุกที่


คุณสามารถแก้ไขไฟล์ aspx ในโครงการเว็บแอปพลิเคชันได้เช่นกัน
— John Saunders

3

เว็บแอปพลิเคชันต้องการหน่วยความจำเพิ่มขึ้นอย่างน่าจะเป็นเพราะคุณไม่มีทางเลือกนอกจากรวบรวมเป็นชุดเดียว ฉันเพิ่งแปลงไซต์ดั้งเดิมขนาดใหญ่เป็นเว็บแอปพลิเคชันและมีปัญหาเกี่ยวกับหน่วยความจำไม่เพียงพอทั้งในเวลารวบรวมด้วยข้อความแสดงข้อผิดพลาดดังนี้:

Unexpected error writing metadata to file '' -- 
Not enough storage is available to complete this operation. 

ข้อผิดพลาดและที่รันไทม์พร้อมข้อความแสดงข้อผิดพลาดดังต่อไปนี้:

Exception information: 
    Exception type: HttpException 
    Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()

คำแนะนำของฉันสำหรับการแปลงไซต์ขนาดใหญ่บนฮาร์ดแวร์ดั้งเดิมที่ จำกัด หน่วยความจำคือเพื่อเลือกตัวเลือกที่จะเปลี่ยนกลับไปเป็นรูปแบบเว็บไซต์ แม้หลังจากปัญหาความสำเร็จครั้งแรกอาจคืบคลานขึ้นในภายหลัง


ไม่ปรากฏว่าเป็นข้อยกเว้นเวลารวบรวม
— John Saunders

1

ที่นี่ Web Supportive Application เป็นตัวอย่างของเว็บไซต์

ที่นี่ Web Supportive Application เป็นตัวอย่างของเว็บไซต์ ทั้งเว็บไซต์และแอปพลิเคชันบนเว็บสามารถเป็นแบบไดนามิก / แบบคงที่ขึ้นอยู่กับความต้องการนี่คือตัวอย่างเพื่อทำความเข้าใจการทำงานของเว็บไซต์และแอปพลิเคชันบนเว็บ


สิ่งนี้ไม่ได้ใช้ใน asp.net ความแตกต่างของเว็บไซต์ / เว็บแอปพลิเคชัน (ในคำศัพท์ asp.net) เป็นข้อมูลเพิ่มเติมเกี่ยวกับวิธีการจัดระเบียบไฟล์ (เป็นโซลูชันที่จัดระเบียบอย่างดีหรือเป็นไฟล์จำนวนมาก) และรวบรวม ("JIT" เทียบกับแบบคงที่) ในทั้งสองกรณี "โปรแกรม" ส่วนใหญ่เป็นฝั่งเซิร์ฟเวอร์
— frenchone

0

เพื่อสรุปคำตอบบางข้อด้านบน:

ความยืดหยุ่นคุณสามารถเปลี่ยนแปลงหน้าเว็บสดได้หรือไม่

เว็บไซต์ : เป็นไปได้ Pro: ผลประโยชน์ระยะสั้น คอนดิชั่น: ความเสี่ยงระยะยาวของความโกลาหลของโครงการ

เว็บแอป : ไม่สามารถทำได้ แก้ไขหน้าจัดเก็บการเปลี่ยนแปลงในการควบคุมแหล่งที่มาจากนั้นสร้างและปรับใช้ไซต์ทั้งหมด Pro: รักษาโครงการที่มีคุณภาพ

ประเด็นการพัฒนา

เว็บไซต์ : โครงสร้างโครงการอย่างง่ายโดยไม่มีไฟล์. csproj หน้า. aspx สองหน้าอาจมีชื่อคลาสเดียวกันโดยไม่มีข้อขัดแย้ง ชื่อไดเรกทอรีโครงการแบบสุ่มที่นำไปสู่การสร้างข้อผิดพลาดเช่นทำไม. net framework ขัดแย้งกับไฟล์ที่สร้างขึ้นเองและทำไม. net framework ขัดแย้งกับไฟล์ที่สร้างขึ้นเองความขัดแย้งกรอบกับไฟล์ที่สร้างของตัวเอง Pro: เรียบง่าย (ง่าย ๆ ) คอนดิชั่นเอาแน่เอานอนไม่ได้

Web App : โครงสร้างโครงการคล้ายกับโครงการ WebForms พร้อมไฟล์. csproj ชื่อคลาสของเพจ asp ต้องไม่ซ้ำกัน Pro: เรียบง่าย (สมาร์ท) คอนดิชั่น: ไม่มีเพราะเว็บแอปยังคงเรียบง่าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.