.NET কোর এবং .NET স্ট্যান্ডার্ড ক্লাস লাইব্রেরি প্রকল্পের প্রকারের মধ্যে পার্থক্য কী?


813

ভিজ্যুয়াল স্টুডিওতে কমপক্ষে 3 টি বিভিন্ন ধরণের শ্রেণিকালীন পাঠাগার রয়েছে যা আপনি তৈরি করতে পারেন:

  • ক্লাস লাইব্রেরি (। নেট ফ্রেমওয়ার্ক)
  • ক্লাস লাইব্রেরি (। নেট স্ট্যান্ডার্ড)
  • ক্লাস লাইব্রেরি (। নেট কোর)

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

সুতরাং, ক্লাস লাইব্রেরি (। নেট স্ট্যান্ডার্ড) এবং ক্লাস লাইব্রেরি (। নেট কোর) এর মধ্যে পার্থক্য কী , কেন উভয়ের উপস্থিতি রয়েছে এবং কখন আমাদের একে অপরের উপরে ব্যবহার করা উচিত?


10
আপনি একটি মিস করেছেন: ক্লাস লাইব্রেরি (পোর্টেবল)। মূল == কাঠামো,। নেট মানক == পোর্টেবল।
হ্যানস প্যাস্যান্ট

4
জামারিনের একজনও ছিলেন, কিন্তু এই অন্যরা এই প্রশ্নের কোনও মূল্য দেয় না :)
গিগি

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

12
ওপি "কমপক্ষে তিনটি ভিন্ন ধরণের" বলেছিলেন। পোস্টটি সঠিক ছিল।
ড্যান ফ্রাইডম্যান

1
কোর নামকরণে আমি বিভ্রান্ত হয়ে পড়েছিলাম যা স্ট্যান্ডার্ড বা ফ্রেমওয়ার্ক প্ল্যাটফর্মের কোনও মূল উপসেট নয়। এছাড়াও আমরা নিয়মিত। নেট কোর এর সাথে যুক্ত এএসপি দেখতে পাই। এটিও খুব বিভ্রান্তিকর ...
অ্যালেক্সিস পাউরোট

উত্তর:


609

আমাদের কখন অন্যটির ওপরে ব্যবহার করা উচিত?

সিদ্ধান্তটি সামঞ্জস্যতা এবং এপিআই অ্যাক্সেসের মধ্যে একটি বাণিজ্য-বন্ধ।

আপনি যখন আপনার গ্রন্থাগারের সাথে সামঞ্জস্যপূর্ণ অ্যাপসের সংখ্যা বাড়িয়ে তুলতে চান তখন একটি নেট স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করুন এবং আপনার লাইব্রেরি অ্যাক্সেস করতে পারে .NET API পৃষ্ঠের ক্ষেত্রের হ্রাসের সাথে আপনি ঠিক আছেন।

আপনি যখন আপনার গ্রন্থাগারটি অ্যাক্সেস করতে পারে NET API পৃষ্ঠের ক্ষেত্রটি বাড়িয়ে তুলতে চান তখন একটি নেট কোর লাইব্রেরি ব্যবহার করুন এবং কেবলমাত্র নেট নেট অ্যাপ্লিকেশনগুলিকে আপনার লাইব্রেরির সাথে সামঞ্জস্য করার অনুমতি দেওয়ার সাথে আপনি ঠিক আছেন।

উদাহরণস্বরূপ, নেট স্ট্যান্ডার্ড 1.3 কে লক্ষ্যযুক্ত একটি লাইব্রেরি .NET ফ্রেমওয়ার্ক 4.6,। নেট কোর 1.0, ইউনিভার্সাল উইন্ডোজ প্ল্যাটফর্ম 10.0, এবং নেট স্ট্যান্ডার্ড 1.3 সমর্থন করে এমন কোনও প্ল্যাটফর্মের সাথে উপযুক্ত হবে compatible যদিও গ্রন্থাগারের .NET API এর কিছু অংশে অ্যাক্সেস থাকবে না। উদাহরণস্বরূপ, Microsoft.NETCore.CoreCLRপ্যাকেজটি নেট কোরের সাথে সামঞ্জস্যপূর্ণ তবে। নেট স্ট্যান্ডার্ডের সাথে নয়।

