আমি ওআরএম মূল্যায়নের দিকে তাকিয়ে আছি।
আমি সাবসনিক , লিনাক -টু-এসকিউএল এবং সত্তা ফ্রেমওয়ার্ক ব্যবহার করেছি । আমার কাছে জুনিয়র থেকে সিনিয়রদের বিকাশকারীদের একটি দল রয়েছে।
NET- র জন্য একটি ORM মূল্যায়নের জন্য মাপদণ্ডগুলি কী কী?
আমি ওআরএম মূল্যায়নের দিকে তাকিয়ে আছি।
আমি সাবসনিক , লিনাক -টু-এসকিউএল এবং সত্তা ফ্রেমওয়ার্ক ব্যবহার করেছি । আমার কাছে জুনিয়র থেকে সিনিয়রদের বিকাশকারীদের একটি দল রয়েছে।
NET- র জন্য একটি ORM মূল্যায়নের জন্য মাপদণ্ডগুলি কী কী?
উত্তর:
এটি একটি বোঝা প্রশ্ন।
বিভিন্ন দর্শন দিয়ে এই বিষয়টির কাছে প্রচুর খুব ভাল ওআরএম রয়েছে।
কোনওটিই পুরোপুরি নিখুঁত নয় এবং আপনি তাদের সোনার পথ থেকে বিপথিত হওয়ার সাথে সাথেই সমস্ত জটিল হয়ে ওঠার ঝোঁক রয়েছে (এবং কখনও কখনও এমনকি আপনি যখন এটির সাথে আঁকড়ে থাকেন)।
একটি ORM নির্বাচন করার সময় আপনার নিজের কী জিজ্ঞাসা করা উচিত:
এটি আপনার জন্য কী করতে হবে?
আপনার কাছে যদি ইতিমধ্যে আপনার অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয়তার সেট থাকে তবে আপনার এমন একটি ওপেনটি নির্বাচন করা উচিত যা অনুমানকৃত 'সেরা' এর চেয়ে ভাল এর সাথে মেলে।
আপনার ডেটা ভাগ বা না শুধুমাত্র স্থানীয়?
ওআরএম-এ প্রচুর লোমশতা তৈরি হয় যখন তারা একাধিক ব্যবহারকারী একই ডেটার সংস্করণ ধারণ করে তখন কীভাবে সম্মতি এবং ডাটাবেসে ডেটা পরিবর্তন করে changes
যদি আপনার ডেটাস্টোর কোনও একক ব্যবহারকারীর জন্য হয় তবে বেশিরভাগ ওআরএম একটি ভাল কাজ করবে। তবে, একাধিক ব্যবহারকারীর দৃশ্যে নিজেকে কিছু শক্ত প্রশ্ন জিজ্ঞাসা করুন: লকিং কীভাবে পরিচালনা করা হয়? আমি যখন কোনও বস্তু মুছব তখন কী হবে? এটি অন্যান্য সম্পর্কিত বস্তুগুলিকে কীভাবে প্রভাবিত করে? কী ওআরএম ব্যাকএন্ডের ধাতবটির খুব কাছাকাছি কাজ করছে বা এটি প্রচুর ডেটা ক্যাশে করছে (বাসি হওয়ার ঝুঁকি বাড়িয়ে ব্যয় করে পারফরম্যান্স উন্নতি করছে)।
আপনার প্রকারের অ্যাপ্লিকেশনের জন্য কি ওআরএম ভালভাবে মানিয়ে নেওয়া হয়েছে? কোনও নির্দিষ্ট ORM এর সাথে কাজ করা কঠিন হতে পারে (প্রচুর পারফরম্যান্স ওভারহেড, কোড করা কঠিন) যদি এটি কোনও পরিষেবাতে ব্যবহৃত হয় বা কোনও ওয়েব অ্যাপের ভিতরে বসে থাকে sitting বিপরীতে এটি ডেস্কটপ অ্যাপ্লিকেশনগুলির জন্য দুর্দান্ত হতে পারে।
আপনার কি ডেটাবেস-নির্দিষ্ট বর্ধন ত্যাগ করতে হবে?
ORM গুলি এসকিউএল-এর সর্বনিম্ন-সাধারণ ডিনমিনেটর সেট ব্যবহার করে যাতে তারা প্রচুর বিভিন্ন ডাটাবেস ব্যাকএন্ডের সাথে কাজ করে তা নিশ্চিত করে।
সমস্ত ওআরএম উপলব্ধ বৈশিষ্ট্যগুলির সাথে আপস করবে (যদি না তারা নির্দিষ্টভাবে একটি একক ব্যাকএন্ডকে লক্ষ্য করে) তবে কিছু আপনাকে আপনার নির্বাচিত ব্যাকএন্ডে উপলভ্য নির্দিষ্ট বর্ধনগুলি কাজে লাগানোর জন্য অতিরিক্ত আচরণ বাস্তবায়নের অনুমতি দেবে allow
একটি সাধারণ ডিবি-নির্দিষ্ট বর্ধন উদাহরণস্বরূপ ফুল-পাঠ্য অনুসন্ধানের ক্ষমতা; আপনার ওআরএম এই বৈশিষ্ট্যগুলি অ্যাক্সেস করার একটি উপায় আপনাকে সরবরাহ করার প্রয়োজন তা নিশ্চিত করুন।
কীভাবে ওআরএম ডেটা মডেলটিতে পরিবর্তনগুলি পরিচালনা করে?
কেউ কেউ একটি নির্দিষ্ট পরিমাপের মধ্যে স্বয়ংক্রিয়ভাবে ডিবি আপডেট করতে পারে, অন্যরা কিছু না করে এবং আপনাকে নিজেই নোংরা কাজটি করতে হবে; অন্যান্য পরিবর্তন পরিচালনার জন্য একটি কাঠামো সরবরাহ করে যা আপনাকে ডাটাবেস আপডেটগুলি নিয়ন্ত্রণ করতে দেয়।
আপনার আবেদনটি ওআরএম এর অবজেক্টগুলিতে জোড়া দেওয়ার বিষয়ে আপনার মন আছে কি না আপনি POCOs এবং ব্যবহারকারীকে অধ্যবসায়ের জন্য একটি অ্যাডাপ্টার পরিচালনা করতে পছন্দ করেন?
প্রাক্তনটি হ্যান্ডেল করার জন্য সাধারণত সহজ তবে আপনার ওআরএম-নির্দিষ্ট ডেটা অবজেক্টের উপর সর্বত্র নির্ভরতা তৈরি করে, আরও কিছুটা কোডের ব্যয় করে পরেরটি আরও নমনীয়।
আপনি কি কখনও কখনও আপনার বস্তুগুলি দূরবর্তী স্থানান্তর করতে হবে?
দূরবর্তী সার্ভার থেকে জিনিসগুলি আনার ক্ষেত্রে সমস্ত ওআরএম সমান হয় না, কী করা সম্ভব বা অসম্ভব তা নিবিড়ভাবে দেখুন। কিছু দক্ষ, অন্যরা না।
এমন কি কেউ আছেন যে আপনি সাহায্যের জন্য যেতে পারেন?
ভাল বাণিজ্যিক সমর্থন আছে? প্রকল্পটির চারপাশের সম্প্রদায়টি কত বড় এবং সক্রিয়?
বিদ্যমান ব্যবহারকারীদের পণ্যটির সাথে কী সমস্যা রয়েছে?
তারা কি দ্রুত সমাধান পান?
আমি যে কয়েকটি ORM গুলি দেখেছি:
অবশ্যই অনেক অন্যান্য আছে।
বিতর্কিত সাইট ওআরএম যুদ্ধের দিকে আপনি কিছু নজর রাখতে পারেন যা কিছু পারফরম্যান্স মানদণ্ডকে তালিকাভুক্ত করে, যদিও আপনাকে সচেতন থাকতে হবে যে কাঁচা গতি আপনার প্রকল্পের জন্য সবচেয়ে গুরুত্বপূর্ণ বিষয় নয় এবং ওয়েবসাইটটির প্রযোজকরা ডেটাঅবজেক্ট.নেট।
আমি এনএইচবারনেট ব্যবহার করছি এবং এটি বেশ ভাল পেয়েছি।
আমার ক্ষেত্রে, একটি এমএস এসকিএল ডাটাবেসের সাথে লিঙ্কযুক্ত, তবে আপনি অন্যান্য ডাটাবেসের সাথে সংযোগ করতে পারেন।
উঠতে এবং দৌড়াতে খুব বেশি সময় লাগে না - কেবল আপনার বস্তুকে মডেলটিতে মানচিত্র করুন - আমি একটি এক্সএমএল ফাইল ব্যবহার করি তবে আপনি কোডটিতে সাবলীলভাবে এটি করতে পারেন। এখানে একটি দুর্দান্ত সম্প্রদায় রয়েছে এবং ব্যক্তিগতভাবে আমি আইয়েন্দির কাজকে খুব সহায়ক বলে খুঁজে পেয়েছি - আমি এনএইচপি প্রফ ব্যবহার করি যা একটি স্কাইল প্রোফাইলিংয়ের সরঞ্জাম।
আমি বেশিরভাগ বাক্সের বাইরে ফাংশনগুলি ব্যবহার করি - স্ট্রেজ অবজেক্ট ম্যাপিং, তবে আমি হাইবারনেট ক্যোয়ারী ল্যাঙ্গুয়েজও ব্যবহার করেছি, যা ধরে রাখা খুব সহজ।
দুঃখের বিষয়, আমার শেষ তিনটি চাকরিতে আমাদের তিনটি বাড়ির ওআরএম ছিল। প্রতিটি ক্ষেত্রেই তারা বেশিরভাগ ক্ষেত্রে বিভিন্ন কারণে চুষে থাকে।
আমি সম্প্রতি সত্ত্বা ফ্রেমওয়ার্ক 4 এবং এর পোকো সমর্থন মূল্যায়ন করেছি (একটি সুন্দর ওয়াকথ্রু এখানে রয়েছে ) এবং এটি আমার মুখ থেকে দূরে থেকে কীভাবে সুন্দরভাবে দেখে আমি মুগ্ধ হয়েছি এবং ডেটা হার্ডিংয়ের পরিবর্তে আমি আবার প্রোগ্রামিংয়ের মতো বোধ করি।
আমি লিনক থেকে স্কেল অনেক পছন্দ করি। এটি সহজ এবং একটি শালীন ডিজাইনার রয়েছে। তবে আমি আশা করি এটি জীবনের শেষ সত্তা এন্টি কাঠামোর পক্ষে। আমি জেনারেটরগুলি সংশোধন করার ক্ষমতাটি কাজে লাগাতে সক্ষম হতে চাই যাতে আমার পছন্দসই বস্তু থাকতে পারে।
এগুলি অন্যের উপর যে সবচেয়ে বেশি সুবিধা লাভ করে (আমার মতে) তা হ'ল তারা ভিএস সহ বাক্সের বাইরে are এটি এমএসের নেতিবাচক অবস্থাতেও একটি নেতিবাচক কারণ (লিনক থেকে স্কিলের দিকে দেখুন)।
[অস্বীকৃতি: আমি ডেভ এক্সপ্রেসের জন্য কাজ করি]
আপনি এখানে ডিভ এক্সপ্রেস অ্যাপ্লিকেশন ফ্রেমওয়ার্কগুলির দ্বারা তৈরি সাধারণ অ্যাপ্লিকেশনগুলির স্ক্রিনশটগুলি দেখতে পারেন । এই পৃষ্ঠাতে আমাদের পণ্যগুলির একটি খুব সংক্ষিপ্ত পর্যালোচনাও রয়েছে। কেন আরও বিশদ তথ্যের জন্য , আমি আপনাকে আমাদের ওয়েবসাইটে সম্পর্কিত পণ্য পৃষ্ঠা পরীক্ষা করে নেওয়ার পরামর্শ দিই।
ডিভ এক্সপ্রেস এক্সএএফ এবং এক্সপিও হিসাবে, কেন আমাদের অ্যাপ্লিকেশন ফ্রেমওয়ার্কগুলি চয়ন করতে হবে সে সম্পর্কে এখানে একটি ভাল ব্যাখ্যা। এছাড়াও, আমরা সমর্থন এবং ডকুমেন্টেশন সরবরাহ করি, এটিও গুরুত্বপূর্ণ এবং উল্লেখযোগ্য। কোন প্রশ্ন থাকলে আমাদের সাথে নির্দ্বিধায় যোগাযোগ করুন।
আমরা ছোট প্রকল্পগুলিতে লিনক-টু-এসকিএল সহ এনএইচবারনেট + ফ্লুয়েট এনহাইবারনেট ব্যবহার করি। এর কারণ:
1) (প্রাথমিক কারণ নয়) এনহাইবারনেট বিকাশকারীদের মধ্যে একটি "সম্মান" ফ্যাক্টর বলে মনে হচ্ছে (এটি কি সত্য?),
2) লিনাক-টু-এসকিউএল এর তুলনায়, হাইবারনেট ডিবি অবজেক্ট এবং সত্তার মধ্যে ওআরএম ম্যাপিংকে অনুমতি দেয় যা 1-থেকে -1 মানচিত্র করে না,
3) আমরা এনহাইবারনেটকে সত্তা ফ্রেমওয়ার্ক 4.0 এর সাথে ব্যাপকভাবে তুলনা করি নি তবে এখানে একটি ভাল তুলনা করা হয়েছে: http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx
n হাইবারনেটের কিছুটা খাড়া শেখার বক্ররেখা রয়েছে এবং এর এক্সএমএল মানচিত্রগুলি বেশ ভার্জোজ হতে পারে তবে ফ্লুয়েট নিবারনেট সাইটের ডকুমেন্টেশন দিয়ে শুরু করুন এবং আপনার পথে পিছনের দিকে কাজ করুন।
একটি "সেরা" ওআরএম কাঠামো নেই কারণ তাদের সকলের শক্তি এবং দুর্বলতার বিভিন্ন সংমিশ্রণ রয়েছে এবং এটি এমন হয়ে যায় যে যদি বিকাশকারীরা একটি অঞ্চলকে আরও উন্নত করতে মনোনিবেশ করতে বেছে নেন তবে তুলনামূলকভাবে ক্ষতিগ্রস্থ এমন অন্যান্য অঞ্চলও রয়েছে (কোড প্রথম বনাম) মডেল প্রথম বনাম ডাটাবেস প্রথম)।
অন্যদিকে, বেশ কয়েকটি খুব ভাল একটি রয়েছে যাগুলির মধ্যে কিছু আপনার ব্যক্তিগত পরিস্থিতি এবং দর্শনের সাথে অন্যের চেয়ে ভাল মিলবে ।
সম্পাদনা: এটির মূল্যের জন্য, আমি বর্তমানে এসকিউএল-তে লিনক ব্যবহার করছি - বেশিরভাগ কারণ এটি সেখানে রয়েছে যদিও এটি ন্যূনতম প্রয়াসের জন্য অনেকটা সঠিকভাবে কাজ করেছে এবং সম্ভবত এটি "কারণ সেখানে" আবার প্রতিষ্ঠানের কাঠামোতে অগ্রসর হবে (যদিও একইভাবে সেখানেও রয়েছে) EF4 সম্পর্কে অনেক কিছুই ঠিক সেইসাথে কিছু জিনিস যা ভুল। উদ্বেগ, বিশেষ করে পরেরটির সাথে, পারফরম্যান্স হতে হবে তবে আমার বেশিরভাগ ক্ষেত্রে এটি কোনও বিশাল সমস্যা নয় এবং মডেলগুলি (এল 2 এস এবং ইএফ) থেকে ডায়নামিক ডেটা এবং ওডাটা চালানোর ক্ষমতাটি আমার পক্ষে যথেষ্ট উপকার পেয়েছে " সস্তা "জয়।
আমি আপনাকে ডেভ এক্সপ্রেস এক্সপিওতে একবার দেখার পরামর্শ দেব । এটি ডিভএক্সপ্রেস এক্সএএফ এর সাথে সাথে কোনও বিকাশকারীদের শেখার বক্ররেখাটি অতিক্রম করার পরে জীবনকে সহজ করে তুলবে।
সত্তা ফ্রেমওয়ার্কের সাথে আমাদের ভাগ্য ভাল। আমাদের পরিস্থিতি কিছুটা অস্বাভাবিক, যদিও - আমরা প্রতিবেদক দলের জন্য ডেটা সংগ্রহ করি, তাই তারা আসলে ডেটাবেস ডিজাইন করে। আমরা ডিবি পেয়েছি এবং এরপরে এটি থেকে ডেটা অ্যাক্সেস ক্লাস তৈরি করতে কেবল EF ব্যবহার করি। আমাদের জন্য দুর্দান্ত কাজ করে, তবে আমরা কেবল বাল্ক ডেটা বোঝাই করি, সুতরাং এটি আরও লেনদেনের পরিবেশে এটি কতটা ভাল করে তা আমি প্রমাণ করতে পারি না।
NHibernate (+ FluentNHibernate) আমার জন্য ডিফল্ট বিকল্প হবে। এটি খুব নমনীয়, এক্সটেনসিবল এবং মজবুত। এটি প্রচুর পরিমাণে ব্যবহারকারী পেয়েছে এবং এটি খুব সক্রিয়ভাবে বজায় রয়েছে। খারাপ দিকটি খাড়া শেখার বক্ররেখা cur
মাইন্ডস্কেপের লাইটস্পিড সহজ এবং ব্যবহারকারী বান্ধব, তবে এখনও বেশ নমনীয় এবং সক্ষম। এটিতে এল 2 এস / ইএফ এবং ইউনিটঅফ ওয়ার্ক বাস্তবায়নের মতো ডিজাইনার পৃষ্ঠ রয়েছে।
ঠিক আছে, কোনও "সেরা" পছন্দ নেই তবে আমি বলব যে নিয়মিত পুরাতন লিনাক থেকে এসকিউএল আপনার প্রয়োজনগুলি পূরণ করে। এটি প্রতি "সত্য" ওআরএম নয়, তবে এটি খুব লাইটওয়েট এবং যদি আপনার জ্ঞান হয় তবে এটি সম্পর্কে অবগত না হয়ে কোড লেখার নমনীয়তা দেয়। আমার অর্থ হ'ল আপনি dbml
ফাইল (গুলি) ব্যতীত অন্য কোনও লিঙ্ক সম্পর্কে সচেতন না হয়েই স্বাভাবিক হিসাবে কোড লেখা শুরু করতে পারেন । আপনি এখনও এটিতে রেপোজিটরি বা গেটওয়ে নিদর্শনগুলি ব্যবহার করে বিমূর্ততা লিখতে পারেন এবং এল 2 এস একটি ওআরএম-এর মূল ভূমিকাটি পূরণ করে যা অবজেক্ট-রিলেশনাল মিসম্যাচটিকে ঘিরে।
সত্তা ফ্রেমওয়ার্কটি কিছুটা ভারী, এবং আমি এটির সাথে সামান্য কিছুটা ছড়িয়ে দিয়েছি যদিও এটি বেসিক লিনক থেকে সিক্যালেয়ের চেয়ে বেশি "আপনার মুখে" তবে EF লিনকের চেয়ে সত্যিকারের ওআরএম এর চেয়ে অনেক বেশি। আপনি কোনও ORM- এ অনুসন্ধান করছেন এমন সমস্ত মানদণ্ডটি আমি দেখতে চাই। এটি কেবল যে কারণে আপনি কাঁচা এসকিউএল লিখতে না চান বা আরও খারাপ, শত শত সঞ্চিত পদ্ধতি আছে? আপনার কি এমন কিছু অতিরিক্ত বৈশিষ্ট্য দরকার যা কাঁচা লিনক থেকে এসকিএল সরবরাহ করতে পারে না? আপনাকে এই প্রশ্নের উত্তর দিতে হবে, তবে আপনার সংক্ষিপ্ত প্রয়োজনীয়তার উপর ভিত্তি করে ("হালকা ওজনের এবং সহজেই ব্যবহারযোগ্য") আমার ধারণা লিনক সাবসোনিকের মতো কিছুটা সহজ এবং ভিজ্যুয়াল স্টুডিওতে অন্তর্নির্মিত।