小编dee*_* zg的帖子

asp.net core 2.0 - 多个项目解决方案docker文件

[asp.net核心2.0和linux的docker]

我是docker的新手,并试图找出如何在我有2个项目的解决方案的情况下使用docker.我见过的所有教程都展示了单个项目.

所以,如果有人能够逐步展示解决方案,我会非常感激.

我有一个解决方案结构,如:

Solution.sln
|______WebAPIProject.csproj
|______ClassLibraryProject.csproj
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中,我已经为解决方案添加了docker支持并获得了这些文件:

在WebAPIProject下,它创建了这个Docker文件:

FROM microsoft/aspnetcore:2.0
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebAPIProject.dll"]
Run Code Online (Sandbox Code Playgroud)

然后,在单独的docker-compose'项目'下,我得到了:

泊坞窗,compose.ci.build.yml

version: '3'

services:
  ci-build:
    image: microsoft/aspnetcore-build:1.0-2.0
    volumes:
      - .:/src
    working_dir: /src
    command: /bin/bash -c "dotnet restore ./Solution.sln && dotnet publish ./Solution.sln -c Release -o ./obj/Docker/publish"
Run Code Online (Sandbox Code Playgroud)

docker.compose.yml文件

version: '3'

services:
  WebAPIProject:
    image: WebAPIProject
    build:
      context: ./WebAPIProject
      dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)

我确信它的路径是微不足道的,但我只是迷失了所有这一切,所以如果有人能够对它有所了解?

docker asp.net-core

27
推荐指数
4
解决办法
1万
查看次数

Docker容器中的asp.net核心与Azure App服务

我们现在显然可以将我们的asp.net核心应用程序部署到docker容器中.我浏览了关于"怎么做"的文档,但我找不到关于"为什么要这样做"的正确解释?

任何人都可以解释为什么会选择将asp.net核心应用程序部署到docker容器而不是azure app服务?

docker azure-web-app-service asp.net-core

25
推荐指数
4
解决办法
4482
查看次数

ASP.NET Core JWT映射角色声明为ClaimsIdentity

我想使用JWT保护ASP.NET Core Web API.另外,我想有一个选项,直接在控制器动作属性中使用来自令牌有效负载的角色.

现在,虽然我确实找到了如何将其与策略一起使用:

Authorize(Policy="CheckIfUserIsOfRoleX")
ControllerAction()...
Run Code Online (Sandbox Code Playgroud)

我想更好地选择使用通常的东西:

Authorize(Role="RoleX")
Run Code Online (Sandbox Code Playgroud)

其中Role将从JWT有效负载自动映射.

{
    name: "somename",
    roles: ["RoleX", "RoleY", "RoleZ"]
}
Run Code Online (Sandbox Code Playgroud)

那么,在ASP.NET Core中实现这一目标的最简单方法是什么?有没有办法通过一些设置/映射自动工作(如果是这样,在哪里设置它?)或者我应该在验证令牌后,拦截生成ClaimsIdentity并手动添加角色声明(如果是,在何处/如何操作)那?)?

c# asp.net-core asp.net-core-webapi

23
推荐指数
3
解决办法
4万
查看次数

ASP.NET标识 - 自定义UserManager,UserStore

我对自定义UserManager和UserStore有点困惑.开箱即用的解决方案带有EF实现,我不想使用EF,而是我自己的使用MSSQL的DAL.我想要基于声明的安全性,其中一个用户声明将是角色.

我感到困惑的是我应该做的整个过程.从我到目前为止看来,我需要自己创造

CustomApplicationUser : IUser
CustomUserManager : UserManager<CustomApplicationUser>
CustomUserStore : IUserStore, IUserClaimStore
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 我是否在正确的轨道上?
  2. 我想在我的CustomUserManager上使用IsInRole()方法,但不知道如何使用Claims.我知道有一个IUserRoleStore.IsInRole()默认UserManager在UserManager.IsInRole()中调用,但我不想在我的数据库中使用单独的Roles表.我想要的是Claim DB表,其中一个ClaimType是Role,而UserManager.IsInRole()使用它.现在,我不确定为什么我需要UserManager.IsInRole()方法?我真的需要有自定义ClaimsIdentity SignInManager.CreateUserIdentityAsync()之类的东西,并在那个调用我自己的实现填写所有用户信息,包括声明?

这对我来说似乎有点混乱,我似乎无法找到一些关于它的清晰文档,所以如果有人能够对它有所了解,我将非常感激!

asp.net-mvc asp.net-identity asp.net-identity-2

12
推荐指数
1
解决办法
2万
查看次数

如何在单击React Hooks方式上发送请求?

如何发送带有响应钩的按钮单击上的HTTP请求?或者,就此而言,如何在单击按钮时产生任何副作用?

到目前为止,我看到的是“间接”的东西,例如:

export default = () => {
  const [sendRequest, setSendRequest] = useState(false);

  useEffect(() => {
    if(sendRequest){
       //send the request
       setSendRequest(false);
    }
  },
  [sendRequest]);

  return (
    <input type="button" disabled={sendRequest} onClick={() => setSendRequest(true)}
  );
}
Run Code Online (Sandbox Code Playgroud)

那是正确的方式还是还有其他模式?

reactjs react-hooks

9
推荐指数
3
解决办法
8496
查看次数

