IMEX.CORE 1.0.2.35

dotnet add package IMEX.CORE --version 1.0.2.35
                    
NuGet\Install-Package IMEX.CORE -Version 1.0.2.35
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="IMEX.CORE" Version="1.0.2.35" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="IMEX.CORE" Version="1.0.2.35" />
                    
Directory.Packages.props
<PackageReference Include="IMEX.CORE" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add IMEX.CORE --version 1.0.2.35
                    
#r "nuget: IMEX.CORE, 1.0.2.35"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package IMEX.CORE@1.0.2.35
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=IMEX.CORE&version=1.0.2.35
                    
Install as a Cake Addin
#tool nuget:?package=IMEX.CORE&version=1.0.2.35
                    
Install as a Cake Tool

🏥 IMEX.Core

.NET .NET License NuGet Build Status

Thư viện IMEX.Core mạnh mẽ cho hệ thống API của bạn - Cung cấp các tính năng cốt lõi cho phát triển ứng dụng với hiệu suất cao và bảo mật tối ưu.

📋 Mục lục

🚀 Giới thiệu

IMEX.Core là thư viện cốt lõi được thiết kế đặc biệt cho hệ thống quản lý nhân sự trong lĩnh vực y tế. Thư viện cung cấp các tính năng mạnh mẽ, hiệu suất cao và bảo mật tối ưu để xây dựng các ứng dụng HR phức tạp.

🎯 Mục tiêu

  • Hiệu suất cao: Tối ưu hóa cache, database access và memory usage
  • Bảo mật mạnh: Mã hóa dữ liệu, quản lý quyền truy cập chi tiết
  • Dễ sử dụng: API đơn giản, documentation chi tiết
  • Mở rộng tốt: Kiến trúc modular, dễ dàng customize
  • Production-ready: Đã được test kỹ lưỡng trong môi trường thực tế

✨ Tính năng chính

🗄️ Database & ORM

  • SqlSugar ORM: Hỗ trợ multi-database, read/write splitting
  • Migration System: Tự động migration và seeding dữ liệu
  • Multi-tenant: Hỗ trợ multi-tenant architecture
  • Connection Pooling: Tối ưu hóa kết nối database

🚀 Caching System

  • Multi-tier Cache: L1 (Memory) + L2 (Redis) + Hybrid
  • Smart Compression: Tự động nén dữ liệu lớn
  • Adaptive TTL: Tự động điều chỉnh thời gian cache
  • Lock-free Operations: Thread-safe, high-performance
  • Cache Invalidation: RemoveByPrefix, tag-based removal

🔐 Security & Authentication

  • Multi-encryption: RSA, SM2, SM3, SM4
  • JWT Authentication: Stateless authentication
  • Role-based Access Control: Bitwise permission system
  • Data Encryption: End-to-end encryption
  • Audit Logging: Comprehensive security logging

📊 Logging & Monitoring

  • Structured Logging: Serilog với Elasticsearch
  • Performance Monitoring: Real-time metrics
  • Error Tracking: Comprehensive error handling
  • Request/Response Logging: Full API monitoring
  • SQL Query Logging: Database performance tracking

🛠️ Utilities & Helpers

  • File Operations: Secure file handling
  • Data Conversion: Number to text, encoding/decoding
  • Validation: Input validation helpers
  • HTTP Utilities: Request/response helpers
  • ID Generation: Snowflake ID, custom generators

📦 Cài đặt

NuGet Package

# Package Manager
Install-Package IMEX.CORE -Version 1.0.2.35

# .NET CLI
dotnet add package IMEX.CORE --version 1.0.2.35
# Paket
paket add IMEX.CORE --version 1.0.2.35

Yêu cầu hệ thống

  • .NET 8.0 hoặc .NET 9.0
  • SQL Server 2019+ hoặc MySQL 8.0+
  • Redis 6.0+ (tùy chọn, cho distributed cache)
  • Elasticsearch 7.0+ (tùy chọn, cho logging)

⚙️ Cấu hình

1. Database Configuration

