小编Eri*_*k T的帖子

在CQRS/ES系统中存储命令有什么好处?

我正在研究CQRS /事件存储系统.目前,我使用的模式是命令是同步的.也就是说,在命令完成之前,用户界面不显示完成的操作,并且向用户显示成功/失败.在执行命令期间,生成的所有事件(例如,在聚合根Y上发生的动作X)存储在持久存储器中.

我读过的所有CQRS描述都实现了命令存储.我想知道在我的情况下是否需要这个.

另一个注意事项 - 有很多长时间运行的命令类型操作,因此我将操作分解为生成事件的命令,然后事件又发出更多命令.根据聚合根的状态,这些命令是幂等的.我不知道这会对答案产生什么影响,但值得指出.

谢谢,埃里克

design-patterns cqrs event-store

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

如何在CI服务器上使用NuGet包与ASP.NET网站

我有许多ASP.NET Web窗体网站(没有.csproj文件的网站),我试图弄清楚如何最好地使用NuGet包.使用Visual Studio 2015时,通过UI添加NuGet包可以正常工作(站点根目录中有packages.config),并且构建会将二进制文件放在bin文件夹中.

问题是尝试通过MSBuild在TeamCity上构建项目.对于其他项目,我可以将NuGet.exe与restore命令一起使用(对csproj或sln文件),并正确下载包并将其包含在输出中.但是,这不适用于网站,因此编译因缺少文件而失败.

作为最后的手段,我可​​以编写一个自定义脚本/构建步骤来手动将程序集复制到bin文件夹,但我想避免这种情况.我错过了什么吗?有没有办法将NuGet用于Visual Studio之外的网站?

asp.net teamcity webforms vs-web-site-project nuget

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

Kestrel 对于在 ALB 后面的 AWS ECS 上运行的 ASP.NET Core 网站是否足够?

我正准备将 ASP.NET Core MVC 网站部署到生产环境。该应用程序将部署到AWS ECS(EC2容器服务)。不建议使用 Kestrel 来处理来自互联网的流量,并且建议在前面放置一个反向代理。我的问题是,AWS ALB足够好吗?它执行 SSL 终止、负载平衡,并支持 HTTP/2 和 WebSocket。

我相信我正在放弃压缩(据我所知,ALB 或 Kestrel 都不支持它)。这个设置缺少什么?我应该考虑额外的反向代理(haproxy/nginx)吗?额外的复杂性已经足够了,如果没有必要的话,我不想走这条路。

asp.net amazon-web-services amazon-ecs kestrel-http-server asp.net-core

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

如何为主体模型上的属性提供自定义模型绑定器?

我在为 ASP.NET Core 2.1 Web API 服务编写自定义模型绑定程序时遇到问题。我有一个如下的操作方法

public async Task<IActionResult> SaveAccountEvents([FromRoute] Guid accountId, IList<AccountEvent> events)
{
}
Run Code Online (Sandbox Code Playgroud)

AccountEvent 类有很多属性,包括

[BindProperty(BinderType = typeof(CustomBinding))]
public string EventBody { get; set; }
Run Code Online (Sandbox Code Playgroud)

目的是我希望来自客户端的此属性的值是字符串或 JObject (JSON)。这个想法是,客户端可以发送字符串化的 JSON 或 EventBody 中的 JSON,模型会将其存储为字符串 - 最终作为字符串化的 JSON。

我遇到的问题是在我的自定义绑定中,bindingContext.ValueProvider.GetValue永远不会返回任何内容。查看该属性,它只包含一个RouteValueProvider. 我看不出有什么方法可以从身体中获取价值。是否有其他方法可以在 ASP.NET Core Web API 中自定义 JSON 反序列化?

更新:

客户端使用此 API 发送事件数据。事件数据由一个信封组成,其中包含事件名称、发送日期、发起事件的用户等内容。在当前版本中,实际事件数据以字符串化 JSON 形式发送。所以现在,请求看起来像这样(注意事件主体是一个字符串):

{
  "eventDate": "20180909",
  "eventBody": "{
      \"newLastName\": \"bob\",
      \"primaryApplication\": \"bob\"
    }"
}
Run Code Online (Sandbox Code Playgroud)

变化是我希望能够接受 JSON 格式的事件主体。在这种情况下,客户端应该能够发送(请注意,事件正文是正确的 JSON):

