REST API + ওয়েবপেজ ব্যবহারের জন্য এএসপি.নেট এমভিসি বনাম ডাব্লুসিএফ


14

আমি মনে করি মানবিক মিথস্ক্রিয়া বনাম প্রোগ্রাম্যাটিক পরিষেবা ভিত্তিক ব্যবহারের জন্য আলোচনাটি পরিষ্কার।

তবে যদি আমি এমন একটি অ্যাপ্লিকেশন তৈরি করতে পারি যা একটি প্রোগ্রাম্যাটিক এপিআই এবং একই ওয়েবসাইটের মাধ্যমে সংযুক্ত ডেটা ব্যবহার করে এমন একটি ওয়েবসাইট উভয়ই ব্যবহার করে, তবে এটি কেবল এএসপি.এনইটি ব্যবহারের পক্ষে কী ঝোঁক রাখবে?

একই অ্যাপ্লিকেশনটিতে কাজ করার জন্য এএসপি.এনইটি এবং ডাব্লুসিএফ সংহত করা কতটা সহজ?

উত্তর:


11

এএসপি.এনইটি / এমভিসি এবং ডাব্লুসিএফ উভয়কেই উপকৃত করে এমন একটি অ্যাপ্লিকেশন লেখার পক্ষে এটি দুর্দান্ত নয়। ওয়েবএপিআই-র বিষয়গুলির উন্নতি হতে পারে, তবে একটি প্রকল্পে আমি জানি যে ডব্লিউসিএফ এবং এমভিসি একই অ্যাপে ব্যবহার করছিলাম, তারা একই ধারণার প্রতিনিধিত্ব করতে দুটি ভিন্ন মডেল বজায় রেখেছিল - একটি ডাব্লুসিএফ কোডের জন্য এবং একটি এমভিসির জন্য। কোড। আপনি দুটি মডেলের মধ্যে জিনিসগুলি অনুবাদ করতে তাদের যে ম্যাপারগুলি লিখতে হয়েছিল তা কল্পনা করতে পারেন - সেখানে প্রচুর কোড লাইন ছিল যা এড়ানো / হওয়া উচিত ছিল।

কেন এমনটি ঘটেছিল তার একটি অংশ হ'ল ডাব্লুসিএফ অনুরোধ এবং প্রতিক্রিয়া অবজেক্টগুলিকে [ডেটা কন্ট্রাক্ট] এবং তাদের বৈশিষ্ট্যগুলি [ডেটা মেম্বার] দিয়ে টীকায়িত করা উচিত, যখন এমভিসির এটির প্রয়োজন হয় না। অন্যদিকে আইডোমেটিক এমভিসি চাইছে ভিউমোডেলস, যা ডাব্লুসিএফ ডেটা চুক্তিগুলির চেয়ে আলাদা লক্ষ্য রয়েছে। অবশ্যই, এটি সম্ভব যে ডোমেন অবজেক্টের দুটি সম্পূর্ণ সেট ব্যবহারের সাথে ডাব্লুসিএফ এবং এমভিসি দ্বন্দ্বের চেয়ে কনওয়ের আইনের সাথে আরও অনেক কিছু ছিল , তবে এটি উল্লেখ করার মতো যে ডাব্লুসিএফ এবং এমভিসির আউটপুট এবং ইনপুট পর্যন্ত বিভিন্ন লক্ষ্য এবং প্রয়োজনীয়তা রয়েছে।

ব্যক্তিগতভাবে, আমি একটি সাধারণ তবে শক্তিশালী পরিষেবাগুলি ভিত্তিক ব্যাক এন্ড এপিআই বিকাশের জন্য আংশিক, বিশেষত যখন আপনি একাধিক ক্লায়েন্ট পেতে পারেন। আমি মনে করি চমৎকার জাভাস্ক্রিপ্ট এমভিভিএম এবং মাইক্রো এমভিসি ফ্রেমওয়ার্কগুলির আগমন এটিকে প্রাকৃতিক পছন্দ হিসাবে বিবেচনা করে, ব্যাকবোনজেএস , নাকআউটজেএস এবং অন্যান্য ব্যবহার করে অ্যাপ্লিকেশন কোড লেখার ফলে একটি সক্ষম বিকাশের পরিবেশের সুযোগ পাওয়া যায়। তারপরে আপনি নিজের ওয়েব অ্যাপ্লিকেশনটি তৈরি করতে বা কোনও মোবাইল ক্লায়েন্টে আপনার পছন্দের মাইক্রো এমভিসির পিছনের প্রান্তটি গ্রাস করতে পারেন এবং আপনার অংশীদাররা একই এপিআই দূরবর্তী স্থান থেকে গ্রাস করতে পারে।

প্রস্তাবনা

