tgoop.com/fullStackDevs/649
Last Update:
#Netcore
#DiagnosticSource
🔰DiagnosticSource
🔹مجموعه ای ساده و کاربردی از api ها که از طریق نوگت پکیج
System.Diagnostics.DiagnosticSource
در دسترش میباشد.
🔸بدین ترتیب دیگر لایبری ها مانند EF , SqlClient و ... با استفاده از DiagnosticSource ایونت هایی را در سیستم تحت یک نام مرتبط، ارسال میکنند و اپلیکیشن با دریافت این ایونت ها، آنها را پردازش میکند.
🔸 هر ایونتی که ارسال میشود علاوه بر نام، یک payload هم به همراه دارد و از انجایی که پردازش ایونت در همان فرایند ارسال اتفاق می افتد، این اطلاعات (payload) میتواند شامل هرنوع آبجکتی بدون نیاز به سریالایز یا دیسریالاز شدن باشد.
🔸همچنین DiagnosticSource در
AspNetCore و EntityFrameworkCore و HttpClient و SqlClient
نیز استفاده شده است و این قابلیت را به developer میدهد تا در خواست های ورودی و خروجی , دیتابیس کوئری ها را رهگیری (intercept) کند.
همچنین دسترسی به آبجکت هایی نظیر
HttpContext, DbConnection, DbCommand, HttpRequestMessage
و بسیاری دیگر امکان پذیر است و میتوانید در ایونت ارسال شده اگه نیاز باشد تغییراتی در آنها ایجاد کنید.
🔹 هدف از توضیح و معرفی DiagnosticSource در این پست این بود که گرچه DiagnosticSource چیزی جدیدی نیست اما دانستن اطلاعاتی در مورد آن میتواند در چالش های پیش رو به کمک ما بیاد
برای مثال Interceptor ها از نسخه 3.0 به Ef Core اضافه شدند و پیش از آن در نسخه های قبلی Ef Core پیاده سازی نشده بودند.
و امکان استفاده از Interceptor ها در نسخه های پایینتر Ef core وجود نداشت و برای این منظور میتوانیم از Diagnostic listener ها استفاده کنیم.
🔻 نکته : Diagnostic listener ها با Interceptor متفاوت هستند برای مثال یک Interceptor برای هر نمونه از DbContext رجیستر میشود در حالی که با Diagnostic listener میتوانید از ایونت های ارسال شده همه DbContext instance ها در اطلاعات, (payload) دریافت کنید.
🔹در asp core سه سیستم وجود دارد که از آنها برای logging می توان استفاده کرد که یک مورد آن DiagnosticSource میباشد. مورد بعدی سیستم ILogger است که استفاده از آن بسیار رایج است .
🔸اما یک تفاوت مهم وجود دارد و آن اینکه asp core از سیستم DiagnosticSource برای ایونت های مرتبط با زیر ساخت فریم وورک و از سیستم ILogger برای tracing جریان پراسس های اپلیکیشن استفاده میکند.
نمونه سورس کدی که از DiagnosticSource برای log ایونت ها استفاده شده است .
@fullStackDevs
BY Web Devs

Share with your friend now:
tgoop.com/fullStackDevs/649