استخر اتصال بازنگری شد

با انتشار Aspose.Email 19.3، استخر اتصال بازنگری شد. جدید EmailClient کلاسی معرفی شده است که در نهایت جایگزین CredentialsByHostClient کلاس. EmailClient کلاس یک ConnectionAsgmtMode ویژگی که حالت تخصیص اتصال را در محیط چندرشته‌ای تعریف می‌کند. EmailClient.ConnectionAsgmtMode با استفاده از ConnectionAsgmtType قابل شمارش.

انواع اتصال

سه نوع اتصال زیر وجود دارد:

  • اتصال اصلی: این اتصال همراه با کلاینت ایمیل ساخته و حذف می‌شود. نمی‌تواند به‌صورت دستی ساخته یا حذف شود.
  • اتصال پیش‌فرض: کاربر می‌تواند اتصالات پیش‌فرض برای رشته‌ها با CreateConnection متد. اگر اتصال پیش‌فرض وجود داشته باشد، تمام متدهای کلاینت ایمیل که در یک رشته اجرا می‌شوند، به‌صورت ضمنی از این اتصال استفاده می‌کنند. فقط یک اتصال پیش‌فرض می‌تواند برای هر رشته وجود داشته باشد. می‌تواند به‌صورت دستی یا خودکار ایجاد شود. این بسته به ویژگی EmailClient.ConnectionAsgmtMode است. این اتصالات می‌توانند به‌صورت دستی با EmailClient.CreateConnection(createAsDefaultConnection = true) متد. اگر اتصال پیش‌فرض استفاده نشود (بسته به حالت تخصیص اتصال)، اتصال اصلی به‌صورت ضمنی به جای آن استفاده می‌شود.
  • اتصالات مستقل: این‌ها اتصالی هستند که به رشته‌ها لینک نمی‌شوند. می‌توانند به‌صورت دستی ایجاد شوند و باید به‌صورت صریح به‌عنوان پارامتر متد استفاده شوند. این اتصالات می‌توانند به‌صورت دستی با EmailClient.CreateConnection() متد یا EmailClient.CreateConnection(createAsDefaultConnection = false) متد.

انواع تخصیص اتصال

