2 changed files with 164 additions and 7 deletions
@ -0,0 +1,106 @@ |
|||||
|
# LINGYUN.Abp.IP2Region |
||||
|
|
||||
|
## Introduction |
||||
|
|
||||
|
`LINGYUN.Abp.IP2Region` is an ABP framework module based on IP2Region, providing IP address query functionality. This module integrates the IP2Region.Net library and provides convenient IP address query services. |
||||
|
|
||||
|
## Features |
||||
|
|
||||
|
* Provides IP address query service |
||||
|
* Supports multiple caching strategies |
||||
|
* Built-in IP database file |
||||
|
* Supports ABP virtual file system |
||||
|
|
||||
|
## Installation |
||||
|
|
||||
|
```bash |
||||
|
dotnet add package LINGYUN.Abp.IP2Region |
||||
|
``` |
||||
|
|
||||
|
## Usage |
||||
|
|
||||
|
1. Add `[DependsOn(typeof(AbpIP2RegionModule))]` to your module class. |
||||
|
|
||||
|
```csharp |
||||
|
[DependsOn(typeof(AbpIP2RegionModule))] |
||||
|
public class YourModule : AbpModule |
||||
|
{ |
||||
|
// ... |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
2. Inject and use the IP query service: |
||||
|
|
||||
|
```csharp |
||||
|
public class YourService |
||||
|
{ |
||||
|
private readonly ISearcher _searcher; |
||||
|
|
||||
|
public YourService(ISearcher searcher) |
||||
|
{ |
||||
|
_searcher = searcher; |
||||
|
} |
||||
|
|
||||
|
public async Task<string> SearchIpInfo(string ip) |
||||
|
{ |
||||
|
return await _searcher.SearchAsync(ip); |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
## IP2Region.Net Library Description |
||||
|
|
||||
|
### Installation |
||||
|
|
||||
|
Install the package with [NuGet](https://www.nuget.org/packages/IP2Region.Net) |
||||
|
|
||||
|
```bash |
||||
|
Install-Package IP2Region.Net |
||||
|
``` |
||||
|
|
||||
|
### Usage |
||||
|
|
||||
|
```csharp |
||||
|
using IP2Region.Net.Abstractions; |
||||
|
using IP2Region.Net.XDB; |
||||
|
|
||||
|
ISearcher searcher = new Searcher(CachePolicy , "your xdb file path"); |
||||
|
``` |
||||
|
|
||||
|
### Cache Policy Description |
||||
|
| Cache Policy | Description | Thread Safe | |
||||
|
|-------------------------|------------------------------------------------------------------------------------------------------------|-------------| |
||||
|
| CachePolicy.Content | Cache the entire `xdb` data. | Yes | |
||||
|
| CachePolicy.VectorIndex | Cache `vecotorIndex` to speed up queries and reduce system io pressure by reducing one fixed IO operation. | Yes | |
||||
|
| CachePolicy.File | Completely file-based queries | Yes | |
||||
|
|
||||
|
### XDB File Description |
||||
|
Generate using [maker](https://github.com/lionsoul2014/ip2region/tree/master/maker/csharp), or [download](https://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.xdb) pre-generated xdb files |
||||
|
|
||||
|
## Performance |
||||
|
|
||||
|
``` ini |
||||
|
BenchmarkDotNet=v0.13.2, OS=macOS 13.4.1 (c) (22F770820d) [Darwin 22.5.0] |
||||
|
Apple M1, 1 CPU, 8 logical and 8 physical cores |
||||
|
.NET SDK=7.0.306 |
||||
|
[Host] : .NET 6.0.20 (6.0.2023.32017), Arm64 RyuJIT AdvSIMD |
||||
|
DefaultJob : .NET 6.0.20 (6.0.2023.32017), Arm64 RyuJIT AdvSIMD |
||||
|
``` |
||||
|
|
||||
|
| Method | Mean | Error | StdDev | |
||||
|
|-------------------------|-----------:|---------:|---------:| |
||||
|
| CachePolicy_Content | 155.7 ns | 0.46 ns | 0.39 ns | |
||||
|
| CachePolicy_File | 2,186.8 ns | 34.27 ns | 32.06 ns | |
||||
|
| CachePolicy_VectorIndex | 1,570.3 ns | 27.53 ns | 22.99 ns | |
||||
|
|
||||
|
## Contributing |
||||
|
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. |
||||
|
|
||||
|
Please make sure to update tests as appropriate. |
||||
|
|
||||
|
## License |
||||
|
[Apache License 2.0](https://github.com/lionsoul2014/ip2region/blob/master/LICENSE.md) |
||||
|
|
||||
|
## Links |
||||
|
|
||||
|
* [中文文档](./README.md) |
||||
Loading…
Reference in new issue