WCF (Windows Communication Foundation) এ Service Contract, Data Contract, এবং Operation Contract গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলো সার্ভিসের কার্যকলাপ, ডেটা ফরম্যাট এবং সার্ভিসের অপারেশনগুলো নির্ধারণ করে। এখানে আমরা ধাপে ধাপে এই তিনটি কনট্র্যাক্ট তৈরি করার প্রক্রিয়া দেখব।
১. Service Contract
Service Contract হলো একটি ইন্টারফেস (interface), যা সার্ভিসের মেথড বা অপারেশনগুলো সংজ্ঞায়িত করে। এটি WCF সার্ভিসের মৌলিক কাঠামো প্রদান করে। এটি সার্ভিসের মেথডগুলোকে চিহ্নিত করে এবং নির্ধারণ করে কোন মেথডগুলি ক্লায়েন্টদের জন্য উপলব্ধ হবে।
Service Contract তৈরি করা:
- প্রথমে,
IServiceনামে একটি ইন্টারফেস তৈরি করুন এবং এটিকে ServiceContract অ্যাট্রিবিউট দিয়ে চিহ্নিত করুন। - ইন্টারফেসের প্রতিটি মেথডকে OperationContract অ্যাট্রিবিউট দিয়ে চিহ্নিত করুন।
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetMessage(string name);
}
- [ServiceContract] অ্যাট্রিবিউট সার্ভিসের ইন্টারফেসকে চিহ্নিত করে।
- [OperationContract] অ্যাট্রিবিউট প্রতিটি মেথডকে চিহ্নিত করে যা সার্ভিসের অংশ হিসেবে ব্যবহার হবে।
২. Data Contract
Data Contract WCF-এ ডেটা আদান-প্রদান করার জন্য ব্যবহৃত হয়। এটি WCF-এ ডেটা ফরম্যাট নির্ধারণ করে। যখন কোনো ডেটা ক্লাস সার্ভিসের সাথে আদান-প্রদান করে, তখন সেই ক্লাসে DataContract অ্যাট্রিবিউট ব্যবহার করা হয়। এর মধ্যে প্রতিটি প্রোপার্টির জন্য DataMember অ্যাট্রিবিউট ব্যবহার করতে হয়।
Data Contract তৈরি করা:
- DataContract অ্যাট্রিবিউট ব্যবহার করে একটি ক্লাস তৈরি করুন, যা সার্ভিসে ব্যবহৃত হবে।
- DataMember অ্যাট্রিবিউট ব্যবহার করে ক্লাসের প্রোপার্টি চিহ্নিত করুন।
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
- [DataContract] অ্যাট্রিবিউট ক্লাসকে চিহ্নিত করে যাতে এটি WCF মাধ্যমে ডেটা পাঠানোর জন্য প্রস্তুত হয়।
- [DataMember] অ্যাট্রিবিউট প্রোপার্টিগুলিকে চিহ্নিত করে যা ডেটা আদান-প্রদান করতে ব্যবহৃত হবে।
৩. Operation Contract
Operation Contract একটি Service Contract এর অংশ হিসেবে ব্যবহৃত হয়। এটি প্রতিটি মেথডের জন্য ব্যবহৃত হয় যা সার্ভিসে উপলব্ধ থাকবে। প্রতিটি মেথডে OperationContract অ্যাট্রিবিউট ব্যবহার করা হয় যাতে WCF জানতে পারে যে, মেথডটি একটি ওয়েব সার্ভিস অপারেশন হিসেবে কাজ করবে।
Operation Contract তৈরি করা:
- Service Contract ইন্টারফেসের মেথডে OperationContract অ্যাট্রিবিউট ব্যবহার করুন।
- মেথডের মধ্যে ডেটা আদান-প্রদান করতে Data Contract ক্লাস ব্যবহার করুন।
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetPersonInfo(Person person);
}
- GetPersonInfo মেথডটি Person ডেটা কন্ট্র্যাক্টটি গ্রহণ করবে এবং তা ফেরত দিবে।
উদাহরণ: একত্রিতভাবে Service Contract, Data Contract, এবং Operation Contract
এখন, আমরা একটি সম্পূর্ণ উদাহরণ তৈরি করি যেখানে Service Contract, Data Contract, এবং Operation Contract একসাথে ব্যবহৃত হবে।
Step 1: Service Contract তৈরি করা
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetMessage(string name);
[OperationContract]
string GetPersonInfo(Person person);
}
Step 2: Data Contract তৈরি করা
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
Step 3: Service Implementation তৈরি করা
public class MyService : IMyService
{
public string GetMessage(string name)
{
return $"Hello, {name}! Welcome to WCF Service.";
}
public string GetPersonInfo(Person person)
{
return $"{person.Name} is {person.Age} years old.";
}
}
Step 4: WCF Service Configuration (web.config)
<system.serviceModel>
<services>
<service name="MyFirstWCFService.MyService">
<endpoint address="" binding="basicHttpBinding" contract="MyFirstWCFService.IMyService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/MyService" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
সারাংশ
- Service Contract: সার্ভিসের অপারেশন বা মেথডগুলো সংজ্ঞায়িত করে।
- Operation Contract: প্রতিটি মেথডের জন্য ব্যবহার হয়, যা WCF সার্ভিসে উপলব্ধ থাকে।
- Data Contract: ডেটার ফরম্যাট নির্ধারণ করে, যা সার্ভিসের মাধ্যমে আদান-প্রদান হবে।
এই কনট্র্যাক্টগুলো সঠিকভাবে ব্যবহার করলে WCF সার্ভিসে কার্যকরী এবং কাস্টম ডেটা আদান-প্রদান সহজ হয়।
Read more