হয় ওয়েবপিআই বা পরিষেবা স্ট্যাক আপনার পিছনের এপিআই তৈরির জন্য ভাল প্রার্থী হতে পারে। আমি পরিষেবা স্ট্যাকের প্রস্তাব দিচ্ছি, কারণ আমি গত কয়েক মাস ধরে এটি ব্যবহার করছি এবং এটি ডাব্লুসিএফ-এর একটি দুর্দান্ত প্রতিস্থাপন বলে মনে করেছি। আমি বর্তমানে আমার ব্লগে পরিষেবা স্ট্যাকের উপর একটি টিউটোরিয়াল সিরিজ লিখছি ।

সার্ভিস স্ট্যাক রক্ষণাবেক্ষণকারী গোষ্ঠী ক্লোনার মতো স্ট্যাকওভারফ্লো বিকাশের জন্য কাঠামোগত ব্যবহার করে একটি উদাহরণ অ্যাপ্লিকেশন পোস্ট করেছে যা আমার বিশ্বাস যে বিকাশের ধরণটি বিশেষত বাধ্যতামূলক বলে মনে করে। এটিতে একটি সাধারণ, মডেল ভিত্তিক পরিষেবা অন্তর্ভুক্ত রয়েছে যা আপনি কোনও এমভিসি ওয়েবসাইট, একটি মোবাইল অ্যাপ্লিকেশন, বা অন্য যে কোনও কিছু সহজেই গ্রাস করতে পারবেন বলে কল্পনা করতে পারেন। সার্ভিসস্ট্যাকের ডিজাইন লক্ষ্যগুলি এমন একটি প্যাটার্নকে স্পষ্টভাবে উত্সাহ দেয় যা ক্লায়েন্ট এবং সার্ভারের মধ্যে কম সংযোগের দিকে পরিচালিত করে। ধারণাটি হ'ল চ্যাটি এপিআই এর কলগুলি যেমন GetCustomersInRegionWithSearchTerm(int regionId, string searchTerm)কম পদ্ধতির পক্ষে রয়েছে তেমন এড়ানো । আপনি পরিষেবা স্ট্যাকে একই জিনিসটি প্রয়োগ করতে পারেন:

