আমাদের সত্ত্বা ফ্রেমওয়ার্ক ব্যবহার করা উচিত?


31

আমাদের কাছে বর্তমানে নিম্নলিখিত স্ট্যাক রয়েছে:

  • ভিএস 2005
  • ওয়েব ফর্ম
  • এসকিউএল সার্ভার 2005
  • আইআইএস 6

আমরা এটিতে স্থানান্তরিত করার পরিকল্পনা করছি:

  • ভিএস 2010
  • এমভিসি এবং ওয়েব ফর্ম
  • এসকিউএল সার্ভার ২০০৮
  • আইআইএস 7

আমার প্রশ্ন হচ্ছে, যখন আমরা বনাম 2010 সঙ্গে MVC সরাতে, আমরা সত্তা ফ্রেমওয়ার্ক (অথবা অন্য ORM), একটি মাইক্রো ORM (যেমন ব্যবহার করা উচিত বৃহদায়তন ), অথবা শুধু সাধারণ এসকিউএল?

ভিএস ২০১০ সম্পর্কে আমি যে সমস্ত টিউটোরিয়াল পড়েছি সেগুলি সমস্ত তথ্য লেনদেনের জন্য সত্তা ফ্রেমওয়ার্ক ব্যবহারের দিকে তত্পর হয়, তবে এটি কি অদূর ভবিষ্যতের (5+ বছর) ধরে চলেছে?

যদি এটি গুরুত্বপূর্ণ হয় তবে আমাদের ক্লায়েন্টের অ্যাপ্লিকেশনগুলিতে 10 - 1000 সক্রিয় ব্যবহারকারীগণ যে কোনও জায়গা থেকে থাকতে পারে।


আপনি কি বর্তমানে লিঙ্ক-টু-এসকিউএল ব্যবহার করছেন?
মরগান হের্লোকার

আমরা প্যারামিটারাইজড এসকিউএল
গুয়ানোম

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

2
নতুন বা বিদ্যমান ডাটাবেস? EF এর কনভেনশনগুলি মাথায় রেখে একটি নতুন ডিবি তৈরি করার এবং ওআরএমগুলির জন্য নির্মিত হয়নি এমন একটি বিদ্যমান ডিবি-র শীর্ষে EF পুনঃনির্মাণের চেষ্টা করার মধ্যে সম্ভাব্য সম্ভাবনা রয়েছে।
rmac

@rmac এটি একটি নতুন ডাটাবেসের জন্য ছিল।
গুয়ানোম

উত্তর:


45

আমি সম্প্রতি ইএফ ব্যবহার করে ইন-লাইন এসকিউএল কোয়েরিগুলি ব্যবহার করা থেকে সরিয়েছি এবং আমি যা পেয়েছি তা এখানে:

পেশাদাররা

  • ডালটি তৈরি করতে আরও দ্রুত (এসকিউএল কোয়েরিগুলি লিখতে পছন্দ করেন না!)
  • বজায় রাখা অনেক সহজ
  • ইন-লাইন এসকিএল স্টেটমেন্টটি তৈরি করার আগে আমার ইনপুটটি পার্স করার দরকার নেই, যার অর্থ এসকিউএল ইঞ্জেকশন আক্রমণের সম্ভাবনা কম (অবশ্যই এটি আপনার প্রশ্নের উপর নির্ভর করে এখনও সম্ভব, তবে সম্ভাবনা অনেক কম)