ক্লাস লাইব্রেরি (। নেট স্ট্যান্ডার্ড) এবং ক্লাস লাইব্রেরি (। নেট কোর) এর মধ্যে পার্থক্য কী?

প্যাকেজ ভিত্তিক ফ্রেমওয়ার্ক বিভাগ পার্থক্য বর্ণনা করে।

সামঞ্জস্যতা: লাইব্রেরিগুলি যে লক্ষ্য। NET স্ট্যান্ডার্ড কোনও .NET স্ট্যান্ডার্ড কমপ্লায়েন্ট রানটাইম, যেমন। নেট কোর,। নেট ফ্রেমওয়ার্ক, মনো / জ্যামারিনে চলবে। অন্যদিকে, গ্রন্থাগারগুলি যেগুলি .NET কোর লক্ষ্য করে কেবলমাত্র নেট নেট রানটাইমে চালাতে পারে।

এপিআই সারফেস এরিয়া: .NET স্ট্যান্ডার্ড লাইব্রেরিগুলিতে সমস্ত কিছু NETStandard.Libraryআসে Microsoft.NETCore.App। পরবর্তীটিতে প্রায় ২০ টি অতিরিক্ত গ্রন্থাগার রয়েছে, যার মধ্যে কয়েকটি আমরা আমাদের .NET স্ট্যান্ডার্ড লাইব্রেরিতে (যেমন System.Threading.Thread) ম্যানুয়ালি যুক্ত করতে পারি এবং এর মধ্যে কয়েকটি নেট নেট স্ট্যান্ডার্ড (যেমন Microsoft.NETCore.CoreCLR) এর সাথে সামঞ্জস্যপূর্ণ নয় ।

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

উভয়ের অস্তিত্ব কেন?

এক মুহুর্তের জন্য গ্রন্থাগারগুলি উপেক্ষা করা, NET স্ট্যান্ডার্ড বিদ্যমান থাকার কারণটি বহনযোগ্যতার জন্য; এটি এপিআইয়ের একটি সেট সংজ্ঞায়িত করে যা। নেট প্ল্যাটফর্মগুলি প্রয়োগ করতে সম্মত হয়। .NET স্ট্যান্ডার্ড প্রয়োগ করে এমন কোনও প্ল্যাটফর্ম লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ যা .NET স্ট্যান্ডার্ডকে লক্ষ্য করে। এই সামঞ্জস্যপূর্ণ প্ল্যাটফর্মগুলির মধ্যে একটি হ'ল নেট কোর।

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

এখানে একটি ইন্টারেক্টিভ ম্যাট্রিক্স যা দেখায় যে কোন .NET স্ট্যান্ডার্ড কোন .NET বাস্তবায়ন (গুলি) এবং কতগুলি API পৃষ্ঠতল অঞ্চল উপলব্ধ।


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

3
আমি লিঙ্কিত প্রশ্নের আমার উত্তর আপডেট করেছি। টি এল; ডিআর; অতীতে ক্লাসের লাইব্রেরিগুলি পূর্ণ কাঠামোটিকে লক্ষ্য করেছিল, যার মধ্যে একটি অ্যাপ্লিকেশন মডেল রয়েছে।
শন লুটিন

আপনি ক্লাস লাইব্রেরি (। নেট ফ্রেমওয়ার্ক) কভার করতে ভুলে গেছেন, এটি। নেট স্ট্যান্ডার্ড এবং .NET কোর এর সাথে সামঞ্জস্যপূর্ণ?
টমাস

8
এই চিত্রটি আমাকে এটি পেতে সত্যই সহায়তা করেছিল।
jpaugh

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

396

একটি। নেট কোর ক্লাস লাইব্রেরিনেট স্ট্যান্ডার্ড উপর নির্মিত হয় । আপনি যদি এমন একটি গ্রন্থাগার প্রয়োগ করতে চান যা । নেট ফ্রেমওয়ার্কের পোর্টেবল । .NET কোর এবং জামারিন , একটি .NET স্ট্যান্ডার্ড লাইব্রেরি চয়ন করুন

