เว็บไซต์ 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.