আমি সত্যটি পছন্দ করি যে এএসপি.নেট কোরের এমভিসি 6 দুটি প্যাটার্নগুলিকে এক করে নিয়েছে কারণ আমার প্রায়শই উভয় বিশ্বকে সমর্থন করা প্রয়োজন। যদিও এটি সত্য যে আপনি যে কোনও মানক এমভিসি Controller(এবং / অথবা নিজের ActionResultশ্রেণীর বিকাশ ) ঠিক যেমনটির মতো আচরণ এবং আচরণ ApiControllerকরতে পারেন তা বজায় রাখা এবং পরীক্ষা করা খুব কঠিন হতে পারে: তার উপরে, কন্ট্রোলার পদ্ধতিগুলি ActionResultঅন্যের সাথে মিশ্রিত হওয়া আবারও থাকতে পারে having IHttpActionResultবিকাশকারী দৃষ্টিকোণ থেকে কাঁচা / সিরিয়ালাইজড / ডেটা ফিরিয়ে দেওয়া খুব বিভ্রান্তিকর হতে পারে, বিশেষত যদি আপনি একা কাজ করছেন না এবং অন্য বিকাশকারীদের সেই সংকর পদ্ধতির সাথে গতি আনার প্রয়োজন হয়।
এএসপি.নেট নন-কোর ওয়েব অ্যাপ্লিকেশনগুলিতে এই সমস্যাটি হ্রাস করার জন্য আমি এখন পর্যন্ত যে সেরা কৌশলটি এসেছি তা হ'ল এমভিসি ভিত্তিক ওয়েব অ্যাপ্লিকেশনটিতে ওয়েব এপিআই প্যাকেজটি আমদানি করা (এবং সঠিকভাবে কনফিগার করা), সুতরাং আমি উভয়ের মধ্যে সেরাটি পেতে পারি ওয়ার্ল্ডস: Controllersভিউ ApiControllersজন্য, ডেটা জন্য।
এটি করার জন্য, আপনাকে নিম্নলিখিতগুলি করতে হবে:
- নিউগেট:
Microsoft.AspNet.WebApi.Coreএবং ব্যবহার করে নিম্নলিখিত ওয়েব এপিআই প্যাকেজ ইনস্টল করুন Microsoft.AspNet.WebApi.WebHost।
- আপনার
/Controllers/ফোল্ডারে এক বা একাধিক অ্যাপিকন্ট্রোলার যুক্ত করুন ।
- আপনার ফোল্ডারে নিম্নলিখিত WebApiConfig.cs ফাইল যুক্ত করুন
/App_Config/:
using System.Web.Http;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
শেষ অবধি, আপনাকে উপরের ক্লাসটি আপনার স্টার্টআপ ক্লাসে নিবন্ধিত করতে হবে (হয় Startup.csবা Global.asax.csআপনি ওউইন স্টার্টআপ টেম্পলেট ব্যবহার করছেন কিনা তা নির্ভর করে)।
Startup.cs
public void Configuration(IAppBuilder app)
{
// Register Web API routing support before anything else
GlobalConfiguration.Configure(WebApiConfig.Register);
// The rest of your file goes there
// ...
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
ConfigureAuth(app);
// ...
}
Global.asax.cs
protected void Application_Start()
{
// Register Web API routing support before anything else
GlobalConfiguration.Configure(WebApiConfig.Register);
// The rest of your file goes there
// ...
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// ...
}
এই পদ্ধতির - তার উপকারিতা এবং দু'পক্ষের সাথে - এই পোস্টে আরও ব্যাখ্যা করা হয়েছে যা আমি আমার ব্লগে লিখেছিলাম।
ApiControllerএবংControllerতাই আপনি যদি নতুনটি ব্যবহার করেন তবে নেট অ্যাপ্লিকেশনটিকে আপনার আর চিন্তার দরকার নেই - ডকস.মাইক্রোসফট