কনস

  • একাধিক ডাটাবেস স্প্যান করা যায় না ... কমপক্ষে সহজেই হয় না
  • সমস্ত সত্তা (টেবিল, দর্শন, ইত্যাদি) একটি প্রাথমিক কী প্রয়োজন
  • আপনি যদি 100+ প্রয়োজনীয় কলামগুলির টেবিলটিতে (আমার সারণীর নকশা নয়) একক কলাম আপডেট করতে চান তবে আপনাকে আপডেটটি করতে সমস্ত 100 কলাম নীচে টানতে হবে। অথবা একটি সঞ্চিত পদ্ধতি ব্যবহার করুন।
  • এসকিউএল সার্ভারে একটি নতুন রেকর্ড যুক্ত হওয়ার পরে সত্তা মডেলটিতে টানা না যাওয়ার জন্য সংজ্ঞায়িত কিছু ডিফল্ট মান নিয়ে আমার সমস্যা হয়েছিল। সাধারণত এটি গণিত মানগুলি বা একটি INSERT ট্রিগারটিতে যুক্ত হওয়া মানগুলির সাথে থাকে
  • উপলক্ষে, এসকিউএল কোয়েরিগুলি খারাপভাবে লেখা হয় এবং কার্যকর করতে ধীর হয়। আপনার যদি ধীর-চলমান ক্যোয়ারী থাকে তবে EF কী করছে তা দেখতে একটি এসকিউএল ট্রেস চালান run আপনি এসপি বা ভিউ হিসাবে সেই ক্যোয়ারীটি পুনরায় কাজ করতে পারবেন এটি সম্ভব। যদিও এটি প্রায়শই ঘটে না।
  • SQL সার্ভারে কোনও বিদেশী কী সংজ্ঞায়িত না করা টেবিলগুলির মধ্যে একটি সমিতি তৈরি করার চেষ্টা করার সাথে আমার কয়েকটি সমস্যা হয়েছিল। সাধারণত এটি কারণ আমি এমন একটি 1:0-1সম্পর্ক তৈরি করার চেষ্টা করছি যেখানে EF একটি ব্যবহার করতে চায়1:0-*

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


7
বিস্তারিত এবং সংগঠিত উত্তরের জন্য +1। "সমস্ত সত্তা (টেবিল, দর্শন, ইত্যাদি) একটি প্রাথমিক কী প্রয়োজন" শোনার পরিবর্তে যুক্তিসঙ্গত বাধা বলে মনে হয়।
NoChance

2
@ এমদাদকরিম এটি আপনার কাছে যদি আপনার ডাটাবেসের উপর নিয়ন্ত্রণ থাকে তবে এটি একটি নিষেধাজ্ঞান, তবে আপনি যদি কোনও তৃতীয় পক্ষের ডেটাবেস, বা মতামত নিয়ে কাজ করছেন তবে এটি কিছুটা বিরক্তিকর হতে পারে
রাচেল

1
কেবল একটি সংযোগ বিচ্ছিন্ন এন-টিয়ার ওয়েব অ্যাপ্লিকেশন এএফ ব্যবহার করার চেষ্টা করুন - একটি সেশনে সত্তা ও এমএম সম্পর্কের সত্তা আপডেট করে, হুঁ মমমম কী মজা!
ভিডার

5
ইমাদকরিম সংস্থাগুলি সত্যই একটি একক মূল্যবান প্রাথমিক কী প্রয়োজন - সংমিশ্রিত কীগুলি ব্যবহার করা EF এর একটি দুঃস্বপ্ন। এটি যুক্তিসঙ্গত বিধিনিষেধের চেয়ে কম con
কर्क ব্রডহર્স্ট

1
আমি বলব সুরক্ষা আর একটি সমস্যা। অনেকে মনে করেন যে সমস্ত ডিবি অ্যাক্সেসের জন্য প্রোক্সের সাথে সম্পর্কিত ডিবি রোলগুলির সাথে সঞ্চিত প্রক্রিয়াটি অতিক্রম করা উচিত যা লগইনগুলি কী স্টোর করা প্রক্সগুলি কার্যকর করতে পারে তা নির্ধারণ করতে। এটি কোয়েরি তৈরির জন্য ইএফ / লিনকিউকে বিযুক্ত করে। আমি EF ব্যবহার করেছি তবে ক্লায়েন্টদের ( কাশি মাইক্রোসফ্ট) জুড়ে এসেছি যাদের সুরক্ষার এই প্রয়োজনীয়তাগুলি ছিল
মিক

12

সত্তা ফ্রেমওয়ার্ক একটি উত্পাদনশীলতা সরঞ্জাম। (EG আপনি এসকিউএল 2000 এ রয়েছেন বা প্রযুক্তিতে র‌্যাম্প করার সময় নেই) না দেওয়ার উপযুক্ত কারণ যদি না থাকে তবে আপনার নিষ্পত্তির সেরা সরঞ্জামগুলি ব্যবহার করুন।

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