{
  "eventDate": "20180909",
  "eventBody": {
    "newLastName": …
Run Code Online (Sandbox Code Playgroud)

c# model-binding json-deserialization asp.net-core asp.net-core-webapi

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

反射是确定动态对象上属性/方法的存在/缺失的最佳方法吗?

我有许多接受动态对象参数的数据访问方法(即动态foo).由于现有代码,我无法使用接口来定义输入参数.我在数据访问方法中设置属性,但使用动态而不检查属性/方法是否存在让我感到紧张.

所以我正在寻找一种方法来检查动态对象的运行时属性/方法,但由于性能影响,我宁愿不使用反射.是否有其他/推荐的方法来查询动态对象的属性/方法?

谢谢,埃里克

c# language-features dynamic

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

是否可以在不发布数据的情况下更改Azure队列消息不可见性超时?

使用1.6 SDK(版本2011-08-18),您可以更改队列消息的隐身超时.但是,阅读REST文档,似乎表明您必须回发邮件.我知道该操作是为了更新整个消息(包括隐形超时),但我只想更改不可见性超时而不必重新发送整个消息.这可能吗?

谢谢,埃里克

azure azure-storage

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

如何发布所有目标框架

我正在TeamCity中为.Net Core项目构建一组构建模板.除了控制台项目外,一切都很好.问题是,当我发布解决方案时,我需要指定框架版本.在构建中没有其他任何点我需要知道框架.在发布.sln文件时,至少会出现这种情况,控制台项目只有一个框架.

所以现在我处于这样一种情况,我需要弄清楚控制台项目应该以什么框架为目标.我可以阅读各种XML文件,但我希望我不需要.是否有一些内置的方法可以查询给定解决方案使用的框架?

例如,像(PowerShell)

$frameworks = & dotnet.exe --<what I want> .\MySolution.sln
for ($framework in $frameworks) {
  & dotnet.exe publish -f $framework .\MySolution.sln
}
Run Code Online (Sandbox Code Playgroud)

这样,每次使用新框架时,我都不需要修改构建系统.我在CLI仓库中探索过,但我找不到能满足我需要的命令.打开.csproj文件是我唯一的希望吗?

c# msbuild csproj visual-studio .net-core

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

使用HttpClient时,如何在Content-Type中不排除charset?

我试图在.net核心项目中使用HttpClient向接受/返回JSON的REST服务发出GET请求.我不控制外部服务.

不管我如何努力,我想不出来设置Content-Type头的应用程序/ JSON .

我用的时候

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
Run Code Online (Sandbox Code Playgroud)

它发送HTTP GET请求:

Content-Type: application/json; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

但是,此特定服务不适用于此.它仅在标题为:

Content-Type: application/json
Run Code Online (Sandbox Code Playgroud)

我已经尝试设置标头而不进行验证,我在网络/ SO上找到的所有方法都不适用于.net核心.所有其他发送HTTP请求的方法在.net核心中都不可用,所以我需要弄明白这一点.如何在内容类型中排除字符集?

编辑与解决方法

如答案中所述,该服务应使用Accept标头.解决方法(正如Shaun Luttin在他的回答中所说)是在GET中添加一个空内容(什么?GET没有内容!是的......).它不漂亮,但确实有效.

.net c# dotnet-httpclient asp.net-core

3
推荐指数
1
解决办法
2421
查看次数

基于主机名路由时如何在本地测试 haproxy?

我有一个相当复杂的 haproxy 配置,它根据请求的主机(通过 acl + hdr_dom)路由到后端。如果我想在本地测试配置,我必须更改要测试的主机的分辨率(例如,通过更改主机文件以将主机解析为127.0.0.1)。然后我可以使用 wget 或curl 在本地测试 haproxy 配置,然后重置主机文件。

然而,我想要进行自动化测试,并且在自动化测试中改变系统级的东西让我感到紧张。在我以自动方式更改主机文件的路径之前,有没有办法告诉 haproxy“假装此请求是向 xxx.yyy.com 发出的”?我可以采取其他方法吗?

谢谢

automated-tests haproxy

3
推荐指数
1
解决办法
3658
查看次数

如何下载我在门户网站中创建的Azure资源组的模板json?

我试图找到一种方法来检索我在门户网站中创建的Azure资源组的JSON版本.我查看了所有PowerShell文档,尝试从门户网站抓取JSON,但都无济于事.有一些早期的问题表明它不受支持,但它们都相当陈旧(就Azure功能发布速度而言).

有没有办法获得在Portal UI中创建的资源组的JSON?或者模板是唯一的方法吗?

azure azure-resource-manager

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

如何在ASP.NET Core中返回自定义HTTP状态/消息而不返回对象,IActionResult等?

我有一个ASP.NET Core Web API网站,启用了Swagger生成和UI。为了使Swagger起作用(至少自动起作用),必须键入controller方法的返回值。例如,

public async Task<Employee> LoadEmployee(string id)
Run Code Online (Sandbox Code Playgroud)

但是,我需要从此操作返回自定义HTTP状态代码和内容。我看过的所有示例都使用StatusCode方法,或返回其他一些对象。这样做的问题是Swagger不知道操作的返回类型是什么,因此无法生成API规范。

有什么方法(异常,控制器上的方法等)返回自定义代码/内容,同时保留签名?我已经看到了使用自定义中间件的解决方案,但是似乎很常见的情况是应该构建一些中间件。

c# asp.net-web-api swagger asp.net-core

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

如何在不使用对话框的情况下创建看起来像jQuery对话框的div?

我正在使用knouckout js编写一个类似于界面的向导.系统运行良好,但我需要在对话框中显示每个页面/步骤.jQuery对话框在系统的其他地方使用,并具有所需的样式,按钮等.

目的是让数据模板绑定到该div(或者能够更改div的内容)而不调用dialog().原因是让MVVM使用这种方式的方法是一件麻烦事.

有没有办法做到这一点?

谢谢,埃里克

jquery jquery-ui mvvm knockout.js

0
推荐指数
1
解决办法
1028
查看次数