分类 .NET 下的文章

ASP.NET Core第三方框架模块化学习心得

最近在学习过程中,接触到ASP.NET Core第三方框架的模块化概念。比如Abpvnext 和 AceFarmework两个框架都是以模块化作为架构基础。

一开始没有理解什么是模块化,以及模块化的好处,现在大概明白了一些了。总结下心得:

模块化简单说:就是把一个项目封装成一个模块。

把一个项目封装成模块的方法:

1,假设我们创建一个新项目叫EntityFrameworkCore,并且用AceFarmework框架。

2,在新项目下新建一个类文件 EntityFrameworkCoreModule.cs,创建一个实体类User.cs,创建对应的DbContext类

3,根据框架说明,通过Nuget安装对应的包

阅读剩余部分

.NET 6 中的常量内插字符串

编写代码时,我们常常需要组合字符串。如下代码:

string scheme = "https";
string host = "xxx.com";
int port = 8080;

Console.WriteLine(string.Format("{0}://{1}:{2}", scheme, host, port));

但是,这种替换方式容易会产生错误,比如写错参数顺序,索引数字无效等。

因此,推荐的写法是使用字符串内插,代码如下:

Console.WriteLine($"{scheme}://{host}:{port}");

这样更容易阅读,而变量的值会被直接替换到字符串中。

阅读剩余部分

.NET 6 使用JWT Bearer认证和授权的步骤

什么是JWT,什么是JWT Bearer就不累述了。在ASP.NET WEBAPI中使用JWT Bearer的时候比较多,最近我终于学会配置了。
第一步:对应项目安装Microsoft.AspNetCore.Authentication.JwtBearer

第二步:appsettings.json中,添加JWT的配置,参考代码如下,注意SecretKey不能设置成太短的纯数字,不然要报错

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "JWT": {
    "SecretKey": "weblog@vip.qq.com",
    "Issuer": "2222",
    "Expires": 10,
    "Audience": "22333"
  }
}

阅读剩余部分

.NET Core使用IKVM实现对接Java

.NET Core使用C#实现对接Java,没有成功,现在来试试:使用IKVM实现对接Java
不再过多深究其细节实现差异,采用稳妥方式借用IKVM直接在C#中复制对接方Java代码应该可以搞定(https://github.com/ikvm-revived/ikvm)

根据经验来看,我只用到加密,应该只需要用到IKVM.OpenJDK.CoreIKVM.OpenJDK.Security两个库,于是我们在nuget上下载.NET Framework实现版本,我使用的是.NET Framework 4.7.2,想想.NET Framework 4.6+可以适配.NET Standard,那是否也可以经过编译后,通过.NET Core添加程序集引用呢?

.NET Framework 4.7.2引入上述核心库后,在控制台测试验证加密、验签一点问题都么有,好了,接下来则是将其编译,在.NET Core 3.1中添加程序集进行调用,加载程序集方法时直接抛出大致如下异常。

阅读剩余部分

.NET Core使用C#实现对接Java

与第三方对接最麻烦的是语言不同,因语言不同内置实现相关标准加密算法还是略微有所差异。

对接单点登录场景再寻常不过,由于时间紧迫且对接方使用Java,所以留给我对接开发和联调的时间本就不多,于是乎,在熬夜发版后,继而开始提前研究对接方所提供的加密方式大致处理。

数据对接加密算法采用RSA SHA1 1024位、同时呢,在Java中对于1024或其他位数,对密文有长度限制,所以利用了分段加密,密文长度为117,解密长度为128,如此通用处理方式,网上肯定是可以搜索到的,截取加密部分片段,如下:

阅读剩余部分