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



在访问Api时,加载35 MB Json的大块需要近50秒。因此,为了提高性能,我在项目中添加了webapicontribe . formatting . protobuf。数据显示在剑道UI网格中。

我在这里错过了什么?视图中的数据类型或类型之类的?还有其他更好的方法来提高性能吗?

这里有一些片段->

POCO-Class:

[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'
            },
        },

控制器:

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:更改视图数据源代码(我认为这是正确的)

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());

最新更新