คำถามติดแท็ก asp.net-mvc-web-api

3
เราควรเรียก Web API จากแอปพลิเคชัน MVC ในโซลูชันเดียวกันหรือไม่
ฉันกำลังทำงานในโครงการใน MVC ที่มีแอปพลิเคชันมือถือสิ่งหนึ่งที่ชัดเจนว่าเราต้องใช้ Web API เพื่อให้สามารถใช้ในแอปพลิเคชันมือถือได้ หลังจากสร้าง API เมื่อเราเริ่มพัฒนาเว็บไซต์เราสับสนและมีการอภิปรายว่าจะใช้ API หรือเข้าถึงวัตถุธุรกิจโดยตรง และเราก็จบลงหลังจากมีความคิดเห็นจากนักพัฒนาที่มีประสบการณ์มากขึ้นในการใช้ Web API แทนการใช้วัตถุธุรกิจโดยตรง ฉันมีความสับสนเกี่ยวกับโครงสร้างโซลูชันนี้ 1) เหตุใดเราจึงควรใช้ Web API และทำการร้องขอ HTTP (ซึ่งใช้เวลานาน) ในการรับหรือวางข้อมูลแทนที่จะเป็นออบเจ็กต์ธุรกิจโดยตรงซึ่งอยู่ในโซลูชันเดียวกัน 2) หลังจากมีข้อโต้แย้งพวกเขาบอกว่าถ้าลูกค้าต้องการโฮสต์ API และเว็บบนคลาวด์เซิร์ฟเวอร์ที่แตกต่างกันและใช้การปรับขนาดเฉพาะบน API หรืออาจต้องการให้มี URL ที่แตกต่างกันสำหรับการเข้าถึง API และเว็บ (ซึ่งเป็นตรรกะ) ดังนั้นในกรณีนั้นเราควรเรียก Web API จากแอปพลิเคชั่น MVC ในโซลูชันเดียวกันหรือไม่ 3) ถ้าเรากำลังโฮสต์ API และเว็บในการโฮสต์ที่แตกต่างกันนั่นหมายความว่าเว็บของเราจะใช้ WebClient และมีการโทร HTTP ในแต่ละการนำทาง ถูกต้องหรือไม่ …

3
วิธีสนับสนุน API รุ่นต่างๆ
ฉันกำลังเขียน API ส่วนที่เหลือและสงสัยว่าจะจัดการกับเวอร์ชันต่าง ๆ ได้ดีที่สุดอย่างไร จากนี้ฉันไม่ได้หมายถึงวิธีการกำหนด URI เป็น V2 หรือ V3 แต่วิธีการจัดโครงสร้างรหัสที่กำหนดว่าจะต้อง: รองรับหลายรุ่นในเวลาเดียวกันเช่น URIs V1 & V2 และ V3 ต้องใช้งานพร้อมกัน ฉันจะออก V1 เมื่อพูดว่า V4 เข้ามาเพื่อ จำกัด จำนวนเงินที่สนับสนุนในแต่ละครั้ง หลีกเลี่ยงการทำซ้ำรหัสมากที่สุด ทำให้ง่ายต่อการเพิ่มการเปลี่ยนแปลงที่ไม่ทำลายกับเวอร์ชันโดยไม่ส่งผลกระทบกับเวอร์ชันอื่น ดูเหมือนว่ามีวิธีการบางอย่างที่สามารถทำได้: ใช้ Git เพื่อควบคุมเวอร์ชันโดยมีสาขาสำหรับเวอร์ชันต่าง ๆ (และเวอร์ชันเก่าเป็นหลักโดยที่ไม่มีงานพัฒนาใหม่เกิดขึ้น) นี่หมายความว่าจะไม่มีการทำสำเนารหัสเนื่องจากมีเพียงเวอร์ชันล่าสุดเท่านั้นที่อยู่ในรหัส แต่รุ่นก่อนหน้านี้จะต้องทำงานกับ DB เวอร์ชันใหม่จนกว่าจะถูกยกเลิก ทำซ้ำรหัสเพื่อให้แต่ละรุ่นได้รับการจัดการในแอปพลิเคชันเดียวกันและมีเส้นทางรหัสแยกกันโดยสิ้นเชิง แต่สิ่งนี้จะหมายถึงการทำซ้ำจำนวนมาก ใช้รหัสจำนวนมากซ้ำในเวอร์ชันต่าง ๆ แต่สิ่งนี้จะทำให้ยากต่อการบำรุงรักษาเนื่องจากการเปลี่ยนหนึ่งเวอร์ชันมีแนวโน้มที่จะกระทบกับเวอร์ชันก่อนหน้ามากกว่า มีวิธีปฏิบัติที่ดีที่สุดในการจัดการกับปัญหานี้เนื่องจากตัวเลือกทั้งหมดดูเหมือนจะมีปัญหาของตัวเองหรือไม่?