برای تنظیم EmailClient.ConnectionAsgmtMode ویژگی، ConnectionAsgmtType قابل شمارش استفاده می‌شود. انواع تخصیص ارائه شده توسط ConnectionAsgmtType در زیر فهرست شده‌اند.

  • ConnectionAsgmtType.UseMainOrDefault: این حالت به‌صورت پیش‌فرض در مشتریان ایمیل استفاده می‌شود. مشتری ایمیل از اتصال اصلی برای تمام عملیات از چندین رشته استفاده می‌کند اگر اتصال پیش‌فرض ایجاد نشده باشد، یا اگر اتصال به‌صورت صریح به عنوان پارامتر متد ارسال نشده باشد. اتصال اصلی اتصالی است که همزمان با ایجاد مشتری ایمیل ساخته می‌شود. کاربر می‌تواند اتصالات پیش‌فرض برای رشته‌ها با CreateConnection متد. اگر اتصال پیش‌فرض برای یک رشته ایجاد شود، به‌صورت ضمنی برای تمام متدهای کلاینت ایمیل که در این رشته فراخوانی می‌شوند، استفاده می‌شود. اگر اتصال پیش‌فرض برای یک رشته ایجاد نشده باشد، اتصال اصلی برای تمام متدهای کلاینت ایمیل که در این رشته فراخوانی می‌شوند، استفاده می‌شود. کاربر همچنین می‌تواند اتصالاتی که به رشته‌ها لینک نشده‌اند (اتصالات پیش‌فرض نیستند) را با استفاده از CreateConnection متد. اگر کاربر بخواهد از اتصالات دیگر (نه اصلی و نه پیش‌فرض) استفاده کند، باید این اتصال را به‌صورت صریح به‌عنوان پارامتر متدی که می‌خواهد استفاده کند، پاس بدهد. کاربر می‌تواند به‌طور اضافی هر تعداد اتصال ایجاد کند. اتصال پیش‌فرض فقط می‌تواند برای هر رشته یک‌بار وجود داشته باشد. لطفاً توجه داشته باشید که اتصالات پیش‌فرض اگر کاربر از اشیاء Thread برای برنامه‌نویسی چندوظیفه‌ای استفاده کند درست کار می‌کنند. اگر کاربر از ConnectionPool یا از اشیاء Task برای برنامه‌نویسی چندوظیفه‌ای استفاده کند، این حالت ممکن است منجر به رفتار نادرست برنامه شود. برای جلوگیری از این مشکل، کاربر باید در پایان اجرای کد (اگر از آن استفاده می‌کند) اتصال پیش‌فرض را به‌صورت دستی آزاد کند.
  • ConnectionAsgmtType.UseMain: مشتری ایمیل از اتصال اصلی برای تمام عملیات از چندین رشته استفاده می‌کند. اتصال اصلی اتصالی است که همزمان با ایجاد مشتری ایمیل ساخته می‌شود. کاربر نمی‌تواند اتصالات پیش‌فرض ایجاد کند. کاربر می‌تواند اتصالاتی که به رشته‌ها مرتبط نیستند (اتصالات غیر پیش‌فرض) را با CreateConnection متد. اگر کاربر بخواهد از اتصالات دیگر (نه اصلی و نه پیش‌فرض) استفاده کند، باید این اتصال را به‌صورت صریح به‌عنوان پارامتر متدی که می‌خواهد استفاده کند، پاس بدهد. 
  • ConnectionAsgmtType.UseDefault: مشتری ایمیل به‌صورت ضمنی فقط از اتصالات پیش‌فرض برای تمام عملیات از چندین رشته استفاده می‌کند. در این حالت اتصال اصلی استفاده نمی‌شود. اگر اتصال پیش‌فرض برای برخی رشته‌ها (در اولین فراخوانی متد مشتری ایمیل) ایجاد نشده باشد، مشتری ایمیل به‌صورت ضمنی برای آن رشته یک اتصال پیش‌فرض قبل از اجرای اولین عملیات ایجاد می‌کند. کاربر نمی‌تواند اتصالات پیش‌فرض برای رشته‌ها با CreateConnectionمتد زیرا به‌طور خودکار ایجاد می‌شوند. وقتی اتصال پیش‌فرض برای یک رشته ایجاد می‌شود، به‌صورت ضمنی برای تمام متدهای کلاینت ایمیل که در این رشته فراخوانی می‌شوند، استفاده می‌شود. کاربر همچنین می‌تواند اتصالاتی که به رشته‌ها لینک نشده‌اند (اتصالات پیش‌فرض نیستند) را با استفاده از CreateConnectionمتد. اگر کاربر بخواهد از اتصالات دیگر (نه اصلی و نه پیش‌فرض) استفاده کند، باید این اتصال را به‌صورت صریح به‌عنوان پارامتر متدی که می‌خواهد استفاده کند، پاس بدهد. کاربر می‌تواند به‌طور اضافی هر تعداد اتصال ایجاد کند. فقط یک اتصال پیش‌فرض می‌تواند برای هر رشته استفاده شود. لطفاً توجه داشته باشید که اتصالات پیش‌فرض اگر کاربر از اشیاء Thread برای برنامه‌نویسی چندوظیفه‌ای استفاده کند درست کار می‌کنند. اگر کاربر از ConnectionPool یا از اشیاء Task برای برنامه‌نویسی چندوظیفه‌ای استفاده کند، این حالت ممکن است منجر به رفتار نادرست برنامه شود. برای جلوگیری از این مشکل، کاربر باید در پایان اجرای کد به‌صورت دستی اتصال پیش‌فرض را آزاد کند.