{
  "MainDB": "DB_Main",
   "MultiDBEnabled": true,
   "DBConnections": [
     {
      "ConnId": "DB_Main",
       "DBType": 1,
       "Enable": true,
       "HitRate": 50,
      "ConnectionStr": "Data Source=localhost;Initial Catalog=MedcomHR;Integrated Security=True;",
       "ProviderName": "System.Data.SqlClient",
        "Slaves": [
         {
          "HitRate": 0,
          "Connection": "Data Source=slave-server;Initial Catalog=MedcomHR;Integrated Security=True;"
        }
      ]
    }
  ]
}

2. Cache Configuration

{
  "Cache": {
    "EnableL1Cache": true,
    "EnableL2Cache": true,
    "DefaultTTL": 600,
    "CompressionThreshold": 51200,
    "MaxCacheSize": 100000
  },
  "Redis": {
    "ConnectionString": "localhost:6379",
    "Database": 0,
    "KeyPrefix": "medcom:hr:"
  }
}

3. Logging Configuration

{
  "Serilog": {
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}"
        }
      },
      {
        "Name": "Elasticsearch",
        "Args": {
          "nodeUris": "http://localhost:9200",
          "indexFormat": "medcom-hr-logs-{0:yyyy.MM.dd}"
        }
      }
    ]
  }
}

📚 Hướng dẫn sử dụng

1. Database Operations

using IMEX.CORE.Core.DBAccess;

// Khởi tạo database context
var dbContext = new DbContextBase();

// Query dữ liệu
var employees = await dbContext.Queryable<Employee>()
    .Where(e => e.DepartmentId == departmentId)
    .ToListAsync();

// Insert dữ liệu
var newEmployee = new Employee
{
    Name = "Nguyễn Văn A",
    Email = "a@medcom.com",
    DepartmentId = 1
};
await dbContext.Insertable(newEmployee).ExecuteCommandAsync();

2. Caching

using IMEX.Core.Caching.Interfaces;

// Khởi tạo cache
var memoryCache = new MemoryCache(new MemoryCacheOptions());
var config = new EnhancedMemoryCacheConfig();
var cache = new EnhancedMemoryCache(memoryCache, config);

// Set cache
await cache.SetAsync("employee:123", employeeData, 30); // 30 phút

// Get cache
var employee = await cache.GetAsync<Employee>("employee:123", async () =>
{
    return await dbContext.Queryable<Employee>()
        .Where(e => e.Id == 123)
        .FirstAsync();
});

// Remove by prefix
await cache.RemoveByPrefixAsync("employee:"); // Xóa tất cả cache employee

3. Authentication & Authorization

using IMEX.CORE.Core.AuthencationBuilder;

// Cấu hình authentication
services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidateAudience = true,
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,
        ValidIssuer = "imex",
        ValidAudience = "imex",
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"))
    };
});

// Kiểm tra quyền
[Authorize]
[RequirePermission("EMPLOYEE",PermissionValue.View)]
public async Task<IActionResult> GetEmployee(int id)
{
    // Implementation
}

4. Logging

using IMEX.CORE.Core.LogHelper;

// Ghi log
LogHelper.LogInformation("Employee created: {EmployeeId}", employeeId);
LogHelper.LogWarning("Failed to send email to: {Email}", email);
LogHelper.LogError(exception, "Database connection failed");

// Structured logging
LogHelper.LogInformation("User {UserId} accessed {Resource} at {Timestamp}", 
    userId, resource, DateTime.UtcNow);

5. File Operations

using IMEX.CORE.Core.Helper;

// Đọc file
var content = await FileHelper.ReadFileAsync("path/to/file.txt");

// Ghi file
await FileHelper.WriteFileAsync("path/to/file.txt", content);

// Upload file
var result = await FileHelper.UploadFileAsync(file, "uploads/");

// Xóa file
await FileHelper.DeleteFileAsync("path/to/file.txt");

🏗️ Kiến trúc

System Architecture