.NET কোর চূড়ান্তভাবে .NET স্ট্যান্ডার্ড 2 বাস্তবায়ন করবে (যা জ্যামারিন এবং। নেট ফ্রেমওয়ার্ক হিসাবে থাকবে )

.NET কোর , Xamarin এবং .NET ফ্রেমওয়ার্ক তাই হিসেবে চিহ্নিত করা যায় স্বাদে এর .NET স্ট্যান্ডার্ড

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

মাইক্রোসফ্টও আপনাকে পোর্টেবল ক্লাস লাইব্রেরির পরিবর্তে .NET স্ট্যান্ডার্ড ব্যবহার করার পরামর্শ দেয় ।

এমএসডিএনকে একটি অনুমোদনযোগ্য উত্স হিসাবে উদ্ধৃত করার জন্য, .NET স্ট্যান্ডার্ডটি তাদের সমস্তকে রুল করার জন্য একটি লাইব্রেরি হওয়ার উদ্দেশ্যে । যেহেতু ছবিগুলি হাজার শব্দের মূল্যহীন, নিম্নলিখিত বিষয়গুলি খুব স্পষ্ট করে তুলবে:

1. আপনার বর্তমান প্রয়োগের দৃশ্য (খণ্ডিত)

আমাদের বেশিরভাগের মতো, আপনি সম্ভবত নীচের পরিস্থিতিতে রয়েছেন: (। নেট ফ্রেমওয়ার্ক, জামারিন এবং এখন। নেট কোর স্বাদযুক্ত অ্যাপ্লিকেশন)

এখানে চিত্র বিবরণ লিখুন

২। নেট স্ট্যান্ডার্ড গ্রন্থাগারটি আপনার জন্য কী সক্ষম করবে (ক্রস-ফ্রেমওয়ার্ক সামঞ্জস্যতা)

.NET স্ট্যান্ডার্ড লাইব্রেরি প্রয়োগ করা এই সমস্ত বিভিন্ন স্বাদের জুড়ে কোড ভাগ করে নেওয়ার অনুমতি দেয়:

তাদের সকলকে শাসনের জন্য একটি গ্রন্থাগার

অধৈর্য জন্য:

  1. .NET স্ট্যান্ডার্ড আপনার প্রয়োজনীয় পরিবেশগুলি জুড়ে আপনার প্রত্যাশা এবং পছন্দ করে এমন সমস্ত API এনে সমস্ত প্ল্যাটফর্ম জুড়ে .NET বিকাশকারীদের জন্য কোড ভাগ করার সমস্যা সমাধান করে: ডেস্কটপ অ্যাপ্লিকেশন, মোবাইল অ্যাপস এবং গেমস এবং ক্লাউড পরিষেবাগুলি:
  2. .NET স্ট্যান্ডার্ড হল এমন একটি API এর সেট যা সমস্ত .NET প্ল্যাটফর্মগুলি প্রয়োগ করতে হয় । এটি .NET প্ল্যাটফর্মগুলিকে একীভূত করে এবং ভবিষ্যতের বিভাজন রোধ করে
  3. .NET স্ট্যান্ডার্ড 2.0 .NET ফ্রেমওয়ার্ক দ্বারা প্রয়োগ করা হবে ,। নেট কোর , এবং জামারিন । জন্য .NET কোর , এই যে অনুরোধ করা হয়েছে বিদ্যমান বহু API যোগ করা হবে।
  4. .NET স্ট্যান্ডার্ড 2.0 তে .NET ফ্রেমওয়ার্ক বাইনারিগুলির জন্য একটি সামঞ্জস্যতা শিম অন্তর্ভুক্ত করা হয়েছে , উল্লেখযোগ্যভাবে গ্রন্থাগারের সেট বাড়িয়েছেন যা আপনি আপনার .NET স্ট্যান্ডার্ড লাইব্রেরি থেকে উল্লেখ করতে পারেন।
  5. .NET স্ট্যান্ডার্ড মাল্টি প্ল্যাটফর্ম। নেট লাইব্রেরি নির্মাণের সরঞ্জাম সরঞ্জাম হিসাবে পোর্টেবল ক্লাস লাইব্রেরি (পিসিএল) প্রতিস্থাপন করবে

