WCF (Windows Communication Foundation) এ Data Contract এবং Data Member অ্যাট্রিবিউট ব্যবহার করা হয় ডেটা আদান-প্রদান এবং serialization প্রক্রিয়ার জন্য। WCF এ Data Contract এমন একটি কনট্র্যাক্ট যা নির্ধারণ করে কোন ডেটা ক্লাস বা অবজেক্ট WCF সার্ভিসের মাধ্যমে ট্রান্সফার হবে এবং কীভাবে তা টপলজিতে সার্ভিস এবং ক্লায়েন্টের মধ্যে বিনিময় হবে। Data Member অ্যাট্রিবিউটের মাধ্যমে ক্লাসের ফিল্ড বা প্রপার্টি চিহ্নিত করা হয় যা ডেটা কন্ট্র্যাক্টে অন্তর্ভুক্ত হবে।
এখানে আমরা ধাপে ধাপে Data Contract এবং Data Member অ্যাট্রিবিউট তৈরি করার প্রক্রিয়া দেখবো।
১. Data Contract
Data Contract WCF এ ডেটা ট্রান্সফারের ফরম্যাট এবং গঠন নির্ধারণ করে। এটি একটি কাস্টম ক্লাস বা ডেটা টাইপ তৈরি করে যা সার্ভিস এবং ক্লায়েন্টের মধ্যে আদান-প্রদান হবে। যখন একটি ক্লাসকে DataContract অ্যাট্রিবিউট দিয়ে চিহ্নিত করা হয়, তখন সেই ক্লাসটি serialization করতে সক্ষম হয়।
Data Contract তৈরি করা:
- DataContract অ্যাট্রিবিউট ব্যবহার করে একটি ক্লাস তৈরি করুন।
- DataMember অ্যাট্রিবিউট ব্যবহার করে ক্লাসের প্রপার্টি বা ফিল্ড চিহ্নিত করুন যা ডেটা ট্রান্সফারে ব্যবহৃত হবে।
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
// এভাবে আরো প্রপার্টি বা ফিল্ড যুক্ত করা যেতে পারে
}
- [DataContract] অ্যাট্রিবিউট ক্লাসটিকে একটি ডেটা কন্ট্র্যাক্ট হিসেবে চিহ্নিত করে, যার মাধ্যমে ডেটা আদান-প্রদান হবে।
- [DataMember] অ্যাট্রিবিউট ব্যবহৃত হয় ক্লাসের প্রপার্টি বা ফিল্ডগুলিকে চিহ্নিত করতে, যা ডেটা ট্রান্সফারে অংশগ্রহণ করবে।
২. Data Member
DataMember অ্যাট্রিবিউট ক্লাসের ফিল্ড বা প্রপার্টি চিহ্নিত করে যা WCF সার্ভিসের মাধ্যমে ট্রান্সফার হবে। যদি কোন প্রপার্টি DataMember অ্যাট্রিবিউট দ্বারা চিহ্নিত না হয়, তবে সেটি ডেটা কন্ট্র্যাক্টে অন্তর্ভুক্ত হবে না। DataMember অ্যাট্রিবিউটের সাহায্যে আমরা ডেটা ফিল্ডের অর্ডারও নির্ধারণ করতে পারি, যা Order প্যারামিটার দিয়ে করা হয়।
Data Member এর বৈশিষ্ট্য:
- Name: প্রপার্টির নাম পরিবর্তন করার জন্য ব্যবহৃত হয়। এটি ডেটা কন্ট্র্যাক্টে অন্য নাম হিসেবে রিপ্রেজেন্ট করবে।
- Order: ডেটা সদস্যের আদান-প্রদান অর্ডার নির্ধারণ করে।
- IsRequired: যদি সেট করা থাকে, তাহলে সেই প্রপার্টি ট্রান্সফার করা বাধ্যতামূলক।
Data Member উদাহরণ:
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember(Order = 1)]
public int Age { get; set; }
[DataMember(Order = 2, IsRequired = true)]
public string Address { get; set; }
}
- এখানে Age প্রপার্টি
Order = 1দিয়ে প্রথম স্থানটি পায় এবং Address প্রপার্টিIsRequired = trueদিয়ে বাধ্যতামূলক হিসেবে চিহ্নিত করা হয়েছে।
৩. Data Contract এর কাস্টমাইজেশন
কখনও কখনও আপনি চাইতে পারেন Data Contract এর বিভিন্ন কাস্টমাইজেশন যেমন:
- Namespace: আপনি চাইলে Namespace প্যারামিটার দিয়ে কাস্টম নেমস্পেস নির্ধারণ করতে পারেন।
- KnownType: কখনও কখনও ডেরিভড ক্লাস বা ইন্টারফেসের প্রয়োজনে KnownType অ্যাট্রিবিউট ব্যবহার করা হয়।
উদাহরণ:
[DataContract(Namespace = "http://mynamespace.com")]
[KnownType(typeof(Employee))] // Employee ক্লাসকে পরিচিত করা
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
- এখানে Namespace ব্যবহার করে ডেটা কন্ট্র্যাক্টের জন্য একটি কাস্টম নেমস্পেস নির্ধারণ করা হয়েছে।
- KnownType ব্যবহার করে Person ক্লাসের জন্য একটি Employee ডেরিভড ক্লাস চিহ্নিত করা হয়েছে।
৪. Data Contract এর পরিবর্তন
WCF এ Data Contract Versioning কৌশল ব্যবহার করতে হয় যদি ডেটা কন্ট্র্যাক্টের মধ্যে কোনো পরিবর্তন আসে। এটি করার জন্য, আপনি IsRequired এবং Order প্যারামিটার ব্যবহার করতে পারেন।
Versioning উদাহরণ:
[DataContract]
public class Person
{
[DataMember(Order = 0, IsRequired = true)]
public string Name { get; set; }
[DataMember(Order = 1)]
public int Age { get; set; }
// নতুন ফিল্ড যোগ করার সময়, Order ভ্যালু ব্যবহার করুন
[DataMember(Order = 2)]
public string Address { get; set; }
}
এখানে যদি কোন নতুন প্রপার্টি যোগ করা হয়, তবে আপনি Order ব্যবহার করে পরিবর্তিত ফিল্ডের জায়গা নির্ধারণ করতে পারেন, যা পুরনো ডেটা এবং নতুন ডেটার মধ্যে সামঞ্জস্য বজায় রাখতে সাহায্য করে।
সারাংশ
- Data Contract হলো WCF-এ ডেটা আদান-প্রদান করার কনট্র্যাক্ট, যা ক্লাস এবং তার প্রপার্টিগুলিকে চিহ্নিত করে।
- Data Member অ্যাট্রিবিউট ব্যবহৃত হয় ক্লাসের প্রপার্টি বা ফিল্ডগুলোকে ডেটা কন্ট্র্যাক্টে অন্তর্ভুক্ত করার জন্য।
- DataMember এর Order, IsRequired, এবং Name এর মতো অপশনগুলির মাধ্যমে আপনি ডেটা কন্ট্র্যাক্টের কাস্টমাইজেশন করতে পারেন।
WCF এ Data Contract এবং Data Member ব্যবহারের মাধ্যমে আপনি ডেটা ট্রান্সফার প্রক্রিয়াকে নির্ভরযোগ্য এবং কাস্টমাইজড করতে পারেন, যা সার্ভিস এবং ক্লায়েন্টের মধ্যে সঠিক ডেটা আদান-প্রদান নিশ্চিত করে।
Read more