2012-02-29 5 views
25

मैं एक परियोजना है कि तत्वों की एक संख्या शामिल है पर काम करने जा रहा हूँ:WCF सेवा या वेब एपीआई

  • ASP.NET MVC वेबसाइट
  • सी # कंसोल आवेदन
  • iPhone App

डेटाबेस से बात करने वाले इन सभी अलग-अलग अनुप्रयोगों को प्राप्त करने के लिए, मेरा तत्काल विचार डब्लूसीएफ सेवा का उपयोग करना था।

हालांकि, अब मुझे साइट पर एक एपीआई जोड़ने की आवश्यकता है ताकि तृतीय पक्षों को अपने स्वयं के अनुप्रयोगों से रिकॉर्ड चुनने, डालने और अपडेट करने की अनुमति मिल सके।

मेरे दिमाग में, मैं अपनी डब्ल्यूसीएफ सेवा पर एक अलग रीस्टफुल सेवा समापन बिंदु तैयार करूंगा जो प्रमाणीकरण का उपयोग करके बंद कर दिया जाएगा और केवल कुछ तरीकों तक पहुंच प्रदान करेगा।

हालांकि, मैं आज एमवीसी 4 में वेब एपीआई फीचर के बारे में पढ़ रहा हूं जो कि रीस्टफुल एपीआई के लिए नवीनतम चीज है?

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

+0

उल्लेख के लिए [बनाम WCF ASP.NET वेब एपीआई] (http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api) – nawfal

उत्तर

16

यदि आप रीस्टफुल डेवलपमेंट करना चाहते हैं तो आप निश्चित रूप से एएसपी.Net वेब एपीआई (जिसे मूल रूप से डब्ल्यूसीएफ वेब एपीआई कहा जाता था) और के लक्ष्य के साथ बनाया गया था "आरईएसटी को प्रथम श्रेणी के नागरिक को .NET में बनाना"

विचार करने की एक और बात यह है कि डब्ल्यूसीएफ आरईएसटी स्टार्टर किट no longer supported है।

ध्यान दें कि वेब एपीआई का उपयोग करने का मतलब यह नहीं है कि आपको एएसपी.नेट एमवीसी या आईआईएस का उपयोग करना होगा, क्योंकि यह self hosted हो सकता है।

प्रकृति में गैर-सीआरयूडी संचालन को संभालने के लिए मैं गुगलिंग "आरईएसटी गैर-सीआरयूडी" की सिफारिश करता हूं। मुझे यह ब्लॉग पोस्ट RESTful URLs for non-CRUD operations (और विशेष रूप से टिप्पणियां दिलचस्प) मिला। यदि आप तय करते हैं कि आपको आरपीसी कॉल करने की आवश्यकता है तो उन्हें डब्ल्यूसीएफ के साथ किया जाना पड़ सकता है। ऐसा कहा जाता है क्योंकि डब्ल्यूसीएफ आरईएसटी की हत्या हो रही है, मुझे यकीन नहीं है कि सबसे अच्छा समाधान क्या होगा। दोनों होने का शायद सबसे अच्छा जवाब है लेकिन साथ ही यह एक अच्छा जवाब नहीं है।

एक और विकल्प डब्लूसीएफ ओडाटा सेवा होगी लेकिन मुझे यकीन नहीं है कि क्या इसे आईफोन से कोई समर्थन मिलता है।

बनाने के लिए एक अंतिम बिंदु (है कि भविष्य में हटाया जा सकता है के रूप में इस समय प्रति संवेदनशील है)

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

+0

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

+0

के लिए अलग-अलग अंतराल हो सकते हैं पोस्ट करने के लिए अतिरिक्त जानकारी जोड़ा गया। –

+0

मैं आपकी अतिरिक्त जानकारी पूरी तरह से समझ नहीं पा रहा हूं। क्या एक समाधान एक डब्ल्यूसीएफ सेवा का उपयोग करना होगा जिसे मैं अपनी एमवीसी वेबसाइट से संदर्भित कर सकता हूं। तो मैं एक वेब एपीआई (प्रमाणीकरण के साथ) का उपयोग कर सकता हूं जो डेटा प्राप्त करने के लिए डब्ल्यूसीएफ सेवा के साथ भी संचार करता है? –

6

Service Stack भी एक विकल्प की तरह दिखता है।

डेमो, सिंहावलोकन, उदाहरण available here है।

+2