.NET স্ট্যান্ডার্ডের সর্বোচ্চ সংস্করণটি কী আপনি লক্ষ্য করে নিতে পারেন তা বুঝতে সহায়তা করার জন্য একটি সারণীর জন্য, আপনি যে নেট নেট প্ল্যাটফর্মটি চালানোর ইচ্ছে রেখেছেন, এখানে চলে যান

সূত্র: এমএসডিএন: এনইটি স্ট্যান্ডার্ড প্রবর্তন করা হচ্ছে


2
এএসপি.নেট কোর সেই গ্রাফিকটিতে কিছুটা ভুল জায়গায় স্থান পেয়েছে, কারণ এটি সম্পূর্ণ। নেট ফ্রেমওয়ার্কের সাথেই ব্যবহার করা যেতে পারে, কেবলমাত্র নেট নেট নয়, কারণ এটি প্রকৃতপক্ষে লক্ষ্য করে। নেট স্ট্যান্ডার্ড।
নিম

2
তবে আপনি সম্পূর্ণ। নেট ফ্রেমওয়ার্ক সহ একটি এএসপি.নেট কোর অ্যাপ তৈরি করতে পারেন - এএসপি.নেট কোর সত্যই। নেট স্ট্যান্ডারের মতো একই স্তরের অন্তর্গত। এটি কেবল। নেট কোর-এ সীমাবদ্ধ নয়।
নেমে

1
@ নিম প্রথমত, হ্যাঁ। নেট কোরটিতে নেট নেট ফ্রেমওয়ার্ক লাইব্রেরি অন্তর্ভুক্ত থাকতে পারে তবে ক্রস প্ল্যাটফর্মের পুনরায় ব্যবহার হারাতে হবে (কেবল উইন্ডোজের জন্য - * নিক্স বা ওএসএক্স নয়, বা জামারিনে পুনরায় ব্যবহার)। এমন একটি পরিস্থিতি যার ফলে অনেকগুলি উপস্থিত রয়েছে এবং অনেকগুলি বিদ্যমান লাইব্রেরিগুলিকে সম্পূর্ণরূপে পুনরায় ব্যবহার করতে চান cross নেট প্ল্যাটফর্মটি ক্রস-প্ল্যাটফর্ম সুবিধার জন্য কোনও আগ্রহ ছাড়াই (ওএস-স্তর এবং অ্যাপ্লিকেশন-মডেল স্তর) ... যদি আপনি এখনও মনে করেন তবে আমি ভুল, সম্ভবত আপনি মাইক্রোসফ্টের সাথে তর্ক করতে পারেন, যারা এই চিত্রগুলি রচনা করেছেন ... :-)
ব্যবহারকারী919426

3
আমি। নেট কোর এবং নেট নেট ফ্রেমওয়ার্ক সংযুক্ত করার কথা বলছি না। আমার বক্তব্যটি হ'ল এএসপি.নেট কোর নাম সত্ত্বেও মোটেই .NET কোরের উপর নির্ভর করে না। এটি এমন একটি গ্রন্থাগার হিসাবে লেখা যা নেট। স্ট্যান্ডার্ডকে লক্ষ্য করে, তাই আপনি এটি নেট স্ট্যান্ডার্ড ব্যবহার করতে পারেন যেখানেই ব্যবহার করতে পারেন। হ্যাঁ, তারা সেই চিত্রটিতে একটি ভুল করেছে।
নেমে

2
@ ওগ্রিশমন আপনিনেট স্ট্যান্ডার্ডে এক্সিকিউটেবল তৈরি করতে পারবেন না । এটি কেবলমাত্র একটি ক্লাস লাইব্রেরি হতে পারে, যা অন্যান্য নির্বাহী কোড দ্বারা রেফারেন্স করা যায়। এটির কোন রানটাইম নেই
ব্যবহারকারী 919426