সত্তা ফ্রেমওয়ার্ক সক্রিয়ভাবে মাইক্রোসফ্ট দ্বারা সমর্থিত। "সমর্থনটি এক্স বছর ধরে চলবে" বলতে কারও কাছেই ম্যাজিক স্ফটিক বল নেই। আমি বিশ্বাস করার কোনও কারণ দেখছি না যে আগামী 5 বছরের মধ্যে সত্তা মারা যাবে।


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

3
স্লোমোজো, আপনার 'ডেড' শব্দের বিশ্বজুড়ে আলাদা ধারণা থাকতে পারে। কারণ লিনকটোসকিএল এখন সক্রিয়ভাবে আর বিকাশ করা হচ্ছে না। আপনি এখন থেকে 10-20 বছর পরেও এটি ব্যবহার করতে সক্ষম হবেন।
বরিস ইয়াঙ্কভ

4

আর একটি সম্ভাব্য সমাধান হ'ল একটি বিকল্প অ্যান্টি ফ্রেমওয়ার্ক লাইব্রেরি যা ভিএস সরবরাহ করে না তা ব্যবহার করা ওয়েবে সেখানে কয়েকটি রয়েছে।

মাইক্রোসফ্ট নিজস্ব "অফিসিয়াল" কাঠামো প্রকাশের আগে অ্যান্টিটি / 3 লেয়ার ফ্রেমওয়ার্ক ধারণাটি কিছুদিনের জন্য ছিল এবং অন্যান্য বিকাশকারীদের মতো বিভিন্ন কাস্টম লাইব্রেরিতে কাজ করেছে।

পেশাদাররা

মাইক্রোসফ্ট ধ্রুবক লাইব্রেরি / কাঠামোর পরিবর্তনের সাথে আটকে না থাকলে সত্তা (ডাল) কাঠামোর সুবিধা পান।

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

কনস

লাইব্রেরি বা সরঞ্জামগুলি সমর্থন করতে হবে। এনিটিগুলি উত্পন্ন করার জন্য একটি সত্তা জেনারেটর কোড সরঞ্জাম পাওয়া খুব সাধারণ।


আমি এই উত্তর খুব বিভ্রান্ত মনে। মাইক্রোসফ্ট উত্পাদিত একমাত্র সত্তা ফ্রেমওয়ার্ক (মূলধন অক্ষর সহ) আছে। আপনার অর্থ কি "অন্য অবজেক্ট রিলেশনাল ম্যাপার ব্যবহার করুন"? সত্তা ফ্রেমওয়ার্ক একটি জেনেরিক শব্দ নয় - এটি মাইক্রোসফ্টের ওআরএম এর নাম।
নিক 19

এখানে একটি "মাইক্রোসফ্ট সত্তা ফ্রেমওয়ার্ক" রয়েছে, "সত্তা ফ্রেমওয়ার্ক" ধারণাটি বেশ কয়েক বছর ধরে রয়েছে।
uMLcat

3

সমস্যা এবং বিদ্যমান সমাধানের ভিত্তিতে আপনাকে একটি স্থপতি সিদ্ধান্ত নিতে হবে। যে কোনও প্রযুক্তির মতো রয়েছে সুবিধা এবং অসুবিধাও।

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


3
ওয়ার্কিং কোডটি আবার না লিখে সুপারিশ করার জন্য +1।
NoChance

2

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

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

একটি ORM ব্যবহার সম্পর্কে আপনাকে শিখতে হবে এমন অনেকগুলি বিষয় রয়েছে।

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

বিবেচনা করার বিষয়গুলি

  • ট্রিগার এবং ওআরএম একসাথে কাজ করে না, পরিবর্তে ORM ইভেন্টগুলি ব্যবহার করুন।
  • আপনার সমস্ত টেবিলের প্রিমি কী রয়েছে তা নিশ্চিত করুন।

আপনার কাছে বিদ্যমান ডাটাবেস থাকলেও আমি কোডটি প্রথম পদ্ধতির পক্ষে অত্যন্ত সুপারিশ করব।

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