小编fli*_*art的帖子

ServiceStack与ASP.Net Web API

我想编写一个新的REST样式API并查看ServiceStack并且非常喜欢它.但是,我已经看到Microsoft已经发布了ASP.Net Web API项目,作为新MVC 4 beta的一部分.有没有人看过新的Web API项目?你能给出每个系统的优缺点吗?

servicestack asp.net-web-api

298
推荐指数
4
解决办法
8万
查看次数

GCC是否支持C++ AMP

有谁知道,如果有任何计划发展以g ++语言支持(GCC)为新的C++ AMP标准,该标准被释放最近被微软作为一个开放的规范?我看到有人已在他们的论坛上询问英特尔支持.但是我没有看到GCC的任何东西.

c++ c++-amp

29
推荐指数
2
解决办法
5629
查看次数

C#RabbitMQ客户端线程安全

ConnectionFactory factory = new ConnectionFactory {HostName = "localhost"};

using (IConnection connection = factory.CreateConnection())
using (IModel channel = connection.CreateModel())
{
    channel.QueueDeclare("hello", false, false, false, null);
    for (int i = 0; i < 100000; i++)
    {
        MemoryStream stream = new MemoryStream();

        var user = new User 
                       {
                           Id = i
                       };

        Serializer.Serialize(stream, user);


        channel.BasicPublish("", "hello", null, stream.ToArray());

    }

}
Run Code Online (Sandbox Code Playgroud)

我有上面的代码,我对线程安全感到好奇.

我不确定,但我想ConnectionFactory是线程安全的.但后来我不确定IConnection线程是否安全?我应该为每个请求创建连接吗?或者说是一个持久的连接?那怎么样IChannel

另外,我应该将连接存储为ThreadLocal吗?或者我应该为每个请求创建一个连接?

c# multithreading thread-safety rabbitmq

11
推荐指数
1
解决办法
7821
查看次数

有没有办法知道是否正在等待任务?

我有一个方法

public Task<Task> DoSomeWorkOnARemoteMachine()
Run Code Online (Sandbox Code Playgroud)

这非常具有描述性,通过以下方式在远程计算机上执行某些工作:

  1. 在消息总线上排队消息,表明应该完成工作
  2. 远程代理接收消息并执行工作
  3. 工作完成,代理在消息总线上对消息进行排队,表示工作已完成
  4. 调用工作的应用程序会收到工作完成的消息

我使用的原因Task<Task>是因为第一个Task<>是排队消息; 当在Task远程机器上完成工作时(即,当收到来自代理的消息时),内部完成.远程代理在执行工作期间捕获的任何异常都将与完成消息一起传递,并在内部Task完成时重新抛出.

要调用此方法,我使用:

await await DoSomeWorkOnARemoteMachine();
Run Code Online (Sandbox Code Playgroud)

等待消息排队等待执行作业,以及完成作业并接收任何异常.但是,如果我对是否在远程代理上完成作业不感兴趣,我可以将其称为如下:

await DoSomeWorkOnARemoteMachine();
Run Code Online (Sandbox Code Playgroud)

这不是await内心的Task.但是,内部Task(从远程代理接收消息,并重新抛出异常)仍然会在某个时刻执行.我觉得这有点浪费,我不想在没有await结果时执行它.

因此我的问题是:是否有可能Task"知道"它是否被await编辑而不是执行,如果不是,或执行一些其他代码路径(例如空Task体).

我确实意识到我可以实现的替代方案,例如传递"fire and forget"标志,或者为"fire and forget"添加重载.如果我可以在没有客户端API更改的情况下实现它,那将是很棒的

涉及实现这种远程工作执行的其他项目的答案也会很棒!

c# asynchronous task-parallel-library async-await

10
推荐指数
1
解决办法
218
查看次数

部署Azure WebJob的子文件夹

我正在使用Visual Studio将WebJob部署到Azure,但项目的构建输出文件夹中的子目录都没有复制到Azure(根据查看FTP文件夹并且由于应用程序未正确执行).有没有办法让部署复制所有文件和文件夹?

更多信息:子目录来自引用的项目,文件确实设置了"始终复制".它们确实出现在WebJob项目的输出构建目录中

更新: 所以似乎在某些时候这是固定的,现在按预期工作

azure azure-webjobs

8
推荐指数
1
解决办法
2397
查看次数

基于Accept标头的Web API操作选择

队列长篇介绍......

我有一个定义的资源

http://my-awesome-product.com/api/widgets/3
Run Code Online (Sandbox Code Playgroud)

它表示一个3的小部件id.在Web API中,我将定义一个控制器来为该资源提供服务,如下所示:

public class WidgetsController : ApiController
{
    public Widget Get(int id)
    {
        return new Widget(...);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,Widget该类可能非常大,并且希望将带宽从数据库保存到Web服务器,并且从Web服务器到客户端,我创建了几个DTO类,其中包含有限数量的整体字段Widget.例如:

public class WidgetSummary
{
    public int Id { get; set; }
    public string Code { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
}

public class FullWidgetForEditing
{
    public int Id { get; set; }
    public string Code { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api asp.net-web-api-routing

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

Docker 容器的仅主机网络

运行 Docker 容器时,我想设置容器的网络,以便容器只能在主机正在侦听的 (TCP) 端口上与主机进行通信。我不希望容器能够访问互联网、同一主机上运行的其他容器或主机所连接的网络。如果我运行带有 VMWare 之类的虚拟机,我会选择“仅主机”网络选项,该选项会在来宾虚拟机和具有上述属性的主机之间创建专用网络。

我研究过使用 Docker,--net=none但我不知道该朝哪个方向配置网络来实现我的目标。TAP/TUN 似乎是可行的方法,但我希望得到一些指导

network-programming docker

6
推荐指数
2
解决办法
4660
查看次数

将货币格式化为字符串时指定货币

我想将具有关联货币的数字格式化为特定于语言环境的字符串。该标准.ToString("C", CultureInfo.CreateSpecificCulture("xxx"))产生错误的输出,因为它使用区域设置的货币而不是值实际代表的货币。

我正在寻找一种方法来做 JQuery Globalize 所做的事情,但是在 C# 中(见这里,下面的相关表)

                                          语言环境
                         -----------------------------------------
3 个字母的货币代码 | en (英语) | de (德语) | zh(中文)
--------------- | ------------ | ----------- | ------------
美元 | 1.00 美元 | 1,00 美元 | 1.00 美元
欧元 | €1.00 | 1,00 欧元 | 1.00 欧元
人民币 | ¥1.00 | 1,00 元人民币 | ? 1.00
日元 | ¥1 | 1 ¥ | 日元 1
英镑 | 1.00 英镑 | 1,00 英镑 | 1.00 英镑
巴西雷亚尔 1.00 …

c#

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