91

সুতরাং সংক্ষিপ্ত উত্তরটি হবে:

IAnimal == .NetStandard (General)
ICat == .NetCore (Less General)
IDog == .NetFramework (Specific / oldest and has the most features)

26
@ জো.ওয়াং যেমন দেখছি এটি খারাপ যে এটি। নেট কোর এবং। নেট ফ্রেমওয়ার্কের মধ্যে সম্পর্ককে মিস করেছে। যদি .NET কোর পাখি হয়, তবে। নেট ফ্রেমওয়ার্ক agগল হতে পারে না (সম্ভবত বিড়াল আরও উপযুক্ত)।
লেক্স লি

8
@LexLi ঠিক আছে, এটি জলকে জলাবদ্ধ করে তোলে। .NET ফ্রেমওয়ার্ক .NET কোর এর উপপ্রকার নয়।
এরিক এস্কিল্ডসেন

6
এটি কিছুটা অভিনব দেখায় তবে নিখুঁত নয়
afr0

3
@ জো-র মূল মন্তব্যটি আরও নির্ভুল বলে মনে হয়েছে। সম্প্রদায় দ্বারা সম্পাদিত উত্তর এটি বিভ্রান্ত করেছে
নন্দুন

7
কুকুরের বিড়ালের চেয়েও বেশি বৈশিষ্ট্য রয়েছে? হ্যাঁ :)
hrzafer

71

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

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

.NET স্ট্যান্ডার্ড একটি স্পেসিফিকেশন যার জন্য এপিআই লাইব্রেরি এবং অ্যাসেমব্লির সেটগুলি অবশ্যই উপলব্ধ। .NET স্ট্যান্ডার্ড ০.০ এর জন্য লিখিত একটি অ্যাপ্লিকেশন ফ্রেমওয়ার্ক, কোর, মনো ইত্যাদির যে কোনও সংস্করণ দিয়ে সংকলন করতে এবং চালাতে সক্ষম হবে যা গ্রন্থাগারগুলির নেট নেট স্ট্যান্ডার্ড 1.0 সংগ্রহের জন্য সমর্থন প্রচার করে। .NET স্ট্যান্ডার্ড 1.1, 1.5, 1.6, 2.0, ইত্যাদির ক্ষেত্রেও এটি সত্য etc.

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

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

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


1
। নেট কোর এবং। নেট স্ট্যান্ডার্ড কী তা সম্পর্কে একটি ভাল ওভারভিউ থাকলেও এই উত্তরটি প্রতিটি প্রত্যেকে লক্ষ্যবস্তু করে ক্লাসের লাইব্রেরি সম্পর্কে প্রশ্নের উত্তর দিতে ব্যর্থ হয়।
গিগি

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

এটি স্পষ্টভাবে কেস নয়, কারণ অন্য একজন প্রশ্নের সঠিক উত্তর দিয়েছেন। আমার প্রশ্ন ছিল ক্লাসের লাইব্রেরি সম্পর্কে। আপনার উত্তর ফ্রেমওয়ার্ক সম্পর্কে ছিল।
গিগি

29

.NET ফ্রেমওয়ার্ক এবং। নেট কোর দুটি ফ্রেমওয়ার্ক।

.NET স্ট্যান্ডার্ড একটি মান (অন্য কথায়, একটি স্পেসিফিকেশন)।

.NET ফ্রেমওয়ার্ক এবং .NET কোর দিয়ে আপনি একটি এক্সিকিউটেবল প্রজেক্ট (যেমন কনসোল অ্যাপ্লিকেশন, বা ASP.NET অ্যাপ্লিকেশন) তৈরি করতে পারেন, কিন্তু নেট স্ট্যান্ডার্ড দিয়ে নয়।

.NET স্ট্যান্ডার্ডের সাহায্যে আপনি কেবল একটি ক্লাস লাইব্রেরি প্রকল্প তৈরি করতে পারেন যা একক কার্যকর করা যায় না এবং অন্য। নেট কোর বা। নেট ফ্রেমওয়ার্ক এক্সিকিউটেবল প্রকল্প দ্বারা উল্লেখ করা উচিত।


