2008-09-23 11 views
48

क्या मेरे एएसपी.नेट एमवीसी प्रोजेक्ट में एक वेब सेवा जोड़ना एमवीसी की पूरी अवधारणा को तोड़ देता है?एएसपी.नेट एमवीसी और वेब सेवाएं

वह वेब सेवा (डब्ल्यूसीएफ) मेरे एमवीसी प्रोजेक्ट से मॉडल परत पर बैक एंड के साथ संवाद करने के लिए निर्भर करती है (इसलिए मुझे ऐसा लगता है कि इसे एमवीसी समाधान का हिस्सा बनने की जरूरत है)।

क्या मुझे इसे नियंत्रक या मॉडल परत में जोड़ना चाहिए?

उत्तर

27

ऐसा लगता है कि आपको अपने मॉडल को अपनी असेंबली में विभाजित करना चाहिए और इसे अपने एमवीसी-एप्लिकेशन और डब्ल्यूसीएफ-एप्लिकेशन से संदर्भित करना चाहिए।

  • YourApp.Data - साझा मॉडल और डेटा का उपयोग हो सकता है
  • YourApp.Web - यदि आप अपने वेब ऐप्लिकेशन में अधिक साझा करना चाहते हैं
  • YourApp.Web.Mvc
  • YourApp.Web .WebService

यदि आप वेब सर्विसेज एमवीसी-स्टाइल करना चाहते हैं तो शायद आपको अपना खुद का आरईएसटी-एप्लीकेशन बनाने के लिए एमवीसी का उपयोग करना चाहिए।

+0

क्या आप सेवा में नियंत्रक तर्क डुप्लिकेट नहीं करेंगे? और मॉडल का उपयोग करके कुछ भी नहीं बचाते, क्योंकि आप लेखन नियंत्रक कोड को दो बार समाप्त करते हैं। –

+0

@Rob, नहीं, क्योंकि वेब पेज देखने के लिए नियंत्रक कोड विचारों और मॉडलों को मान्य करने आदि से निपटना चाहिए। बाकी एपीआई नियंत्रक आदर्श रूप से जेसन और स्वरूपण डेटा को थूक रहा होगा। – Chev

19

क्या आपके विशिष्ट एमवीसी अनुप्रयोग में वेब सेवाओं को जोड़ने की आवश्यकता है? जब तक कोई विशिष्ट कारण न हो, आपको अपने कंट्रोलर को एक यथार्थ तरीके से उपयोग करना चाहिए जैसे कि आप एक शानदार वेब सेवा करेंगे। अधिक जानकारी के लिए रोब कॉनरी से इस पोस्ट बाहर

की जांच: ASP.Net MVC: Using RESTful architecture

+0

यह काफी पुराना है, लेकिन आपके पास मेरे पास एक प्रश्न का उत्तर हो सकता है। मैं इंप्रेशन के तहत हूं, गतिशील रूप से लोड करने के लिए, कहें, एक ड्रॉपडाउन सूची जो मूल्यों के साथ बदलती है जब एक और ड्रॉपडाउन बदलता है, मुझे एक वेब सेवा की आवश्यकता होगी। इस तरह मैं इसे वेबफॉर्म में करूँगा। एमवीसी में यह कैसे किया जाता है? – Erix

+2

लिंक टूटा हुआ है और मैं एक अद्यतन लिंक का पता लगाने में असमर्थ था। सामग्री वेबैक मशीन पर उपलब्ध है: http://web.archive.org/web/20130119131317/http://wekeroad.com/2007/12/06/aspnet-mvc-using-restful-architecture –

0

मैं अपने आवेदन के लिए वेब सेवाओं को शामिल किया है और यह अच्छी तरह से काम करता है। मुझे विश्वास नहीं है कि यह एमवीसी का उल्लंघन करता है क्योंकि यह आपके मॉडल के लिए एक वैकल्पिक इंटरफ़ेस है। एमवीसी वेब सेवाओं के लिए उपयुक्त नहीं है क्योंकि वेब सेवाओं के पास कोई दृश्य नहीं है।

+4

वेब सेवाएं एमवीसी के साथ-साथ वेबसाइटों या आरएसएस फ़ीड का उपयोग करके बनाया जाए। दरअसल, यह एमवीसी अवधारणा की ताकत में से एक है - एक ही नियंत्रक कार्रवाई किसी भी प्रकार के डेटा को अपने डेटा को पास कर सकती है - वेब सेवा सामान को आउटपुट करती है ताकि यह * एक दृश्य हो। :) – hangy

2

मुझे नहीं लगता कि मॉडल को अपनी असेंबली में अलग करना इस बात पर असर डालता है कि आप एमवीसी का उपयोग कर रहे हैं या नहीं, आपके पास अभी भी एक मॉडल है। यह कहां अप्रासंगिक है?

11

मॉडल को अपनी परियोजना में अलग करना "एमवीसी" पैटर्न को तोड़ना नहीं है। सबसे पहले, यह सिर्फ यही है - एक पैटर्न। एमवीसी पैटर्न का इरादा स्पष्ट रूप से आपके डेटा, डेटा हैंडलर और प्रस्तुतकर्ताओं और उनके बीच इंटरफ़ेस के बीच स्पष्ट रूप से चित्रित करना है।

  • YourApp.Web.WebService
  • कुछ है कि आप बाहर मदद कर सकता है है

    • YourApp.Data
    • YourApp.Web.Mvc: यह करने के लिए सबसे अच्छा तरीका है कैसे एसईबी सुझाव दिया है एमवीसी स्टोरफ्रंट जो रॉब कॉनरी एक साथ रखे। जाओ घड़ी वीडियो यहाँ है:

      MVC Storefront Video Series

      और अगर आप अपने ब्राउज़र में वास्तविक कोड को देखने के लिए चाहते हैं जल्दी से देखने के लिए कि कैसे वह यह था कि, यहां जाएं: MVC Storefront Codeplex Code Browser

    1

    मैं मिला है एक ऐसा करने पर जाओ।

    पर my blog

    ps मेरी परिणाम देखें: मैं नहीं मानता कि इस MVC अवधारणा इतने लंबे समय के रूप में आपको लगता है कि एक वेब सेवा भंडार का मॉडल है, क्योंकि सभी एक वेब सेवा करता लौटा रहा है टूट जाएगा एक एक्सएमएल डंप।

    +0

    मैंने यूआरएल अपडेट किया है, इसलिए यह – Zac

    +0

    लॉल की समयसीमा समाप्त नहीं करेगा, "यह समाप्त नहीं होगा" – Chev

    0

    वेब सेवाओं और डेटाबेस के बारे में सोचें। इस समानता के तहत, मुझे लगता है कि यह आपके वेब सेवा में बदलाव करने के लिए समझ में आता है जहां आप अपना डेटाबेस तर्क डालते हैं।