ডিআই এর জন্য নিনজ বনাম ইউনিটি [বন্ধ]


104

আমরা এএসপিএনটি এমভিসি ব্যবহার করছি।

এর মধ্যে কোনটি সেরা ডিআই ফ্রেমওয়ার্ক নিনজেক্ট বা ityক্য এবং কেন?


94
এন ইনজেক্ট আরও ভাল কারণ আপনি তাদের ওয়েবসাইট থেকে শীতল ব্র্যান্ডের চৌম্বক কিনতে পারেন।
ইভান জি।

5
এই প্রশ্নের আপডেট সংস্করণ (যাই হোক না কেন খুব অনুরূপ) যা কিছু লোক দরকারী খুঁজে পেতে পারে: স্ট্যাকওভারফ্লো
জেসন ডাউন

উত্তর:


46

গতবার আমি তাদের দুজনের দিকে তাকিয়ে দেখলাম নিনজেক্ট কিছুটা ভাল। তবে দুজনেরই ত্রুটি রয়েছে।

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

যদি আমি জিজ্ঞাসা করতে পারি, আপনি কেন এই দুটিতে আপনার পছন্দ সীমাবদ্ধ করছেন? আমি মনে করি ক্যাসেল.উইন্ডসোর, অটোফ্যাক এবং স্ট্রাকচারম্যাপ কমপক্ষে হিসাবে ভাল বা আরও ভাল।


47
একাধিক কনস্ট্রাক্টর থাকলে আপনাকে কেবল ইনজেক্ট অ্যাট্রিবিউটটি ব্যবহার করতে হবে এবং কোন কনস্ট্রাক্টর ব্যবহার করতে হবে তা আপনাকে নিিনজেক্টকে বলতে হবে। ডিফল্টরূপে এটি সর্বাধিক সংখ্যক পরামিতিগুলির সাথে কনস্ট্রাক্টর ব্যবহার করে।
জেফ্রি ক্যামেরন

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

18
এই উত্তরটি এখন নিনজেট ২-এর সাথে রিগ্রার্ডের সাথে বেশ অপ্রাসঙ্গিক Nin ninject2 আপনার ক্লাসগুলি সংশোধন করার প্রয়োজন ছাড়াই স্বচ্ছভাবে পরিচালনা করবে।
চিলিটম

3
এই পয়েন্টে (v3.0.1304.1) কোডের মাধ্যমে এটি সম্পূর্ণরূপে কনফিগারযোগ্য হিসাবে উপস্থিত হওয়ার কারণে একতার পক্ষেও একইভাবে
এরিক

46

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে এখানে আমার চিন্তাভাবনাগুলি:

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

আমি স্ট্রাকচারম্যাপের অবজেক্টফ্যাক্টরিটি মিস করছি, তবে এটিকে নিনেক্টে যুক্ত করার জন্য সহজ ওয়ার্কআরউন্ডস রয়েছে।

জেফারি যেমন উল্লেখ করেছে যে আপনার কেবলমাত্র একজন নির্মাণকারী থাকলে আপনাকে [ইনজেক্ট] বৈশিষ্ট্যটি ব্যবহার করতে হবে না।

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


10

ইনজেকশন কৌশলটি নির্বিশেষে যে ইনজেকশন কৌশলটি কেবল স্ট্যাকওভারফ্লো এক্সেক্সেশন ছুড়ে দেয় যা ডিবাগ করা অত্যন্ত কঠিন এটি যদি আপনি ইনজেকশন কনস্ট্রাক্টর ব্যবহার করেন তবে নিনজেক্ট বিজ্ঞপ্তি নির্ভরতা সনাক্ত করে।


9

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

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

<type type="ILogger" mapTo="EntLibLogger">
   <lifetime type="singleton"/>
</type>

এবং কোডে:

[InjectionConstructor]
public Repository([Dependency] ILogger logger)

ব্যক্তিগতভাবে আমি মনে করি এটি যা ঘটে তা পরিষ্কার করে তোলে, তবে অবশ্যই একটি যুক্তি দিতে পারে যে আপনার সমস্ত প্রয়োগের ক্ষেত্রে আপনার unityক্যের উল্লেখ থাকবে। এটা আপনার উপর নির্ভর করছে.


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