2
การเลิกจ้างของ CQRS ไม่ใช่หรือ
ฉันยังจำวันเก่า ๆ ของที่เก็บ แต่ที่เก็บเคยเติบโตน่าเกลียดกับเวลา จากนั้น CQRS จะเป็นกระแสหลัก พวกเขาใจดีพวกเขาสูดอากาศบริสุทธิ์ แต่เมื่อเร็ว ๆ นี้ฉันได้ถามตัวเองซ้ำแล้วซ้ำอีกว่าทำไมฉันถึงไม่รักษาตรรกะในวิธีการของตัวควบคุม (โดยเฉพาะใน Web Api ที่การกระทำเป็นตัวจัดการคำสั่ง / แบบสอบถามในตัวเอง) ก่อนหน้านี้ฉันมีคำตอบที่ชัดเจนสำหรับเรื่องนี้: ฉันทำเพื่อทดสอบเนื่องจากเป็นการยากที่จะทดสอบ Controller ด้วยซิงเกิลที่ไม่สามารถทำการล็อคได้และโครงสร้างพื้นฐาน ASP.NET ที่น่าเกลียดโดยรวม แต่เวลามีการเปลี่ยนแปลงและคลาสโครงสร้างพื้นฐาน ASP.NET นั้นมีการทดสอบหน่วยที่เป็นมิตรมากขึ้นทุกวันนี้ (โดยเฉพาะใน ASP.NET Core) ต่อไปนี้เป็นการเรียก WebApi ทั่วไป: มีการเพิ่มคำสั่งและลูกค้า SignalR จะได้รับแจ้งเกี่ยวกับมัน public void AddClient(string clientName) { using (var dataContext = new DataContext()) { var client = …

5
Pure Front End JavaScript พร้อม Web API กับ MVC views ด้วย ajax
นี่เป็นการถกเถียงกันมากขึ้นว่าวันนี้ประชาชนคิดอย่างไรกับการแยกเว็บแอพพลิเคชั่น ฉันคุ้นเคยกับการสร้างแอปพลิเคชัน MVC ด้วยมุมมองและตัวควบคุมทั้งหมด ปกติแล้วฉันจะสร้างมุมมองแบบเต็มและส่งผ่านสิ่งนี้กลับไปยังเบราว์เซอร์บนคำขอเต็มหน้าเว้นแต่จะมีพื้นที่เฉพาะที่ฉันไม่ต้องการให้ปรากฏทันทีและจะใช้กิจกรรมโหลดหน้า DOM เพื่อเรียกเซิร์ฟเวอร์เพื่อโหลดพื้นที่อื่น ใช้ AJAX นอกจากนี้เมื่อมีการรีเฟรชหน้าบางส่วนฉันจะเรียกวิธีการดำเนินการ MVC ซึ่งจะคืนค่าส่วนย่อย HTML ซึ่งฉันสามารถใช้เพื่อเติมข้อมูลบางส่วนของหน้า นี่จะเป็นพื้นที่ที่ฉันไม่ต้องการชะลอการโหลดหน้าเริ่มต้นหรือพื้นที่ที่เหมาะกับการโทร AJAX ตัวอย่างหนึ่งจะใช้สำหรับเพจจิ้งตาราง หากคุณต้องการไปยังหน้าถัดไปฉันจะชอบถ้าการโทร AJAX ได้รับข้อมูลนั้นแทนที่จะใช้การรีเฟรชหน้าเต็ม แต่การโทร AJAX จะยังคงส่งคืน HTML ส่วน คำถามของฉันคือ ความคิดของฉันเกี่ยวกับโบราณนี้เพราะฉันมาจากพื้นหลัง. net มากกว่าพื้นหลังส่วนหน้าบริสุทธิ์หรือไม่ นักพัฒนาส่วนหน้าอัจฉริยะที่ฉันทำงานด้วยชอบทำอะไรมากหรือน้อยในมุมมอง MVC และอยากทำทุกอย่างที่ส่วนหน้า ขวาไปที่การโทรผ่านเว็บ API เพื่อใส่ข้อมูลในหน้า ดังนั้นแทนที่จะเรียกวิธีการดำเนินการ MVC ซึ่งส่งคืน HTML เขาต้องการที่จะส่งคืนวัตถุมาตรฐานและใช้จาวาสคริปต์เพื่อสร้างองค์ประกอบทั้งหมดของหน้า วิธีการพัฒนาส่วนหน้าหมายความว่าคุณจะได้รับประโยชน์ใด ๆ ที่ฉันได้รับจากการตรวจสอบรุ่นของ MVC รวมถึงการตรวจสอบด้านลูกค้า นอกจากนี้ยังหมายความว่าคุณจะได้รับประโยชน์ใด ๆ จากการสร้างมุมมองด้วยเทมเพลต html ที่พิมพ์อย่างมากและจะหายไป …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.