Fault Contract এবং Custom Exception Handling

Microsoft Technologies - উইন্ডোজ কমিউনিকেশন সিস্টেম (WCF) - Data Contracts এবং Data Serialization Techniques
194

WCF (Windows Communication Foundation)Fault Contract এবং Custom Exception Handling অত্যন্ত গুরুত্বপূর্ণ বিষয়। এগুলি সার্ভিসের ত্রুটি (error) বা ব্যতিক্রম (exception) সঠিকভাবে পরিচালনা করার জন্য ব্যবহৃত হয়। Fault Contract মাধ্যমে সার্ভিসের ত্রুটি ম্যানেজমেন্ট এবং ক্লায়েন্টকে সঠিকভাবে ত্রুটির তথ্য প্রদান করা সম্ভব হয়। Custom Exception Handling ব্যবহার করে ডেভেলপাররা কাস্টম ব্যতিক্রম তৈরি করে নির্দিষ্ট ত্রুটির জন্য কাস্টমাইজড বার্তা পাঠাতে পারেন।


১. Fault Contract

Fault Contract WCF এ ব্যবহৃত হয় যখন সার্ভিস একটি ত্রুটি ঘটায় এবং এটি ক্লায়েন্টে সঠিকভাবে ফেরত দিতে চাই। WCF তে ত্রুটি পদ্ধতিটি SOAP Faults এর মাধ্যমে পরিচালিত হয়। সাধারণত সার্ভিসের মধ্যে কোনো সমস্যা বা ব্যতিক্রম ঘটলে, আমরা Fault Contract ব্যবহার করে ত্রুটির বিশদ তথ্য ক্লায়েন্টে পাঠাতে পারি।

Fault Contract তৈরি করা:

  1. Fault Contract তৈরি করতে, প্রথমে একটি Fault Exception তৈরি করতে হবে যা ত্রুটির জন্য ডেটা কন্ট্র্যাক্ট (Data Contract) হিসাবে কাজ করবে।
  2. এর পর, সেই Fault Contract কে Operation Contract-এর মাধ্যমে সার্ভিসে যুক্ত করতে হবে।

ধাপ ১: Fault Contract তৈরি করা

প্রথমে একটি ক্লাস তৈরি করুন যা ত্রুটির জন্য ডেটা কন্ট্র্যাক্ট হিসেবে কাজ করবে:

[DataContract]
public class MyFault
{
    [DataMember]
    public string ErrorMessage { get; set; }

    [DataMember]
    public string ErrorCode { get; set; }
}

এখানে, MyFault ক্লাসটি একটি ডেটা কন্ট্র্যাক্ট হিসেবে কাজ করছে, যেখানে ত্রুটির বার্তা এবং কোড থাকবে।

ধাপ ২: Fault Contract সার্ভিসে সংযুক্ত করা

এখন, Operation Contract এর মধ্যে FaultContract অ্যাট্রিবিউট ব্যবহার করে ত্রুটি পাঠানো হবে:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    [FaultContract(typeof(MyFault))]
    string GetMessage(string name);
}

এখানে, FaultContract অ্যাট্রিবিউট ব্যবহার করা হয়েছে যা MyFault ক্লাসকে ত্রুটির ডেটা কন্ট্র্যাক্ট হিসেবে চিহ্নিত করবে। যদি এই মেথডে কোনো ব্যতিক্রম ঘটে, তবে এটি MyFault ক্লাসের ত্রুটির তথ্য ক্লায়েন্টে পাঠাবে।

ধাপ ৩: Exception Handling এবং Fault ফেরত দেয়া

এখন, আপনি সার্ভিস ইমপ্লিমেন্টেশনে FaultException ব্যবহার করে ত্রুটি পরিচালনা করতে পারেন:

public class MyService : IMyService
{
    public string GetMessage(string name)
    {
        if (string.IsNullOrEmpty(name))
        {
            MyFault fault = new MyFault
            {
                ErrorMessage = "Name cannot be null or empty.",
                ErrorCode = "1001"
            };
            throw new FaultException<MyFault>(fault, new FaultReason("Invalid input"));
        }

        return $"Hello, {name}!";
    }
}

এখানে, যদি name প্যারামিটারটি null বা খালি হয়, তাহলে একটি FaultException তৈরি হবে এবং MyFault ত্রুটি ক্লাসের মাধ্যমে ত্রুটির বার্তা ক্লায়েন্টে পাঠানো হবে।