20

আশা করি এটি .NET স্ট্যান্ডার্ড এপিআই পৃষ্ঠ এবং অন্যান্য নেট নেট প্ল্যাটফর্মগুলির মধ্যে সম্পর্ক বুঝতে সহায়তা করবে । প্রতিটি ইন্টারফেস একটি লক্ষ্য কাঠামোর প্রতিনিধিত্ব করে এবং পদ্ধতিগুলি সেই টার্গেট ফ্রেমওয়ার্কে উপলভ্য API এর গ্রুপগুলি উপস্থাপন করে।

namespace Analogy
{
  // .NET Standard

interface INetStandard10
{
    void Primitives();
    void Reflection();
    void Tasks();
    void Xml();
    void Collections();
    void Linq();
}

interface INetStandard11 : INetStandard10
{
    void ConcurrentCollections();
    void LinqParallel();
    void Compression();
    void HttpClient();
}

interface INetStandard12 : INetStandard11
{
    void ThreadingTimer();
}

interface INetStandard13 : INetStandard12
{
    //.NET Standard 1.3 specific APIs
}

// And so on ...


// .NET Framework 

interface INetFramework45 : INetStandard11
{
    void FileSystem();
    void Console();
    void ThreadPool();
    void Crypto();
    void WebSockets();
    void Process();
    void Drawing();
    void SystemWeb();
    void WPF();
    void WindowsForms();
    void WCF();
}

interface INetFramework451 : INetFramework45, INetStandard12
{
    // .NET Framework 4.5.1 specific APIs
}

interface INetFramework452 : INetFramework451, INetStandard12
{
    // .NET Framework 4.5.2 specific APIs
}

interface INetFramework46 : INetFramework452, INetStandard13
{
    // .NET Framework 4.6 specific APIs
}

interface INetFramework461 : INetFramework46, INetStandard14
{
    // .NET Framework 4.6.1 specific APIs
}

interface INetFramework462 : INetFramework461, INetStandard15
{
    // .NET Framework 4.6.2 specific APIs
}

// .NET Core
interface INetCoreApp10 : INetStandard15
{
    // TODO: .NET Core 1.0 specific APIs
}
// Windows Universal Platform
interface IWindowsUniversalPlatform : INetStandard13
{
    void GPS();
    void Xaml();
}

// Xamarin 
interface IXamarinIOS : INetStandard15
{
    void AppleAPIs();
}

interface IXamarinAndroid : INetStandard15
{
    void GoogleAPIs();
}    
// Future platform

interface ISomeFuturePlatform : INetStandard13
{
    // A future platform chooses to implement a specific .NET Standard version.
    // All libraries that target that version are instantly compatible with this new
    // platform
}
}

সূত্র


17

পার্থক্যটি ব্যাখ্যা করার আর একটি উপায় বাস্তব বিশ্বের উদাহরণগুলির সাথে হতে পারে, কারণ আমাদের বেশিরভাগ প্রাণীরা কাজটি করার জন্য বিদ্যমান সরঞ্জাম এবং ফ্রেমওয়ার্কগুলি (জ্যামারিন, ইউনিটি ইত্যাদি) ব্যবহার করবে।

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

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

