json - Web Api,如何使用 ProtoBuf 提高性能

标签 json asp.net-web-api kendo-grid protocol-buffers

访问 Api 时,加载一大块 35 MB 的 Json 需要近 50 秒的时间。因此,为了提高性能,我将 WebApiContrib.Formatting.ProtoBuf 添加到我的项目中。数据显示在 Kendo UI 网格中。

我在这里缺少什么? View 中的数据类型或类型,或类似的东西?还有其他或更好的方法来提高性能吗?

这里有一些片段->

POCO 级:

[ProtoContract]
    public partial class KDAuftraege
    {
        [ProtoMember(1)]
        public int AngebotsNummer { get; set; }
        [ProtoMember(2)]
        public Nullable<int> BesuchsNummer { get; set; }
        [ProtoMember(3)]
        public Nullable<int> Kennummer { get; set; }
        [ProtoMember(4)]

查看:

var remoteDataSource = new kendo.data.DataSource({
        transport: {
            read: {
                url: '/api/WebApiAuftraege'

            },
        },

Controller :

public IQueryable<KDAuftraege> GetKDAuftraeges()
    {
        //return db.KDAuftraeges.Take(500);
        return db.KDAuftraeges;
    }

WebApi:

 config.Formatters.Add(new ProtoBufFormatter());

标题:

Cache-Control   no-cache
Content-Length  36227588
Content-Type    application/json; charset=utf-8
Date    Sat, 07 Jun 2014 09:23:54 GMT
Expires -1
Pragma  no-cache
Server  Microsoft-IIS/8.0
X-AspNet-Version    4.0.30319
X-Powered-By    ASP.NET
X-SourceFiles   =?UTF-8?B?YzpcdXNlcnNcb2xkc3BvcnRcZG9jdW1lbnRzXHZpc3VhbCBzdHVkaW8gMjAxM1xQcm9qZWN0c1xWaXM0XFZpczRcYXBpXFdlYkFwaUF1ZnRyYWVnZQ==?=
Anfrage-HeaderQuelltext anzeigen
Accept  */*
Accept-Encoding gzip, deflate
Accept-Language de,en-US;q=0.7,en;q=0.3
Connection  keep-alive
Cookie  __RequestVerificationToken=wMVQWPOkXsB2XDIFN_07RJDtKqN_90dLRYaBYJGsFSGEHTcQ1S6e15mPiWrvkMHS8HrAlHYAI0OVSkqtPQHFVMP5DxoyccijSktL_KsoEFU1; .AspNet.ApplicationCookie=RTQ61CfArDWHlWN06eOpZiZY6NmFGp0SwCCuR8bQCtnItSz6S8YTasQu4-uoRQCc-XqWDCZmtOpEb-b0SyIioQPomkm1BrKywMcVwt3bF_JBxORKGg-UNSHyPvFyBohiS1sJ354LpRHIjrPIA8rUexvZih4VrK9lvHu_sm21ncNXXV7jATKAjTdX7J3XvfxRsF11fhgDNtpXPEWxQPjD7Rkj5yvdqI-vbfr9tfQbszUR1O3oOjYcRxUvvVrJ7xnt-caxt-o_Kut1dixLEA241pMGPCHfetWK73Yp148K3X9By6ylHFOTEjjDwHZyHLIrBwwOZ-ujnaOf20jQzeZXaF16bHxeadLYuKK-Z2DpdzaJXPzZd2pBbzHJMFX7USfZmp7OZzLpOitLCMovGHwdRiLD0F2NR1a0iTHCgiZLvA8
Host    localhost:19275
Referer http://localhost:19275/MvcAuftraege
User-Agent  Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
X-Requested-With    XMLHttpRequest

最佳答案

选项1:更改您的 View 数据源代码(我认为这是正确的)

var remoteDataSource = new kendo.data.DataSource({
    transport: {
        read: {
            type: 'GET',
            headers: { Accept: 'application/x-protobuf' },
            url: '/api/WebApiAuftraege'
        },
    },

选项 2:更改 Web API 格式化程序,使 ProtoBuf 成为默认值:

config.Formatters.Insert(0, new ProtoBufFormatter());

关于json - Web Api,如何使用 ProtoBuf 提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095579/

相关文章:

c# - 在 C# 中反序列化 JSON 数组

javascript - Typescript Kendo UI 网格列类型错误

javascript - JQuery - 选择器仅获取剑道选项卡条中第一个网格的值

python - 使用 Python 将 JSON 对象导入 Postgresql

json - 如何将内存中的 JSON 字符串读入 Spark DataFrame

json - 在 VScode 代码片段中添加美元符号 ($)

asp.net-web-api - WebApi帮助页面:不要在XML文档中转义HTML

c# - 如何在请求 json 中接收到未映射的字段时强制 Web API 抛出错误

http - 路径中的非法字符取决于用户代理?

javascript - Kendo UI 网格 - 过滤器 - 日期范围