TDLight Telegram Bot API is a fork of the official Telegram Bot API, focused on memory footprint and performance.
A simple yet organized project template for building ASP.NET Core APIs in .NET Core 3.1
Tools and Frameworks Used
- .NET Core 3.1
- ASP.NET Core - For building RESTful APIs
- Dapper - For data access.
- AutoMapper - For mapping entity models to DTOs.
- AutoWrapper - For handling request Exceptions and consistent HTTP response format.
- AutoWrapper.Server - For unwrapping the Result attribute from AutoWrapper's ApiResponse output.
- Swashbuckle.AspNetCore - For securing API documentation.
- FluentValidation.AspNetCore - For Model validations
- Serilog.AspNetCore - For logging capabilities
- IdentityServer4.AccessTokenValidation - For JWT Authentication handling
- Microsoft.Extensions.Http.Polly - For handling HttpClient Resilience and Transient fault-handling
- AspNetCoreRateLimit - For controlling the rate of requests that clients can make to an external API based on IP address or client ID.
- AspNetCore.Diagnostics.HealthChecks - For performing health checks
- Microsoft.AspNetCore.Diagnostics.HealthChecks - For getting the results of Health Checks in the application
- AspNetCore.HealthChecks.UI - For Health Status visualization
- xUnit and Moq - For unit testing.
یکی از دغدغهها هنگام نوشتن یک API فیلتر کردن , سورت کردن یا دریافت اطلاعات به صورت صفحه ایست. چراکه به طور مثال برای اعمال فیلتر روی اطلاعات, ورودی ما یک رشته `string` است و تبدیل این رشته به یک query کار ساده ای نیست و نیاز دارد تا برای تک تک فیلدهای لیست به صورت جداگدانه منطق ارتباطی آن نوشته شود. یا برای داشتن لیستی با قابلیت Paging نیاز داریم تا ابتدا تعداد کل رکوردها را از دیتابیس دریافت کرده سپس بعد از محاسبه محدوده صفحه مورد نظر اطلاعات را برگردانیم.
با استفاده از Gridify میتوانیم به سادهترین شکل این گونه عملیات را در برنامههای خود انجام دهیم و بسیاری از مشکلات را با کمترین هزینه حل کنیم. (بخصوص زمانیکه از Web-API و SPA استفاده میکنیم)