我有来自http://llvm.org/releases/3.9.0/LLVM-3.9.0-win32.exe的 clang 3.9
clang version 3.9.0 (branches/release_39)
Target: i686-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
Run Code Online (Sandbox Code Playgroud)
和gcc 6.2.0(Mingw-w64)
gcc (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 6.2.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Run Code Online (Sandbox Code Playgroud)
我的PC上没有安装MSVC,也没有安装Windows SDK.我需要clang的一些特殊功能,我想用gcc替换它,更具体地说用g ++替换它因为我使用C++.
当我尝试编译简单文件时,我得到:
致命错误:找不到'string'文件
这是否意味着我目前的clang安装不支持windows上的mingw?基本上我只想使用mingw-w64安装中的头文件和库.我一直在寻找解决方案而没有找到任何东西.我不知道该怎么办.
这是否也意味着我的clang安装取决于我没有的MSVC?
编辑: 从本页面的评论:http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt2/
这不再适用于LLVM的最新二进制文件(3.7.1,3.8,3.9),因为它们是使用Visual Studio和Visual Studio编译的.
您可以安装完整的Visual Studio 2015(大约8GB)或安装"Microsoft Visual C++ Build Tools 2015 Update …
微服务为此,微服务,但向一个简单的人解释什么是微服务?我是一个简单的程序员,几乎没有理论背景.但我不需要一个术语微服务来做我做的事情.有人可以用简单的话来解释我微服务是什么吗?亚马逊AWS =微服务?
我读到这个:https://en.wikipedia.org/wiki/Microservices但显然我太愚蠢了解这是什么.
ASP.NET Core项目模板随附,appsettings.json并且appsettings.Development.json默认情况下会在CreateDefaultBuilder中添加.
由于该项目DbContext是从我的ASP.NET核心项目分开(MyProject.Data),我必须执行IDesignTimeDbContextFactory,以便我的上下文像命令Add-Migration和Update-Database工作.我不想硬编码我的连接字符串,IDesignTimeDbContextFactory但在两个项目中重新使用配置.
我的解决方案很少但我想知道根据你的经验和意见最合理的是什么.
IDesignTimeDbContextFactory在我的ASP.NET核心(UI层)项目.IDesignTimeDbContextFactory在我的MyProject.Data项目中实现,并移动appsettings.json到configuration项目之间共享的某个根目录或(位于根目录)目录.database.json将其放在我的.sln文件旁边.我该如何分享?
编辑:
这里有类似的问题和答案:数据层中的appsettings.json与实体框架核心的ConnectionString,但它没有回答我的问题.根本没有关于数据层的任何内容.我不想重新使用逻辑来添加db上下文.我想在两个项目中重用连接字符串,以避免重复连接字符串.
我真的不喜欢注入定位器的想法,生成具有静态属性的类的经典方法有什么问题?IStringLocalizer它比在我想要本地化的任何地方注入要容易得多。
我知道使用这个接口允许我们交换实现以使用资源以外的东西进行本地化,但如果我们只想使用资源,值得这么麻烦吗?
我是WPF的新手,我不太清楚资源字典是如何工作的.我有Icons.xaml,看起来像:
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Canvas x:Key="appbar_3d_3ds" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
<Path Width="32" Height="40" Canvas.Left="23" Canvas.Top="18" Stretch="Fill" Fill="{DynamicResource BlackBrush}" Data="F1 M 27,18L 23,26L 33,30L 24,38L 33,46L 23,50L 27,58L 45,58L 55,38L 45,18L 27,18 Z "/>
</Canvas>
<Canvas x:Key="appbar_3d_collada" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
<Path Width="44" Height="30.3735" Canvas.Left="15" Canvas.Top="21.6194" Stretch="Fill" Fill="{DynamicResource BlackBrush}" Data="F1 M 39.2598,21.6194C 47.9001,21.6194 55.3802,24.406 59,28.4646L 59,33.4834C 56.3537,29.575 49.2267,26.7756 40.85,26.7756C 30.2185,26.7756 21.6,31.285 21.6,36.8475C 21.6,40.4514 25.2176,43.6131 30.6564,45.3929C 22.7477,43.5121 17.2,39.1167 17.2,33.9944C 17.2,27.1599 27.0765,21.6194 39.2598,21.6194 …Run Code Online (Sandbox Code Playgroud) https://identityserver4.readthedocs.io/en/release/intro/support.html
我目前在我的 web api 中自己发布令牌JwtSecurityToken,我使用标准的 ASP.NET Core 中间件调用AddJwtBearer来验证令牌。它工作正常。
与上述方法相比,使用 OpenID Connect(通过 IdentityServer4)会给我带来什么优势?如何回答自己的问题“我需要 OpenID Connect 吗?”
根据我对 OpenID Connect 的基本了解,它用于允许第三方访问您的 API。但是我为自己而不是第三方制作 API,我不知道为什么我应该比我的简单方法更喜欢 IdentityServer/OpenIddict。
我读到如果我想要单点登录,我应该使用它,但 JWT 本身不绑定到任何特定域,我可以使用纯 JWT 的单点登录(它们是独立的)
我知道它实现了某种发行令牌的标准。(协议)。如果我希望向第三方公开某些 API 可能会很好。但是对于内部 API 呢?值得使用吗?
这是我当前的身份验证流程(来自https://jonhilton.net/2017/10/11/secure-your-asp.net-core-2.0-api-part-1---issuing-a-jwt/)

我真正想要实现以保护我的 Web API:
有人可以帮我清除 OIDC/OAuth2 的模糊图片吗?即给我一些我自己的方式的缺点(实现我自己的流程)和使用 OIDC 代替我自己的流程的优势。
它可以避免我以后做什么(例如在客户端),什么不会。最特别的是,使用 OIDC 等标准流程开始每个项目是否好?将来会以某种方式使我受益吗?
这是一个很好的做法,无论操作是否很长,总是在我的操作中添加CancellationToken?
我现在正在将它添加到每个动作中,我不知道它是对还是错.
[Route("api/[controller]")]
public class DummiesController : Controller
{
private readonly AppDbContext _dbContext;
public DummyController(AppDbContext dbContext)
{
_dbContext = dbContext;
}
[HttpGet("{id}")]
public async Task<ActionResult<Dummy>> GetAsync(int id, CancellationToken ct) // <<----- should I always do this?
{
var dummy = await _dbContext.Dummies.AsNoTracking().SingleOrDefaultAsync(e=>e.Id == id, ct);
if (dummy == null) return NotFound();
return dummy;
}
}
Run Code Online (Sandbox Code Playgroud)
还有CancellationToken ct = default(CancellationToken)必要吗?
您认为用 MediatR 替换我的服务层或服务类是否合理?例如,我的服务类如下所示:
public interface IEntityService<TEntityDto> where TEntityDto : class, IDto
{
Task<TEntityDto> CreateAsync(TEntityDto entityDto);
Task<bool> DeleteAsync(int id);
Task<IEnumerable<TEntityDto>> GetAllAsync(SieveModel sieveModel);
Task<TEntityDto> GetByIdAsync(int id);
Task<TEntityDto> UpdateAsync(int id, TEntityDto entityDto);
}
Run Code Online (Sandbox Code Playgroud)
我想实现某种模块化设计,以便其他动态加载的模块或插件可以为我的主要核心应用程序编写自己的通知或命令处理程序。
目前,我的应用程序根本不是事件驱动的,并且我的动态加载的插件没有简单的方法来进行通信。
我可以将 MediatR 合并到我的控制器中,完全删除服务层,或者将它与我的服务层一起使用,只是发布通知,以便我的插件可以处理它们。
目前,我的逻辑主要是 CRUD,但在创建、更新、删除之前有很多自定义逻辑正在进行。
我的服务的可能替换看起来像:
public class CommandHandler : IRequestHandler<CreateCommand, Response>, IRequestHandler<UpdateCommand, Response>, IRequestHandler<DeleteCommand, bool>
{
private readonly DbContext _dbContext;
public CommandHandler(DbContext dbContext)
{
_dbContext = dbContext;
}
public Task<Response> Handle(CreateCommand request, CancellationToken cancellationToken)
{
//...
}
public Task<Response> Handle(UpdateCommand request, CancellationToken cancellationToken)
{
//...
}
public …Run Code Online (Sandbox Code Playgroud)