┌───────────────────────────────────────────────────────────┐
│                    IMEX.Core                              │
├───────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │   Caching   │  │  Database   │  │  Security   │        │
│  │   System    │  │   Access    │  │   Layer     │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
├───────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │   Logging   │  │  Utilities  │  │   Models    │        │
│  │   System    │  │   & Helpers │  │   & DTOs    │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
├───────────────────────────────────────────────────────────┤
│                    .NET 8.0/9.0 Runtime                   │
└───────────────────────────────────────────────────────────┘

Cache Architecture

┌───────────────────────────────────────────────────────────┐
│                    Cache System                           │
├───────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │   L1 Cache  │  │   L2 Cache  │  │  Hybrid     │        │
│  │  (Memory)   │  │   (Redis)   │  │  Manager    │        │
│  │             │  │             │  │             │        │
│  │ • Fast      │  │ • Shared    │  │ • Smart     │        │
│  │ • Local     │  │ • Scalable  │  │ • Routing   │        │
│  │ • Limited   │  │ • Persistent│  │ • Fallback  │        │
│  └─────────────┘  └─────────────┘  └─────────────┘        │
├───────────────────────────────────────────────────────────┤
│              Performance Optimizations                    │
│  • Object Pooling    • Compression    • Lock-free         │
│  • Adaptive TTL      • Jittering      • Circuit Breaker   │
└───────────────────────────────────────────────────────────┘

🔧 API Reference

Core Classes

EnhancedMemoryCache
public class EnhancedMemoryCache : IMemCache
{
    // Set operations
    Task<T> GetAsync<T>(string key, Func<Task<T>> acquire, int cacheTimeInMinutes);
    void Set(string cacheKey, object cacheValue, int timeSpan);
    Task RemoveByPrefixAsync(string prefix);
    
    // Performance methods
    void SetFast(string cacheKey, object cacheValue, int timeSpan);
    void SetSmart(string cacheKey, object cacheValue, int timeSpan);
    void SetMemoryEfficient(string cacheKey, object cacheValue, int timeSpan);
}
DbContextBase
public class DbContextBase
{
    // Query operations
    ISugarQueryable<T> Queryable<T>();
    Task<List<T>> ToListAsync<T>();
    Task<T> FirstAsync<T>();
    
    // Command operations
    IInsertable<T> Insertable<T>(T insertObj);
    IUpdateable<T> Updateable<T>(T updateObj);
    IDeleteable<T> Deleteable<T>();
}
LogHelper
public static class LogHelper
{
    void LogInformation(string message, params object[] args);
    void LogWarning(string message, params object[] args);
    void LogError(Exception exception, string message, params object[] args);
    void LogDebug(string message, params object[] args);
}

🧪 Testing

Unit Tests

[Test]
public async Task Cache_Should_Store_And_Retrieve_Data()
{
    // Arrange
    var cache = new EnhancedMemoryCache(memoryCache, config);
    var testData = new { Id = 1, Name = "Test" };
    
    // Act
    await cache.SetAsync("test:key", testData, 10);
    var result = await cache.GetAsync<object>("test:key", () => Task.FromResult(testData));
    
    // Assert
    Assert.That(result, Is.Not.Null);
    Assert.That(result.Id, Is.EqualTo(1));
}

Performance Tests

[Test]
public async Task Cache_Performance_Should_Be_Optimal()
{
    // Arrange
    var analyzer = new CachePerformanceAnalyzer();
    
    // Act
    var results = await analyzer.RunBenchmarkAsync(100_000);
    
    // Assert
    Assert.That(results.SetOperations.Improvement, Is.GreaterThan(2.0)); // 2x faster
    Assert.That(results.MemoryUsage.MemorySavings, Is.GreaterThan(40.0)); // 40% less memory
}

📈 Performance

Benchmark Results

Operation Standard .NET IMEX.Core Improvement
Set Operations 100ns 35ns 3x faster
Get Operations 50ns 25ns 2x faster
Memory Usage 100% 40-60% 40-60% less
GC Pressure 100% 20-30% 70-80% less
Throughput 800K ops/sec 2.4M ops/sec 3x higher

Cache Performance

  • Hit Ratio: 85-95% trong production
  • Response Time: < 1ms cho cache hits
  • Memory Efficiency: 40-60% tiết kiệm memory
  • Concurrent Support: 10,000+ concurrent operations