[Route("/customers", "GET"]
[Route("/customers/search/{SearchTerm}", "GET"]
[Route("/customers/region/{Region}", "GET"]
[Route("/customers/region/{Region}/search/{SearchTerm}", "GET"]
public class Customers 
{
    public int? RegionId { get; set; }
    public string SearchTerm { get; set; }
}

public class CustomersService : Service
{
    public object Get(Customers request) {
        // handle request
        return new CustomersResponse();
    }
}

বেনিফিট, আমার চোখে, যে পরিবর্তে প্রচুর এবং পৃথক পদ্ধতি প্রচুর ওভার আউট আপনার ব্যবসা লজিক বিস্তার থাকার হল GetCustomersInRegionWithSearchTerm(int regionId, string searchTerm), GetCustomersInRegion(int regionId), GetCustomersWithSearchTerm(string searchTerm), GetCustomers(), এটা সব এক জায়গায় আছে। এটি আরও রক্ষণাবেক্ষণযোগ্য কোডের দিকে নিয়ে যাওয়া উচিত।

কাকতালীয়ভাবে, স্ট্যাক এক্সচেঞ্জ মূল পরিষেবা স্ট্যাক লেখক নিয়োগ করে । তিনি পরিষেবা স্ট্যাক প্রকল্পে সক্রিয়ভাবে প্রতিশ্রুতিবদ্ধ অবিরত ।

আমি বিশেষ কিছু বার্তার জন্য মেসেজের সারি পছন্দ করি - এবং ডাব্লুসিএফ এটির জন্য অনুমতি দিচ্ছিল, ওয়েবএপিআই তা দেয় না। সার্ভিস স্ট্যাক একই ওয়েব পরিষেবাটিকে এমকিউ এর মাধ্যমে চালিত করার অনুমতি দেয় না। এ সম্পর্কিত আরও তথ্যের জন্য রেডিস এমকিউ হোস্টটি এখানে দেখুন: github.com/ServiceStack/ServiceStack/wiki/Messaging- and-redis


দ্রষ্টব্য: সার্ভিস স্ট্যাক একই ওয়েব পরিষেবাটি এমকিউ এর মাধ্যমে চালু করার অনুমতি দেয়, রেডিস এমকিউ হোস্টটি এখানে দেখুন
redis

দুর্দান্ত ধন্যবাদ @ মাইথজ! আমি এটা জানতাম না।
কাইল হজসন

তবে মনে হচ্ছে এমভিসি 4 ওয়েব এপিআই রুটে যাচ্ছে ... এটি কি 'সরকারীভাবে স্পনসর করা' কাঠামো তৈরি করে না?
এক্সস্টার

গত দু'বছর ধরে "সরকারীভাবে স্পনসর করা ফ্রেমওয়ার্ক" (ডাব্লুসিএফ প্রি ওয়েবএপিআই) নিয়ে কুস্তিগীতির পরে, এটি এখন আমার নির্বাচনের মানদণ্ডের অংশ নয়। ওয়েবপিআই ভাল বা খারাপ তা বলার অপেক্ষা রাখে না, আমি এটি এখনও চেষ্টা করি নি। আমি কোনও আকাঙ্ক্ষা অনুভব করিনি, সার্ভিস স্ট্যাক আমার সমস্যাগুলি সমাধান করছে।
কাইল হজসন

3
এখানে সুস্পষ্ট উল্লেখ করে, তবে ডাব্লুসিএফ পরিষেবাগুলি থেকে ভিউমোডেলস এবং প্রতিক্রিয়াযুক্ত সামগ্রী সম্পূর্ণ 2 টি পৃথক জিনিস। একটি ভিউমোডেল কেবলমাত্র ডেটার একটি উপসেট হতে পারে বা বিভিন্ন উত্স থেকে একত্রিত ডেটার টুকরা হতে পারে। ভিউমোডেলসের জন্য বিভিন্ন সেট অবজেক্ট থাকা এমভিসি-র জন্য ঠিক কী প্রয়োজন, যেখানে ডেটা আসে (ডাব্লুসিএফ বা অন্যথায়) তাতে কিছু আসে যায় না। এছাড়াও, সমস্ত X.Name = Y.Name বয়লারপ্লেট কোড সংরক্ষণ করতে অবজেক্টের ধরণের মধ্যে ম্যাপিংয়ের জন্য অটোমেপার রয়েছে।
ওজ

4

@tzerb এটির সঠিক উত্তর দিয়েছে IMO তবে আমি উত্তরটি প্রসারিত করতে চেয়েছিলাম। এএসপি.নেট ওয়েব এপিআই যা বর্তমানে বিটা পর্যায়ে রয়েছে এবং একটি ওএসএস প্রকল্প আপনি সন্ধান করছেন এটি সবচেয়ে নিকটতম কাঠামো।

পণ্যের সংক্ষিপ্ত বিবরণ নিম্নরূপ ( এএসপি.নেট ওয়েব এপিআই পৃষ্ঠা থেকে উদ্ধৃত ):

এএসপি.নেট ওয়েব এপিআই একটি ফ্রেমওয়ার্ক যা ব্রাউজার এবং মোবাইল ডিভাইস সহ ক্লায়েন্টের বিস্তৃত পরিসরে পৌঁছে এমন HTTP পরিষেবাগুলি তৈরি করা সহজ করে। এএসপি.নেট ওয়েব এপিআইটি নেট নেট ফ্রেমওয়ার্কে RESTful অ্যাপ্লিকেশন তৈরির জন্য একটি আদর্শ প্ল্যাটফর্ম।

আপনি যে ক্লায়েন্ট অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন তা আপনি নিজের ওয়েব এপিআই ব্যবহার করতে পারেন তবে অবশ্যই এটিএসপি.এনইটি অ্যাপ্লিকেশন হতে হবে না। আপনি জাভাস্ক্রিপ্ট ব্যবহার করে একটি স্থির এইচটিএমএল পৃষ্ঠায় আপনার এপিআই ব্যবহার করতে পারেন। আপনি jQuery এর মতো কিছু দরকারী জাভাস্ক্রিপ্ট লাইব্রেরি দিয়ে সহজেই এটি সম্পন্ন করতে পারেন।

অন্যদিকে, আপনি অবশ্যই কোনও এএসপি.নেট অ্যাপ্লিকেশনটিতে সার্ভার সাইটে আপনার এপিআই ব্যবহার করতে পারেন। ওয়েব এপিআই প্রকল্পটি এইচটিটিপিসিলেট নামে একটি নতুন এইচটিটিপি। নেট ক্লায়েন্ট এপিআই প্রবর্তন করেছে যা এইচটিটিপি পরিষেবাগুলি গ্রাহ্য করা সহজ করে।

সাধারণভাবে, আপনার শুরু করার জন্য এখানে সংস্থানগুলির ভাল সেট রয়েছে:

এএসপি.নেট ওয়েব এপিআই দিয়ে শুরু করা - টিউটোরিয়াল, ভিডিও, নমুনা

মনে রাখবেন যে প্রকল্পটি এখনও তার বিটা পর্যায়ে রয়েছে। আমি আপনাকে হেনরিক এফ নীলসন ব্লগ অনুসরণ করার পরামর্শ দিচ্ছি যেখানে তিনি প্রকল্পের সর্বশেষ অপ্রকাশিত আপডেটের তথ্য পোস্ট করেন। আপনি প্রকল্পের উত্স কোড এবং এএসপি.এনইটি ওয়েব স্ট্যাক প্রকল্পের ভিতরে বিকাশ প্রবাহ পৌঁছাতে পারেন ।


3

আমি মনে করি যে বর্তমান দিকনির্দেশনাটি হল রেস্টের জন্য ডাব্লুসিএফের পরিবর্তে এমভিসি ওয়েব এপিআই ব্যবহার করা। http://stephenwalther.com/blog/archive/2012/03/05/introduction-to-the-asp-net-web-api.aspx

বিকাশ মডেলটি খুব কাছে এবং আপনি কখনও কখনও ডাব্লুসিএফের বাজে কনফিগারেশনকে বাইপাস করেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.