.NET স্ট্যান্ডার্ডের সাথে আপনার কাছে আরও কম সরঞ্জাম রয়েছে তবে আপনি সমস্ত / বেশিরভাগ প্ল্যাটফর্মগুলিকে লক্ষ্য করতে পারেন। আপনি জামারিনের জন্য মোবাইলকে লক্ষ্য করে লক্ষ্য করতে পারেন এবং আপনি মনো / ইউনিটির জন্য গেম কনসোলকেও লক্ষ্য করে তুলতে পারেন। আপডেট: ইউএনও প্ল্যাটফর্ম এবং ব্লেজারের সাথে ওয়েব ক্লায়েন্টদের টার্গেট করাও সম্ভব (যদিও এই মুহুর্তে দু'জনই পরীক্ষামূলক)।

একটি আসল ওয়ার্ল্ড অ্যাপ্লিকেশনটিতে আপনার এগুলি সমস্ত ব্যবহারের প্রয়োজন হতে পারে। উদাহরণস্বরূপ, আমি বিক্রয় বিন্যাসের একটি অ্যাপ্লিকেশন তৈরি করেছি যার মধ্যে নিম্নলিখিত স্থাপত্য রয়েছে:

সার্ভার এবং ক্লায়েন্ট উভয়ই ভাগ করেছেন:

  • একটি। নেট স্ট্যান্ডার্ড লাইব্রেরি যা আমার অ্যাপ্লিকেশনগুলির মডেলগুলি পরিচালনা করে।
  • একটি। নেট স্ট্যান্ডার্ড গ্রন্থাগার যা ক্লায়েন্টদের দ্বারা প্রেরিত ডেটার বৈধতা পরিচালনা করে।

এটি একটি। নেট স্ট্যান্ডার্ড লাইব্রেরি হওয়ায় এটি অন্য কোনও প্রকল্পে (ক্লায়েন্ট এবং সার্ভার) ব্যবহার করা যেতে পারে।

.NET স্ট্যান্ডার্ড লাইব্রেরিতে বৈধতা পাওয়ার একটি দুর্দান্ত সুবিধা যেহেতু আমি নিশ্চিত হতে পারি যে একই বৈধতাটি সার্ভার এবং ক্লায়েন্টে প্রয়োগ করা হয়েছে। সার্ভার বাধ্যতামূলক, যখন ক্লায়েন্ট optionচ্ছিক এবং ট্র্যাফিক হ্রাস করতে দরকারী।

সার্ভার সাইড (ওয়েব এপিআই):

  • একটি। নেট স্ট্যান্ডার্ড (পাশাপাশি কোরও হতে পারে) লাইব্রেরি যা সমস্ত ডাটাবেস সংযোগগুলি পরিচালনা করে।

  • একটি। নেট কোর প্রকল্প যা রেস্ট এপিআই পরিচালনা করে এবং ডাটাবেস লাইব্রেরিটি ব্যবহার করে।

এটি .NET কোর-তে বিকাশিত হওয়ায়, আমি লিনাক্স সার্ভারে অ্যাপ্লিকেশনটি হোস্ট করতে পারি।

ক্লায়েন্ট সাইড (ডাব্লুপিএফ + জ্যামারিনের সাথে এমভিভিএম। অ্যান্ড্রয়েড / আইওএস):

  • একটি। নেট স্ট্যান্ডার্ড লাইব্রেরি যা ক্লায়েন্টের API সংযোগটি পরিচালনা করে।

  • একটি। নেট স্ট্যান্ডার্ড লাইব্রেরি যা ভিউমোডেলস লজিক পরিচালনা করে। সমস্ত দর্শন ব্যবহৃত।

  • একটি। নেট ফ্রেমওয়ার্ক ডাব্লুপিএফ অ্যাপ্লিকেশন যা উইন্ডোজ অ্যাপ্লিকেশনটির জন্য ডাব্লুপিএফ ভিউগুলি পরিচালনা করে। আপডেট: ডাব্লুপিএফ অ্যাপ্লিকেশনগুলি এখনই নেট কোর হতে পারে, যদিও বর্তমানে তারা কেবল উইন্ডোতে কাজ করে। অন্যান্য ডেস্কটপ প্ল্যাটফর্মের জন্য ডেস্কটপ জিইউআই অ্যাপ্লিকেশনগুলি তৈরি করার জন্য অ্যাভালনিয়া ইউআই একটি ভাল বিকল্প।

  • একটি। নেট স্ট্যান্ডার্ড লাইব্রেরি যা জামারিন ফর্মের ভিউগুলি পরিচালনা করে।

  • একটি জামারিন অ্যান্ড্রয়েড এবং জামারিন আইওএস প্রকল্প।

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


2
আমি মনে করি এটি একটি আরও ভাল উত্তর যেহেতু এটি বাস্তব-জগতকে অন্তর্ভুক্ত করে।
জে ওয়েজি

12

। নেট স্ট্যান্ডার্ড: এটিকে একটি বড় স্ট্যান্ডার্ড লাইব্রেরি হিসাবে ভাবেন। এটি নির্ভরতা হিসাবে ব্যবহার করার সময় আপনি কেবল লাইব্রেরি (.DLLs) তৈরি করতে পারেন, এক্সিকিউটেবল নয়। .NET স্ট্যান্ডার্ডকে নির্ভরতা হিসাবে তৈরি একটি লাইব্রেরি একটি Xamarin.Android, একটি Xamarin.iOS, একটি নেট কোর উইন্ডোজ / ওএস এক্স / লিনাক্স প্রকল্পে যুক্ত করা যেতে পারে।

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

এছাড়াও ইউডাব্লুপি এটি ব্যবহার করে এবং নতুন এএসপি.নেট কোরও এটি নির্ভরতা হিসাবে ব্যবহার করে।


8

.NET স্ট্যান্ডার্ডটি মূলত কোড ভাগ করে নেওয়ার উন্নতি করতে এবং প্রতিটি .NET প্রয়োগকে আরও ধারাবাহিকভাবে উপলব্ধ করে এপিআইগুলিকে উপলব্ধ করার জন্য exists

লাইব্রেরি তৈরি করার সময় আমাদের .NET স্ট্যান্ডার্ড 2.0 হিসাবে লক্ষ্য থাকতে পারে যাতে তৈরি করা গ্রন্থাগারটি .NET কোর, মনো , ইত্যাদি সহ .NET ফ্রেমওয়ার্কের বিভিন্ন সংস্করণের সাথে সামঞ্জস্য হয় would


2

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

প্রকল্পে আপনাকে। নেট ফ্রেমওয়ার্ক,। নেট কোর এবং। নেট স্ট্যান্ডার্ডের মধ্যে মিশ্রিত করতে হবে need উদাহরণস্বরূপ, আমরা যখন নেট নেট ১.০ দিয়ে সিস্টেমটি তৈরি করি তখন উইন্ডো সার্ভিসেস। নেট কোর সহ হোস্টিংয়ের কোনও সমর্থন নেই।

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

উপসংহার:

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

মাইক্রোসফ্ট সবেমাত্র ঘোষণা করেছে। নেট 5: https://devblogs.microsoft.com/dotnet/introducing-net-5/


@ জিগি দয়া করে আমার উত্তরটি মনোযোগ সহকারে পড়ুন, আমি বলেছিলাম যে এটি তখন ছিল 1.0 ASP.NET কোর উপরের 2.0 থেকে নেট ফ্রেমওয়ার্ক সমর্থন করে work আপনি যখন নেট ডেস্কটপ একাধিক সংস্করণ ব্যবহার করতে হবে তখন আমার উত্তরটি একটি গল্প। সুতরাং যখন আপনি পরিস্থিতিটি সঠিকভাবে বুঝতে পারবেন না তখন কেন আপনার ডাউন ডাউন রয়েছে তা আমি বুঝতে পারি না।
টুয়ান্ম

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

0

.NET ফ্রেমওয়ার্ক উইন্ডোজ ফর্ম, ASP.NET এবং WPF অ্যাপ্লিকেশন অবশ্যই .NET ফ্রেমওয়ার্ক লাইব্রেরি ব্যবহার করে বিকাশ করা উচিত

.NET স্ট্যান্ডার্ড জ্যামারিন, আইও এবং ম্যাক ওএসএক্স অ্যাপ্লিকেশন অবশ্যই। নেট স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে গ্রহন করতে হবে

.NET কোর
গ্রন্থাগার ব্যবহার করে নেট নেট ইউনিভার্সাল উইন্ডোজ প্ল্যাটফর্ম (ইউডাব্লুপি) এবং লিনাক্স অ্যাপ্লিকেশনটি বিকাশ করতে হবে। এআইপিআই সি ++ এ প্রয়োগ করা হয়েছে এবং আপনি সি ++, ভিবি.এনইটি, সি #, এফ # এবং জাভাস্ক্রিপ্ট ভাষা ব্যবহার করতে পারেন ET নেট


0

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


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