解构可空的对象

Typescript(或者我们应该说ES)不允许对null/undefined对象进行解构.它抛出TypeError.

所以,让我们说我们有类似的东西

let {a,b,c} = D;
Run Code Online (Sandbox Code Playgroud)

哪里D可以null.

如果我们需要使用空值检查进行条件解构赋值,那么我们会为那些旨在减少它的东西创建样板代码.

在这样的情况下使用它的最优雅的方法是什么,或者我们应该仅为保证的非空对象使用解构?

typescript ecmascript-6

6
推荐指数
1
解决办法
3555
查看次数

WPF 应用程序的标准应用程序状态管理

[免责声明:我来自前端、react/Angular 世界,我使用 redux/ngrx 进行状态管理。]

\n\n

WPF 应用程序中是否有一些管理应用程序状态的标准方法?

\n\n

我\xe2\x80\x99见过一些内置命令的使用。另一方面,我\xe2\x80\x99见过Redux.NET库。

\n\n

对于其中一个项目,我需要对应用程序状态管理做出决定,并且 i\xe2\x80\x99d 喜欢采用某种标准方法。

\n\n

那么,是否有一个单一的标准方法或者可能是最常用的 3 种方法的列表?

\n

wpf state-management

6
推荐指数
0
解决办法
3010
查看次数

为许多并发请求微调.NET ServicePoint

免责声明:我试图从人们的第一手经验中感受真实世界的数字.此时不需要实现细节/代码.

我们有web api,它将使用队列/消息代理将消息丢弃,然后,windows服务将读取队列以提供不同类型的http通知(简单地说:向许多网址/主机发送许多http请求).在窥视时间,这些数字可能是每秒数千.

考虑到ServicePoint最大连接限制加上ThreadPool线程,我试图找到正确的调整发送部分的措施.所以,潜在的问题是:

  1. 什么数量的并发http请求(最有可能通过HttpClient)听起来合理,每个Windows服务?
  2. 您在没有问题的项目中使用了哪些最大值?
  3. 如果为了完成高数字有一些特定的事情要注意,请指明它们.

笔记:

  • 目前,我并不关心队列/消息代理限制.为了讨论起见,我们可以假设这部分是无限的.

  • 这些请求非常轻量级,其中大部分都有几kbs的数据,因此预计响应时间非常短

.net architecture windows-services httpwebrequest dotnet-httpclient

5
推荐指数
0
解决办法
253
查看次数

DDD - 乐观并发属性(etag 或时间戳)是否应该成为域的一部分?

从理论上讲,如果我们在聚合根级别实现乐观并发(更改 AR 中的实体会更改 AR 上的版本),并且假设我们使用时间戳作为版本属性(只是为了简单起见) - 时间线应该是 AR 上的属性还是应该是一侧和另一侧的读取模型的一部分(例如更新)是应用程序服务的单独参数,例如:

[伪]

public class AppService{
.
.
.
   public void UpdateSomething(UpdateModelDTO model, int timestamp)
   {
      repository.GetModel(model.Identifier);
      model.UpdateSomething(model.something);
      repository.ConcurrencySafeModelUpdate(model, timestamp);
   }
}
Run Code Online (Sandbox Code Playgroud)

我看到两者的优点/缺点,但想知道哪个是按书本解决方案?

[更新]

为了回答@guillaume31的问题,我预计通常的情况是:

  1. 读取时,版本标识符被读取并发送给客户端
  2. 更新时,客户端发回标识符,如果版本标识符不相同,存储库将返回某种错误。

我不知道它是否重要,但我想将创建/更新版本标识符本身的责任留给我的数据库系统。

domain-driven-design

5
推荐指数
1
解决办法
2533
查看次数

如何处理(部分)依赖的聚合根?

我有Product.

Product有一些GeneralDetails,让我们说:sku, name, description。同时,会计师可以Product在某些ProductCalculations部分放置不同的值,例如purchasePrice, stockLevelExpenses, wholeSalesPrice, retailPrice.

所以,到目前为止,Product看起来像:

class Product{
   GeneralDetails Details;
   ProductCalculations Calculations;

   ChangeDetails(GeneralDetails details){}
   Recalculate(ProductCalculations calculations{}

}
Run Code Online (Sandbox Code Playgroud)

此设置将生成Product聚合根。但是现在,我想以一种方式拆分它,即产品经理可以输入/更新产品详细信息,但随后该会计师可以介入并独立地更改给定产品的计算,而不会出现并发问题。这将建议将其拆分为 2 个单独的聚合根。

但是,删除ProductDetails聚合也必须意味着删除ProductCalculations,它应该以事务性的方式发生。

假设它们是 2 个聚合根,这意味着它们有 2 个具有相应Delete方法的独立存储库,如何将其实现为原子事务?

我唯一能想到的是在ProductDetails被删除时引发事件,有一个处理程序(DomainService),它使用一些特殊的存储库来处理多个聚合根上的事务。

这种方法有什么问题和/或有更好的方法来处理它吗?

附注。ProductDetails删除时我不能允许最终一致性。

PS2。根据来自@乔恩的意见,Details以及Calculations创建和删除应在当的方式同步Details在创建/删除,Calculations也应创建/删除。另一方面,它们的更新应该是完全独立的。

domain-driven-design

5
推荐指数
1
解决办法
351
查看次数