কেষ্টরেল কী (বনাম আইআইএস / এক্সপ্রেস)


158

কিস্ট্রেল ওয়েব সার্ভারটি কী এবং এটি আইআইএস / আইআইএস এক্সপ্রেসের সাথে কীভাবে সম্পর্কিত?

আমি আইআইএস এক্সপ্রেসে অ্যাপ্লিকেশন বিকাশ করে এবং একটি আইআইএস ওয়েব সার্ভারে তাদের হোস্টিং থেকে এসেছি। এএসপি.নেট কোরের সাথে আমার একটি নির্ভরতা আছে Microsoft.AspNetCore.Server.Kestrelএবং আমার সূচনাটি হয়েছে .UseServer("Microsoft.AspNetCore.Server.Kestrel")। তবে আমি যখন আমার ওয়েবসাইটটি চালাচ্ছি তখনও আমি সিস্টেম ট্রেতে আইআইএস এক্সপ্রেস আইকনটি পাই। কেউ আমাকে জিজ্ঞাসা করেছিলেন আমি আইআইএস এক্সপ্রেস বা ক্যাসট্রেল ব্যবহার করছি এবং আমি কী বলব জানি না!

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


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

11
অবশ্যই, আপনি যেমন স্টাফ মধ্যে চালানো This document is now out of date. For up-to-date ASP.NET Core documentation go to: http://docs.asp.net। উফ।

উত্তর:


115

কিস্ট্রেল কি?

এটি একটি সম্পূর্ণ প্রস্ফুটিত ওয়েব সার্ভার। আপনি কেবল ক্যাসট্রেল ব্যবহার করে আপনার এএসপি.নেট কোর অ্যাপ্লিকেশনটি চালাতে পারেন।

তবে আমি যখন আমার ওয়েবসাইটটি চালাচ্ছি তখনও আমি সিস্টেম ট্রেতে আইআইএস এক্সপ্রেস আইকনটি পাই

আপনার এএসপি.এনইটি অ্যাপ্লিকেশনটিতে সম্ভবত wwwrootডিরেক্টরিতে আপনি একটি ওয়েবকনফিগ দেখতে পাবেন যা এতে রয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
    <handlers>
    <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>

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


5
ঠিক কি উপর কভার অধীনে ASP.Net কোর ব্যবহার যখন যাচ্ছে চমৎকার ইন্ট্রো youtu.be/e2qZvabmSvo
user99513

4
এএসপি.নেট কোর মডিউল (এইচটিপিপ্ল্যাটফর্মহ্যান্ডলারের পরিবর্তে) প্রবর্তনের কারণে এই উত্তরটি কিছুটা পুরানো। আমি আরও গল্প এবং সম্পর্কিত পণ্য পাশাপাশি একটি বিকল্প উত্তর অফার।
লেক্স লি

171

আমি কিছু ইতিহাস সহ একটি বিকল্প উত্তর দিতে চাই, যাতে আপনি বুঝতে পারেন কেন কাস্ট্রেল কেন আসে, এমনকি আপনি যদি কেবল উইন্ডোজ এবং আইআইএস ব্যবহার করেন তবে।

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

  • ক্যাসিনি পরে ভিজ্যুয়াল স্টুডিওতে এএসপি.এনইটি ডেভলপমেন্ট সার্ভারে পরিণত হয়। এটি সি # ভিত্তিক লিখিত একটি সম্পূর্ণ পরিচালিত ওয়েব সার্ভার HttpListener। অবশ্যই এটি যেহেতু শুধুমাত্র উন্নয়নের জন্য, তাই অনেকগুলি বৈশিষ্ট্য কখনও প্রয়োগ করা হয়নি। মাইক্রোসফ্ট ক্যাসিনির সোর্স কোডটিকে জনসাধারণের জন্য উপলব্ধ করার সাথে সাথে তৃতীয় পক্ষ রয়েছে যারা কোড বেসটি কাঁটাচামচ করেছে এবং আরও বৈশিষ্ট্য যুক্ত করেছে, যা ক্যাসিনি পরিবার শুরু করেছিল।
  • আইআইএসে এএসপি.এনইটি সমর্থন (সংশোধন 1)। কারণ আইআইএস তখন 4.0.০ এবং ৫.০ / ৫.১ ছিল, যার অ্যাপ্লিকেশন পুলের মতো কিছুই নেই, এএসপি.নেট এমনকি নিজস্ব কর্মী প্রক্রিয়াও রয়েছে ( aspnet_wp.exe)।

সুতরাং একটি ওয়েব অ্যাপ্লিকেশন বিকাশ করতে আপনি ক্যাসিনি ব্যবহার করেন এবং আইআইএস ব্যবহার করতে পারেন।

  • আইআইএস in-এ অ্যাপ্লিকেশন পুলগুলির প্রবর্তনের জন্য এএসপি.এনইটি পক্ষের কিছু পরিবর্তন দরকার হয়েছিল, তাই aspnet_wp.exeঅপ্রচলিত হয়ে প্রতিস্থাপন করে aspnet_isapi.dll। এটি আইআইএস পুনর্বিবেচনা 2 এএসপি.এনইটি সমর্থন হিসাবে দেখা যেতে পারে 2 সুতরাং ISP কর্মী প্রক্রিয়াগুলিতে ASP.NET অ্যাপগুলি হোস্ট করা হচ্ছে w3wp.exe

  • আইআইএস in এবং এর উপরে সংহত পাইপলাইন প্রবর্তনের জন্য আরও পরিবর্তন প্রয়োজন, যা পরিবর্তিত aspnet_isapi.dllহয়েছিল webengine4.dll। এটি আইআইএস পুনর্বিবেচনায় এএসপি.এনইটি সমর্থন হিসাবে দেখা যায় 3.. এএসপি.এনইটি এবং আইআইএস পাইপলাইনগুলি একীভূত।