Database Performance

  • Connection Pooling: Tối ưu hóa kết nối
  • Query Optimization: SqlSugar ORM với performance tuning
  • Read/Write Splitting: Tự động routing queries
  • Multi-tenant: Isolated performance per tenant

🤝 Đóng góp

Chúng tôi hoan nghênh mọi đóng góp từ cộng đồng! Để đóng góp:

  1. Fork repository
  2. Tạo branch cho feature mới (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push lên branch (git push origin feature/amazing-feature)
  5. Tạo Pull Request

Development Guidelines

  • Tuân thủ coding standards của .NET
  • Viết unit tests cho code mới
  • Cập nhật documentation
  • Đảm bảo backward compatibility

📄 License

Dự án này được phân phối dưới giấy phép MIT. Xem file LICENSE để biết thêm chi tiết.

📞 Liên hệ

  • Tác giả: truongnv2412
  • Công ty: IMEXsoft.,JSC
  • Email: support@imexsoft.com
  • Website: https://imexsoft.com

🙏 Acknowledgments

  • SqlSugar ORM - Powerful ORM framework
  • Serilog - Structured logging framework
  • StackExchange.Redis - High-performance Redis client
  • Microsoft.Extensions - .NET extension libraries

⭐ Nếu thư viện này hữu ích, hãy cho chúng tôi một star! ⭐

Made with ❤️ by truongnv2412

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2.35 292 9/17/2025
1.0.2.14 171 2/20/2025
1.0.2.12 135 2/20/2025
1.0.2.11 176 1/10/2025
1.0.2.10 148 1/10/2025 1.0.2.10 is deprecated because it is no longer maintained and has critical bugs.
1.0.2.8 143 12/30/2024
1.0.2.7 168 12/14/2024
1.0.1.78 147 10/25/2024
1.0.1.77 129 10/22/2024
1.0.1.75 195 10/18/2024
1.0.1.74 189 9/16/2024
1.0.1.72 172 9/9/2024
1.0.1.71 159 9/8/2024
1.0.1.70 154 9/6/2024
1.0.1.69 182 9/6/2024
1.0.1.68 147 9/4/2024
1.0.1.64 178 8/22/2024
1.0.1.62 180 8/20/2024
1.0.1.61 178 8/17/2024
1.0.1.60 148 8/15/2024
1.0.1.59 179 8/12/2024
1.0.1.57 172 7/18/2024
1.0.1.56 178 7/8/2024
1.0.1.55 168 6/20/2024
1.0.1.54 138 6/12/2024
1.0.1.52 141 6/11/2024
1.0.1.50 151 6/11/2024
1.0.1.49 167 5/23/2024
1.0.1.48 167 5/22/2024
1.0.1.46 182 5/9/2024
1.0.1.45 163 5/9/2024
1.0.1.44 166 4/22/2024
1.0.1.43 171 4/19/2024
1.0.1.42 167 4/19/2024
1.0.1.36 164 4/19/2024
1.0.1.35 168 4/7/2024
1.0.1.34 152 2/28/2024
1.0.1.32 223 1/31/2024
1.0.1.31 185 1/22/2024
1.0.1.30 167 1/16/2024
1.0.1.28 158 1/15/2024
1.0.1.27 206 1/8/2024
1.0.1.26 209 1/2/2024
1.0.1.25 189 1/2/2024
1.0.1.24 191 12/26/2023
1.0.1.23 191 12/4/2023
1.0.1.22 166 11/29/2023
1.0.1.21 173 11/25/2023
1.0.1.19 178 11/22/2023
1.0.1.18 155 11/22/2023
1.0.1.15 170 11/16/2023
1.0.1.14 173 11/16/2023
1.0.1.10 167 11/14/2023
1.0.1.9 176 11/9/2023
1.0.1.8 143 11/6/2023
1.0.1.7 169 11/3/2023
1.0.1.6 144 11/3/2023
1.0.1.4 168 11/2/2023
1.0.1.3 162 11/1/2023
1.0.1.1 182 10/30/2023