+1 के संभावित डुप्लिकेट सर्विस स्टैक, जिसे मैंने कभी नहीं सुना था। हालांकि, उनके ढांचे को देखते हुए, मेरी पहली छाप यह है कि क्लाइंट के लिए "नो कोड-जेन" का उनका लक्षित लक्ष्य पूरी तरह सटीक नहीं है। कोड-जेन (स्पष्ट रूप से मैन्युअल) अभी भी आवश्यक है यदि आपके पास सेवा डीटीओ तक पहुंच नहीं है, जो कि सार्वजनिक एपीआई के लिए अत्यधिक संभावना है। फिर भी, ढांचा आशाजनक लग रहा है, इसलिए मैं निश्चित रूप से इसका अध्ययन करूँगा। लिंक के लिए धन्यवाद! – Randolpho

+0

नहीं, वहां कोई कोड-जेन नहीं है क्योंकि आप उसी डीटीओ का पुन: उपयोग करने में सक्षम हैं, जिसकी आपने अपनी वेब सेवाओं को परिभाषित किया है। तो आपको एक टाइप, संक्षिप्त जेनेरिक सेवा क्लाइंट मिलते हैं जो तेजी से, संस्करण योग्य अंत तक उपयोग का उपयोग करता है। यहां तक ​​कि सी # अपवाद भी बेवकूफ हैं और टाइप किए गए हैं https://github.com/ServiceStack/ServiceStack/wiki/Validation – mythz

+0

@mythz और क्या होगा यदि आपके पास डीटीओ को परिभाषित करने वाले डीएलएल तक पहुंच नहीं है? सार्वजनिक रूप से सुलभ वेब सेवाओं के साथ यह एक आम परिदृश्य है। – Randolpho

4

यहां कोई सही जवाब नहीं है। आप निश्चित रूप से एक डब्ल्यूसीएफ रीस्टफुल सेवा के साथ काफी अच्छी तरह से कर सकते हैं। या आप एएसपी.नेट एमवीसी का उपयोग कर सकते हैं। दोनों पूरी तरह से मान्य हैं, और दोनों में ताकत और कमजोरियां हैं।

आखिरकार, मैं सुझाव दूंगा कि आप जो भी सबसे ज्यादा रखरखाव महसूस करते हैं उसके साथ जाएं।

मुझे यह नोट करना होगा कि एमवीसी 4 बीटा में है, इसलिए बग के लिए देखें और बीटा से बाहर होने तक लाइव न जाएं।

1

मैं यह देखने के इच्छुक हूं कि आप जिस प्लेटफ़ॉर्म का उपयोग करने जा रहे हैं, उस पर सबसे अच्छा समर्थन क्या है, मुझे संदेह है कि आईफोन ऐप आपके विकल्पों को चलाने में समाप्त हो सकता है।

यदि यह शुद्ध था। नेट मैं अभी भी एक एसओएपी सेवा को झुकाव करने के लिए उत्सुक हूं - इसे इन दिनों ठंडा नहीं माना जाता है, लेकिन आम तौर पर कस्टम समाधानों को चलाने के बिना आपको अधिकांश प्लेटफॉर्म पर जो चाहिए वह करना होगा।

संपादित

ASP.NET वेब एपीआई का मतलब है कि नेट अब एक आरामदायक एपीआई के विकास के लिए एक महान रूपरेखा प्रदान करता है, मैं अपने जवाब को संशोधित कहना है कि मैं अब इस दिशा में झुक जाएगा - प्रगति बहुत अच्छा है!

1

चूंकि आप एएसपी.नेट एमवीसी वेबसाइट बनाने जा रहे हैं, इसलिए एएसपी.नेट वेब एपीआई का उपयोग करना काफी आरामदायक होगा क्योंकि प्रोग्रामिंग मॉडल बहुत समान है और उन समाधानों को एक-दूसरे के साथ एकीकृत किया जाता है।

0

मेरे पास एक ही प्रश्न है।

MSDN साइट में, http://msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx

मिले एक वीडियो ट्यूटोरियल जहां उन्होंने कहा कि iPhone या JSON या XML के वेब एप्लिकेशन ग्राहकों की तरह मशीन cosumption के लिए, वेब API विकल्प की सिफारिश की है। वीडियो के आखिरी हिस्से के आसपास।

जबकि मशीन संचार के लिए अधिक जटिल मशीन के लिए डब्ल्यूसीएफ प्रीफेरेबल है।

http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start/Building-Web-Apps-with-ASPNET-Jump-Start-04-Building-a-Service-Layer-with-ASPNET-Web-API

यहाँ अपनी प्रस्तुति से एक स्क्रीनशॉट है।

enter image description here