আপনি দেখতে পাচ্ছেন এএসপি.এনইটি আরও জটিল এবং আইআইএসের সাথে দৃly়ভাবে সংহত হয়ে গেছে, তাই ক্যাসিনি তার বয়স দেখাতে শুরু করে এবং ধীরে ধীরে আইআইএস এক্সপ্রেস (একটি ব্যবহারকারী মোড লাইট আইআইএস) দ্বারা প্রতিস্থাপিত হয়।

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

তারপরে ২০১৪ সালের নভেম্বরে, এএসপি.নেট ৫ (পরে এএসপি.নেট কোর নামকরণ করা হয়েছিল) ঘোষিত হয়েছিল এবং ক্রস প্ল্যাটফর্ম প্রযুক্তিতে পরিণত হয়েছিল। স্পষ্টতই উইন্ডোজ, ম্যাকস এবং লিনাক্স সমর্থন করার জন্য মাইক্রোসফ্টের একটি নতুন ডিজাইনের প্রয়োজন ছিল, যেখানে আইআইএস ছাড়াও সমস্ত বড় ওয়েব সার্ভার, এনজিনেক্স / অ্যাপাচি (বা অন্যান্য ওয়েব সার্ভার) বিবেচনা করা উচিত।

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

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

  • আইআইএস এক্সপ্রেস / আইআইএস / এনগিনেক্স / অ্যাপাচি হ'ল বিপরীত প্রক্সি সার্ভার
  • কেষ্টরেল / নোডজেএস / টমক্যাট এবং আরও অনেকগুলি অ্যাপ্লিকেশন সার্ভার রয়েছে

অন্য একটি উত্তর ইতিমধ্যে মাইক্রোসফ্ট ডকুমেন্টেশনের লিঙ্ক দেখিয়েছে, যাতে আপনি একবার দেখতে পারেন।

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

এএসপি.নেট কোর ২.২ থেকে শুরু করে, আইআইএসের জন্য এএসপি.নেট কোর মডিউল (সংস্করণ 2) w3wp.exeএআইএস.এনইটি 2.x / 4.x এর মতোই আইআইএস কর্মী প্রক্রিয়া ( ) এর মধ্যে নেট নেট পরিবেশকে হোস্ট করতে পারে। এই মোডটিকে "আইআইএস ইন-প্রসেস হোস্টিং" বলা হয় । আইআইএস সংশোধন 5 এ এএসপি.এনইটি সমর্থন হিসাবে বিবেচনা করা যেতে পারে।

বেশ, বেশ দীর্ঘ, তবে আমি আশা করি যে আমি প্রয়োজনীয় সমস্ত টুকরো একসাথে রেখেছি এবং আপনি এটি পড়তে আনন্দিত।


1
চমৎকার উত্তর. তবে আপনি সহজেই বলতে পারবেন না যে আইআইএসের সাথে কেষ্টরেল ব্যবহার করা 'আজকের ইন্টারনেট অনুশীলনের ফলাফল'। বিপরীত প্রক্সি ব্যবহার করার অনেকগুলি যুক্তি রয়েছে। এখানে কয়েকটি উল্লেখ করা ভাল হত।
নিলে বিশ্বকর্মা

13
"বিপরীত প্রক্সি ব্যবহার করার অনেকগুলি যুক্তি রয়েছে" এর নিজস্ব প্রশ্ন ও উত্তরের সাথে সম্পর্কিত। সাধারণত লোকেরা গুগলকে জিজ্ঞাসা করে ভাল সংস্থানগুলি সন্ধান করতে পারে, তাই আমি ইতিমধ্যে এটি দীর্ঘ-উত্তর উত্তরের সাথে সংযুক্ত করি নি।
লেক্স লি

12

এমএস ডক্স থেকে এখানে: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x

কেস্ট্রল হ'ল লিবুভের উপর ভিত্তি করে ASP.NET কোরের জন্য একটি ক্রস প্ল্যাটফর্ম ওয়েব সার্ভার, ক্রস-প্ল্যাটফর্ম অ্যাসিঙ্ক্রোনাস আই / ও লাইব্রেরি। ক্যাসরেল হ'ল ওয়েব সার্ভার যা এএসপি.নেট কোর প্রকল্পের টেম্পলেটগুলিতে ডিফল্টরূপে অন্তর্ভুক্ত।

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


আপডেট:। নেট কোর 2.1, কাস্ট্রেল যদি লিবুভ হয় তবে পরিবর্তে পরিচালিত সকেট ব্যবহার করে

এএসপিএন কোর ২.১ ডক্স থেকে এখানে: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1# ট্রান্সপোর্ট- কনফিগারেশন

এএসপি.নেট কোর ২.১ প্রকাশের সাথে সাথে, কেষ্টারেলের ডিফল্ট ট্রান্সপোর্টটি আর লিভুভের ভিত্তিতে নয় বরং পরিবর্তে পরিচালিত সকেটের উপর ভিত্তি করে।

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