.NET প্রোগ্রামিং এবং POCO ক্লাস


9

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

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

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

উত্তর:


9

ওয়াইয়াট যেমন বলেছিলেন, পোকো এবং পোগো কোনওভাবেই কোনও পদ্ধতি বোঝায় না। আমি মনে করি যে এটি নন-পোকো এবং নন-পোগো কী তা না জেনে থেকে শুরু হয়েছে।

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

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

সুতরাং পোকো পদ্ধতিগুলির অস্তিত্ব সম্পর্কে আপনার ধারণা ভুল। পোকো তার দৃistence়তা প্রযুক্তি থেকে বিচ্ছিন্নভাবে মডেলটি ব্যবহার করতে সক্ষম হতে চলেছে।

আপনি যে বিষয়ে কথা বলছেন তা সম্ভবত অ্যানেমিক ডোমেন মডেল বনাম যথাযথ ডোমেন মডেল বন্ধ হয়ে যায় ।


আপনি ঠিক বলেছেন, এনেমিক ডোমেন মডেলটি নিবন্ধটি পড়ার মতো দেখায়।
জেমস

4

পোকো কোনওভাবেই বোঝায় না যে সেখানে কোনও পদ্ধতি নেই - যদিও বেশিরভাগ উদাহরণে দেখা যায় যে অনেকগুলি এমভিসি অটো বন্ডিং বৈশিষ্ট্যগুলি ব্যবহার করে যা মূলত বৈশিষ্ট্যগুলি নিয়ে কাজ করে এবং পদ্ধতিগুলি উপেক্ষা করে।

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


অঁ্যা? পোকো সম্পূর্ণরূপে আমার অভিজ্ঞতার কোনও পদ্ধতি বোঝায় না - অন্যথায় এটি কোনও সত্তা বা মডেল বা ভিউ মডেল ব্যবহারের উপর নির্ভর করে।
টেলাস্টিন

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

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


0

আমি ইদানীং এর মতো স্টাফগুলির জন্য এক্সটেনশন পদ্ধতিগুলি ব্যবহার করছি ।

পোকোতে যুক্তি রয়েছে যা কেবলমাত্র বস্তুর জন্যই বোধগম্য। ব্যবসায় যুক্তি বা সমন্বিত বস্তুর যুক্তি একটি বিএল এক্সটেনশনে যায়। ডেটা অ্যাক্সেস ডেটা অ্যাক্সেস স্তর বা ডেটা অ্যাক্সেস এক্সটেনশনে যেতে পারে।

namespace MyApp
{
    public class MyClass
    {
        public string id;
        public string name;
        public int quantity;
        public decimal price;
    }   
}

namespace MyAppBL
{
    public static class MyClassBL
    {
        public static decimal PriceInCart(this MyClass myObject)
        {
            return myObject.quantity > 10 ? myObject.price * 0.9m : myObject.price;
        }
    }
}

namespace MyAppDA
{
    public static class MyClassDA
    {
        public static void Create()
        {
            …
        }

        public static void Read(string myObject)
        {
            …
        }

        public static void Update(this MyClass myObject)
        {
            …
        }

        public static void Delete(this MyClass myObject)
        {
            …
        }
    }
}

এটি আপনাকে খুব সুন্দর দেয় myObject.PriceInCart()এবং myObject.Save()আপনার ক্লাসকে ডেটাতে ফোকাস করার সময় দেয়। স্থির পদ্ধতির জন্য অবশ্যই আপনার MyAppDA.Create()পরিবর্তে থাকা দরকার MyApp.Create()

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