WCF (Windows Communication Foundation) এ Behaviors এমন কাস্টম উপাদান যা সার্ভিস বা ক্লায়েন্টের কার্যকলাপ কাস্টমাইজ করার জন্য ব্যবহৃত হয়। WCF এ কিছু পূর্বনির্ধারিত behaviors যেমন ServiceBehavior এবং OperationBehavior পাওয়া যায়, কিন্তু কখনো কখনো ডেভেলপারদের বিশেষ কার্যকলাপের প্রয়োজন হয়, যেখানে কাস্টম behaviors তৈরি করতে হয়। Custom Behaviors দ্বারা আপনি সার্ভিসের কার্যকলাপকে আরও নিয়ন্ত্রণ এবং কাস্টমাইজ করতে পারেন, যেমন logging, caching, validation, message interception, ইত্যাদি।
এই গাইডে, আমরা Custom Behaviors তৈরি এবং কনফিগার করার প্রক্রিয়া দেখবো।
ধাপ ১: Custom Behavior তৈরি করা
WCF তে কাস্টম behaviors তৈরি করতে হলে, আপনাকে কিছু ইন্টারফেস ইমপ্লিমেন্ট করতে হয়। সাধারণত, আপনি IServiceBehavior এবং IEndpointBehavior ইন্টারফেস ব্যবহার করবেন, যা সার্ভিস বা এন্ডপয়েন্টের আচরণ কাস্টমাইজ করার জন্য ব্যবহৃত হয়।
উদাহরণ: Custom Service Behavior
- IServiceBehavior ইন্টারফেস ইমপ্লিমেন্ট করে একটি কাস্টম সার্ভিস বিহেভিয়ার তৈরি করুন। এটি সার্ভিসের initialization এবং কনফিগারেশন কাস্টমাইজ করবে।
using System.ServiceModel;
using System.ServiceModel.Description;
public class MyCustomServiceBehavior : IServiceBehavior
{
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<BindingParameterCollection> bindingParameters)
{
// Add custom binding parameters (if needed)
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
foreach (var endpoint in serviceDescription.Endpoints)
{
// Modify endpoint dispatch behavior if needed
}
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
// Perform validation checks on the service
}
}
এখানে AddBindingParameters, ApplyDispatchBehavior, এবং Validate মেথডগুলো সার্ভিসের কাস্টম বিহেভিয়ার পরিচালনা করবে।
উদাহরণ: Custom Endpoint Behavior
- IEndpointBehavior ইন্টারফেস ইমপ্লিমেন্ট করে একটি কাস্টম এন্ডপয়েন্ট বিহেভিয়ার তৈরি করুন।
using System.ServiceModel;
using System.ServiceModel.Description;
public class MyCustomEndpointBehavior : IEndpointBehavior
{
public void AddBindingParameters(ServiceEndpoint serviceEndpoint, BindingParameterCollection bindingParameters)
{
// Add custom parameters to the binding
}
public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime clientRuntime)
{
// Modify client behavior if needed
}
public void ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher)
{
// Modify dispatch behavior if needed
}
public void Validate(ServiceEndpoint serviceEndpoint)
{
// Validate the endpoint
}
}
এই IEndpointBehavior কাস্টম বিহেভিয়ার সার্ভিসের একে অপরের সাথে যোগাযোগে কাস্টম কনফিগারেশন প্রয়োগ করতে পারে।
ধাপ ২: Custom Behavior রেজিস্টার করা
WCF সার্ভিসের সাথে Custom Behaviors যোগ করতে, আপনাকে web.config বা app.config ফাইলে এগুলোর কনফিগারেশন করতে হবে।
Service Behavior কনফিগারেশন (web.config):
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myCustomBehavior">
<serviceMetadata httpGetEnabled="true" />
<myNamespace:MyCustomServiceBehavior />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyNamespace.MyService" behaviorConfiguration="myCustomBehavior">
<endpoint address="" binding="basicHttpBinding" contract="MyNamespace.IMyService" />
</service>
</services>
</system.serviceModel>
এখানে myNamespace:MyCustomServiceBehavior দ্বারা কাস্টম সার্ভিস বিহেভিয়ার রেজিস্টার করা হয়েছে। এখানে behaviorConfiguration দ্বারা সার্ভিসের সাথে কাস্টম বিহেভিয়ার যুক্ত করা হয়েছে।
Endpoint Behavior কনফিগারেশন (web.config):
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="myCustomEndpointBehavior">
<myNamespace:MyCustomEndpointBehavior />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="MyNamespace.MyService">
<endpoint address="" binding="basicHttpBinding" contract="MyNamespace.IMyService"
behaviorConfiguration="myCustomEndpointBehavior" />
</service>
</services>
</system.serviceModel>
এখানে myNamespace:MyCustomEndpointBehavior দ্বারা কাস্টম এন্ডপয়েন্ট বিহেভিয়ার রেজিস্টার করা হয়েছে এবং behaviorConfiguration দ্বারা এটি সার্ভিসের এন্ডপয়েন্টে যুক্ত করা হয়েছে।
ধাপ ৩: Custom Behavior Apply করা
কাস্টম বিহেভিয়ার সার্ভিস এবং এন্ডপয়েন্টে অ্যাপ্লাই করার জন্য, সার্ভিস হোস্টে সেগুলোর রেজিস্ট্রেশন করতে হবে। আপনি সার্ভিসের কনস্ট্রাক্টর বা ইনেিশিয়ালাইজেশনে ServiceHost অবজেক্টের মাধ্যমে কাস্টম বিহেভিয়ার যোগ করতে পারেন।
public class MyServiceHost : ServiceHost
{
public MyServiceHost(Type serviceType, Uri[] baseAddresses)
: base(serviceType, baseAddresses)
{ }
protected override void OnOpening()
{
base.OnOpening();
// Add custom service behavior to the host
this.Description.Behaviors.Add(new MyCustomServiceBehavior());
}
}
এখানে OnOpening() মেথডে আমরা MyCustomServiceBehavior সার্ভিস হোস্টে অ্যাড করেছি।
ধাপ ৪: Custom Behavior ব্যবহার করে Logging
ধরা যাক, আপনি একটি কাস্টম বিহেভিয়ার তৈরি করতে চান যা সার্ভিসের প্রতিটি মেসেজের লগ রাখবে। এটি করার জন্য, আপনি IMessageInspector ব্যবহার করতে পারেন, যা সার্ভিসের মেসেজ ইনপুট এবং আউটপুট পরীক্ষা করতে সাহায্য করে।
Logging Behavior উদাহরণ:
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Channels;
public class MyLoggingBehavior : IDispatchMessageInspector
{
public void AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
// Log the request message
Console.WriteLine("Received message: " + request);
}
public void BeforeSendReply(ref Message reply, object correlationState)
{
// Log the response message
Console.WriteLine("Sent reply: " + reply);
}
}
এখন, এই কাস্টম IMessageInspector কে Custom Behavior হিসেবে ব্যবহার করতে পারেন। এর মাধ্যমে সার্ভিসের প্রতিটি ইনপুট এবং আউটপুট মেসেজের লগ রাখা সম্ভব।
সারাংশ
- Custom Behaviors WCF সার্ভিসের কার্যকলাপ কাস্টমাইজ করতে ব্যবহৃত হয়। এর মধ্যে IServiceBehavior এবং IEndpointBehavior ইন্টারফেস ব্যবহার করা হয়।
- Service Behavior সার্ভিসের কার্যকলাপ কাস্টমাইজ করে, এবং Endpoint Behavior এন্ডপয়েন্টের সাথে সম্পর্কিত কার্যকলাপ কাস্টমাইজ করে।
- WCF এ কাস্টম বিহেভিয়ার সঠিকভাবে কনফিগার এবং রেজিস্টার করার মাধ্যমে, আপনি সার্ভিসের কর্মক্ষমতা, নিরাপত্তা, এবং অন্যান্য ফিচার উন্নত করতে পারেন।
Read more