小编Lal*_*man的帖子

StringContent vs ObjectContent

我正在使用System.Net.Http的HttpClient使用以下代码使用"POST"调用REST API:

using (HttpRequestMessage requestMessage = new HttpRequestMessage(
                                           HttpMethod.Post, new Uri(request)) { })
{
     response = await httpClient.PostAsync(request, objectContent);
}
Run Code Online (Sandbox Code Playgroud)

"objectContent"目前是这个 -

objectContent = new ObjectContent(jsonContent.GetType(),
                                  jsonContent,
                                  new JsonMediaTypeFormatter());
Run Code Online (Sandbox Code Playgroud)

我想知道如果这是一个StringContent而不是像这样的ObjectContent会有什么不同?

objectContent = new StringContent(content);
objectContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
Run Code Online (Sandbox Code Playgroud)

两者都很好.因为它是JSON,我倾向于认为StringContent是有意义的.但是什么时候使用ObjectContent,因为几乎所有发送的内容都是"字符串".

c# serialization json httpclient dotnet-httpclient

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

SQL Server 100%CPU利用率 - 一个数据库显示高CPU使用率

我们有一个SQL服务器,有大约40个不同的(每个约1-5GB)数据库.该服务器是一个8核2.3G CPU,32G的RAM.27Gig固定到SQL Server.CPU使用率总是接近100%,内存消耗约为95%.这里的问题是CPU经常接近100%,并试图了解原因.

我已经运行了初步检查,看看哪个数据库通过使用 - 这个脚本有助于高CPU,但我无法详细说明真正消耗CPU的数据.最高查询(来自所有数据库)只需要大约4秒钟即可完成.IO也不是瓶颈.

记忆会成为罪魁祸首吗?我检查了内存分裂,OBJECT CACHE占用了大约80%的内存分配(27G)到SQL Server.如果涉及到很多SP,我希望这是正常的.运行探查器,我看到很多的重新编译,但主要是由于"临时表改变","延迟编译"等,并是不明确的,如果这些重新编译是计划的结果是越来越抛出缓存因内存压力

欣赏任何想法.

sql-server sql-server-2005 cpu-usage sql-server-performance

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

Task.StartNew()vs Parallel.ForEach:多个Web请求场景

我已经阅读了SO中的所有相关问题,但对于我的场景中触发多个Web服务调用的最佳方法有点困惑.

我有一个聚合器服务,它接受输入,解析并将其转换为多个Web请求,进行Web请求调用(不相关,因此可以并行触发)并合并发送回调用者的响应.现在使用以下代码 -

list.ForEach((object obj) =>
{
     tasks.Add(Task.Factory.StartNew((object state) => 
     {
           this.ProcessRequest(obj);
     }, obj, CancellationToken.None, TaskCreationOptions.AttachedToParent, TaskScheduler.Default));
});
await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)

await Task.WhenAll(tasks)来自斯科特Hanselman的帖子在那里说,

斯蒂芬说:"从可伸缩性的角度来看,更好的解决方案是利用异步I/O.当你通过网络呼叫时,没有理由(除了方便之外)在等待响应来阻止线程时背部"

现有代码似乎消耗了太多线程,并且处理器时间在生产负载上高达100%,这让我思考.

另一个替代方法是使用Parallel.ForEach,它使用分区器,但也"阻塞"调用,这对我的场景来说很好.

考虑到这是所有"异步IO"工作而不是"CPU绑定"工作,并且Web请求不会长时间运行(最多返回3秒),我倾向于认为现有代码足够好.但是这会提供比Parallel.ForEach更好的吞吐量吗?Parallel.ForEach可能使用"最小"数量的任务,因为分区因此最佳使用线程(?).我用一些本地测试测试了Parallel.ForEach,它似乎没有更好.

目标是减少CPU时间并提高吞吐量,从而提高可扩展性.是否有更好的方法来并行处理Web请求?

感谢任何投入.

编辑: 代码示例中显示的ProcessRequest方法确实使用HttpClient及其异步方法来触发请求(PostAsync,GetAsync,PutAsync).

c# parallel-processing multithreading task-parallel-library parallel.foreach

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

C# - 内部属性在quickwatch中"可读"但不使用反射?

我看到"快速监视"窗口可以访问所有属性,而不管库中类的访问限制(内部,受保护,私有),即使在完全不同的应用程序,库和命名空间中引用库也是如此.虽然我没有找到使用"反射"访问这些的方法.我特别想"阅读"(注意 - 只是阅读)程序集的内部属性.如果通过设计"内部"如何工作(在同一命名空间外无法访问),这是不可能的,那么VS.NET中的"快速监视"窗口是如何"读取"的呢?

这是我使用的示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestLib
{
    public class TestInteralProp
    {
        internal string PropertyInternal
        {
            get { return "Internal Property!";  }
        }

        protected string PropertyProtected
        {
            get { return "Protected Property!"; }
        }

        string PropertyPrivate
        {
            get { return "Private Property!"; }
        }

        public string PropertyPublic
        {
            get { return "Public Property!";  }
        }

        protected internal string PropertyProtectedInternal
        {
            get { return "Protected Internal Property!"; }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我为TestInernalProp类创建一个对象时,我可以在quickwatch中看到所有4个属性 -

道具

当我使用反射访问除公共属性(PropertyPublic)之外的任何这些,我得到一个空引用异常. …

c# properties protected access-modifiers internal

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

SQL Server - 有什么更好的替代方法可以提高大量插入的冗长事务的性能?

我有一个场景,屏幕上的用户操作导致在大约50个不同的表中实时创建新记录.用例的设计使得用户操作创建的新记录立即需要用户进行更改.所以没有离线或延迟创作的可能性.

话虽如此,显而易见的问题是 - 插入语句(以及一些额外的操作语句)都在事务中,这使得它成为一个非常冗长的事务.这将运行大约30秒,通常会导致超时或阻止其他查询.

原子性需要交易.有没有更好的方法可以拆分事务并保持一致性?或任何其他方法来改善目前的情况?

sql sql-server transactions transactional sqltransaction

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

Kendo UI - 缩小的JS大小为1.8MB

我的一位客户报告他们的目标网页加载缓慢.他们将ASP.NET MVC与Kendo UI结合使用.我做了一个快速检查,发现kendo.all.min.js约为1.8MB,客户说这是必需的.我确信他们不会在目标网页中使用所有的kendo UI元素.我之前从未使用过Keno但只使用过JQuery.有没有办法通过不包括所有内容来进一步最小化kendo脚本文件大小,只选择所需的元素并形成最终的JS(如在JQuery中挑选樱桃?).

谢谢!

performance kendo-ui kendo-asp.net-mvc

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