OsharpNS輕量級.net core快速開發框架簡明入門教程
教程目錄
-
從零開始啟動Osharp
1.1. 使用OsharpNS項目模板創建項目
1.2. 配置數據庫連接串並啟動項目
1.3. OsharpNS.Swagger使用實例(登錄和授權)
1.4. Angular6的前端項目啟動
-
Osharp代碼生成器的使用
2.1 生成器的使用
-
Osharp部分模塊使用
3.1 Osharp.Redis使用
-
Osharp深度學習和使用
4.2 多上下文配置(多個數據庫的使用)
4.3. 自定義模塊的定義(Senparc.Weixin的使用)
4.4. 繼續學習中....
OsharpNS官方資源
項目地址:https://github.com/i66soft/osharp-ns20
演示地址:https://www.osharp.org 直接使用QQ登錄可以查看效果
文檔地址:https://docs.osharp.org 正在完善中....
發布博客:https://www.cnblogs.com/guomingfeng/p/osharpns-publish.html 大神看這個文檔應該就能跑起來,從零開始啟動Osharp基於此文檔完成
VS生成器插件:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp
官方交流QQ群:85895249
OsharpNS.Redis使用
目錄
在Windows下配置Redis
-
前往https://github.com/MicrosoftArchive/redis/releases下載Windows版的Redis(.msi后綴),並完成安裝
點擊版本號,進入對應版本的下載界面,下載.msi格式的就行
安裝時基本都是默認選項,下面這個界面的時候注意選下下面的選項
-
Redis開啟遠程訪問,注意修改的配置文件一般是redis安裝目錄下
redis.windows-service.conf
網上很多文檔都說改redis.windows.conf, 改了也沒用;
其實我們可以查看一下服務里面的信息,看看到底使用的是那個配置文件,是哪個就改哪個,如下圖:
配置文件基本修改兩個地方即可;
修改完以后,重啟redis服務即可;
使用RedisDesktopManager連接Redis
-
下載工具,工具是收費的,我是在https://www.newasp.net/soft/391754.html下載的,病毒自己鑒別,也可以自己找鏈接,反正下載安裝了就行
-
配置連接
Osharp啟用Redis
- 修改appsettings.Development.json中的Redis節點
-
配置說明
2.1 Configuration配置連接串,因為Redis沒有配置密碼,只要填寫
localhost
,如有密碼,參考格式phone.qiadoo.com:6379,password=密碼
2.2 InstanceName配置Redis中的前綴,名稱中建議以
:
結尾,具體效果自己對比2.3 Enabled配置是否啟用,當然要改為
true
Osharp初始化緩存查看
-
啟動項目,進入Swagger界面
-
使用工具查看Redis的數據,可以看到系統初始化后加載的數據
2.1 FunctionRoles緩存,初始化代碼位於項目
OSharp.Permissions
,命名空間OSharp.Permission.SecurityPackBase
2.2 All_KeyValue_Key緩存,初始化代碼位於項目
OSharp.Permissions
,命名空間OSharp.Systems.SystemPack
OSharp緩存使用方法
- 緩存使用
// -----------------------------------------------------------------------
// <copyright file="TestController.cs" company="OSharp開源團隊">
// Copyright (c) 2014-2018 OSharp. All rights reserved.
// </copyright>
// <site>http://www.osharp.org</site>
// <last-editor>郭明鋒</last-editor>
// <last-date>2018-06-27 4:50</last-date>
// -----------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;
using CanDoo.Test.Identity;
using CanDoo.Test.Identity.Dtos;
using CanDoo.Test.Identity.Entities;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using OSharp.AspNetCore;
using OSharp.AspNetCore.Mvc;
using OSharp.AspNetCore.Mvc.Filters;
using OSharp.Caching;
using OSharp.Collections;
using OSharp.Core.Systems;
using OSharp.Data;
using OSharp.Dependency;
using OSharp.Entity;
using OSharp.Exceptions;
using OSharp.Identity;
using OSharp.Json;
namespace CanDoo.Test.Web.Controllers
{
[Description("網站-緩存測試")]
[ClassFilter]
public class TestCacheController : ApiController
{
private readonly IDistributedCache _cache;
public TestCacheController(IDistributedCache cache, IKeyValueStore keyValueStore)
{
_cache = cache;
}
[HttpGet]
[MethodFilter]
[Description("寫入緩存")]
public async Task<string> Write()
{
await _cache.SetAsync("TestWrite", "Test");
return "緩存寫入完成";
}
[HttpGet]
[MethodFilter]
[Description("讀取緩存")]
public async Task<string> Read()
{
return await _cache.GetAsync<string>("TestWrite");
}
[HttpGet]
[MethodFilter]
[Description("移除緩存")]
public async Task<string> Remove()
{
await _cache.RemoveAsync("TestWrite");
return "緩存移除完成";
}
}
}
- 鍵值對使用
// -----------------------------------------------------------------------
// <copyright file="SettingsController.cs" company="OSharp開源團隊">
// Copyright (c) 2014-2018 OSharp. All rights reserved.
// </copyright>
// <site>http://www.osharp.org</site>
// <last-editor>郭明鋒</last-editor>
// <last-date>2018-06-27 4:50</last-date>
// -----------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Threading.Tasks;
using CanDoo.Test.Systems.Dtos;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using OSharp.AspNetCore.Mvc.Filters;
using OSharp.AspNetCore.UI;
using OSharp.Core.Modules;
using OSharp.Core.Systems;
using OSharp.Data;
using OSharp.Exceptions;
namespace CanDoo.Test.Web.Areas.Admin.Controllers
{
[ModuleInfo(Order = 1, Position = "Systems", PositionName = "系統管理模塊")]
[Description("管理-系統設置")]
public class SettingsController : AdminApiController
{
private readonly IKeyValueStore _keyValueStore;
/// <summary>
/// 初始化一個<see cref="SettingsController"/>類型的新實例
/// </summary>
public SettingsController(IKeyValueStore keyValueStore)
{
_keyValueStore = keyValueStore;
}
/// <summary>
/// 讀取設置
/// </summary>
/// <param name="root">設置根節點,如投票設置為Votes</param>
/// <returns>相應節點的設置信息</returns>
[HttpGet]
[ModuleInfo]
[Description("讀取設置")]
public IActionResult Read(string root)
{
ISetting setting;
switch (root)
{
case "System":
setting = _keyValueStore.GetSetting<SystemSetting>();
break;
default:
throw new OsharpException($"未知的設置根節點: {root}");
}
return Json(new SettingOutputDto(setting));
}
/// <summary>
/// 保存指定設置項
/// </summary>
/// <param name="dto">設置信息</param>
/// <returns>JSON操作結果</returns>
[HttpPost]
[ModuleInfo]
[Description("保存設置")]
[ServiceFilter(typeof(UnitOfWorkAttribute))]
public async Task<AjaxResult> Update(SettingInputDto dto)
{
Check.NotNull(dto, nameof(dto));
Type type = Type.GetType(dto.SettingTypeName);
if (type == null)
{
return new AjaxResult($"設置類型\"{dto.SettingTypeName}\"無法找到");
}
ISetting setting = JsonConvert.DeserializeObject(dto.SettingJson, type) as ISetting;
OperationResult result = await _keyValueStore.SaveSetting(setting);
if (result.Succeeded)
{
return new AjaxResult("設置保存成功");
}
return result.ToAjaxResult();
}
}
}