ক্লায়েন্ট সাইডে Fault Handling:

ক্লায়েন্ট সাইডে, আপনি FaultException এর মাধ্যমে ত্রুটি হ্যান্ডেল করতে পারেন:

try
{
    string result = myService.GetMessage(null);
}
catch (FaultException<MyFault> fault)
{
    Console.WriteLine($"Error: {fault.Detail.ErrorMessage}, Error Code: {fault.Detail.ErrorCode}");
}

এখানে, ক্লায়েন্ট সার্ভিসের ত্রুটির তথ্য গ্রহণ করবে এবং ErrorMessage এবং ErrorCode প্রদর্শন করবে।


২. Custom Exception Handling

Custom Exception Handling হল এমন একটি পদ্ধতি যার মাধ্যমে ডেভেলপাররা Exception তৈরি করে এবং সেগুলিকে কাস্টমাইজড বার্তা ও ডেটা সহ হ্যান্ডেল করতে পারেন। WCF তে FaultException এবং Fault Contract ব্যবহার করে ত্রুটি পাঠানো হলে, আপনি Custom Exception তৈরি করে সেই ত্রুটির জন্য একটি নির্দিষ্ট বার্তা দিতে পারেন।

Custom Exception তৈরি করা:

কাস্টম ব্যতিক্রম তৈরি করতে, আপনাকে একটি Exception ক্লাস তৈরি করতে হবে:

public class InvalidNameException : Exception
{
    public string ErrorCode { get; set; }

    public InvalidNameException(string message, string errorCode) : base(message)
    {
        ErrorCode = errorCode;
    }
}

এখানে, InvalidNameException কাস্টম ব্যতিক্রমের ক্লাস, যা ত্রুটি বার্তা এবং ত্রুটির কোড ধারণ করে।

Custom Exception ব্যবহার করা:

এখন, আপনি এই কাস্টম ব্যতিক্রমটি সার্ভিস ইমপ্লিমেন্টেশনে ব্যবহার করতে পারেন:

public class MyService : IMyService
{
    public string GetMessage(string name)
    {
        if (string.IsNullOrEmpty(name))
        {
            throw new InvalidNameException("Name cannot be null or empty.", "1001");
        }

        return $"Hello, {name}!";
    }
}

এখানে, যখন name প্যারামিটারটি null বা খালি হবে, তখন InvalidNameException ব্যতিক্রমটি ছুঁড়ে ফেলা হবে।

Custom Exception Handling (Client Side):

ক্লায়েন্টে, আপনি কাস্টম ব্যতিক্রমটি এইভাবে ধরতে পারেন:

try
{
    string result = myService.GetMessage(null);
}
catch (InvalidNameException ex)
{
    Console.WriteLine($"Error: {ex.Message}, Error Code: {ex.ErrorCode}");
}

এখানে, InvalidNameException ত্রুটিটি ধরা হবে এবং ত্রুটির বার্তা ও কোড প্রদর্শন করা হবে।


সারাংশ

  • Fault Contract: WCF তে ত্রুটি বা ব্যতিক্রম পরিচালনা করার জন্য ব্যবহার করা হয়, যেখানে ক্লায়েন্টে ত্রুটির বিস্তারিত তথ্য পাঠানো হয়। এটি FaultException এর মাধ্যমে করা হয়।
  • Custom Exception Handling: WCF তে কাস্টম ব্যতিক্রম তৈরি করে নির্দিষ্ট ত্রুটি বা সমস্যার জন্য কাস্টমাইজড বার্তা এবং কোড প্রদান করা হয়।
  • FaultContract এবং FaultException ব্যবহার করে সার্ভিসে ত্রুটির সঠিক তথ্য ক্লায়েন্টে পাঠানো সম্ভব হয়, এবং Custom Exception এর মাধ্যমে ডেভেলপাররা তাদের নিজস্ব ত্রুটি তৈরি করতে পারেন যা অধিক কাস্টমাইজযোগ্য এবং পরিচালনাযোগ্য।

এই দুইটি পদ্ধতি WCF-এ শক্তিশালী ত্রুটি পরিচালনা এবং নির্ভরযোগ্য সার্ভিস যোগাযোগ নিশ্চিত করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...