معرفی ویژگی های جدید در ASP.NET Web API OData 5.3

پنجشنبه 29 مرداد 1394

در این مقاله ویژگی های جدید ASP.NET Web API OData 5.3 معرفی و بررسی می شوند.

- دانلود

- مستندسازی

- کتابخانه های هسته OData

- ویژگی ها و امکانات جدید

- مشکلات شناخته شده و آخرین تغییرات

- رفع Bugها

- ASP.NET Web API OData 5.3.1

دانلود:

ویژگی های Runtime به عنوان NuGet packages در NuGet gallery منتشر می شوند. با استفاده از NuGet Package Manager Console می توانید چیزی را به NuGet packages اضافه کرده و یا آنها را به روزرسانی نمایید.

Install-Package Microsoft.AspNet.OData -Version 5.3.0 
Install-Package Microsoft.AspNet.WebApi.OData -Version 5.3.0

مستندسازی:

می توانید مطالب آموزشی و tutorialها و دیگر مستندات درباره ASP.NET Web API OData را در وب سایت ASP.NET مشاهده نمایید.

کتابخانه های هسته OData:

در حال حاضر برای web API OData نسخه 4 از ODataLib نسخه 6.5.0 استفاده می شود.

ویژگی ها و امکانات جدید:

پشتیبانی از levels$ در expand$

می توانید از امکان کوئری levels$ در کوئری expand$  استفاده کنید. به عنوان مثال:

http://example.com/Employees?$expand=Manager($levels=2)

این کوئری معادل کد زیر است:

http://example.com/Employees?$expand=Manager($expand=Manager))

پشتیبانی از Open Entity Type:

open type، یک نوع ساختاریافته است که علاوه بر Propertyهای تعریف شده و پیش فرض خود آن نوع، شامل proertyهای داینامیک است. Open Typeها این امکان را به شما می دهند که مدل های داده انعطاف پذیرتری ایجاد کنید. 

پشتیبانی از مجموعه Propertyهای داینامیک:

پیش از این، یک داینامیک Property فقط می توانست یک مقدار داشته باشد، اما در نسخه 5.3 می توانند مجموعه ای از مقادیر را بگیرند. به عنوان مثال، در payload زیر که با JSON نوشته شده است، Emails یک Property داینامیک است و مجموعه ای از رشته ها می باشد.

{
   "Id": 1,
   "Name": "Ben",
   "Emails@odata.type": "#Collection(Edm.String)",
   "Emails": [
      "a@a.com",
      "b@b.com"
   ]
}

پشتیبانی از ارث بری از انواع داده Complex:

حال یک Complex Type می تواند از یک Base Type ارث بری نماید. مثلا OData می تواند انواع Comlex زیر را تعریف کند.

public abstract class Shape
{
    public bool HasBorder { get; set; }
}

public class Point
{
    public int X { get; set; }
    public int Y { get; set; }
}

public class Circle : Shape
{
    public Point Center { get; set; }
    public int Radius { get; set; }

    public override string ToString()
    {
        return "{" + Center.X + "," + Center.Y + "," + Radius + "}";
    }
}

public class Polygon : Shape
{
    public IList<Point> Vertexes { get; set; }
    public Polygon()
    {
        Vertexes = new List<Point>();
    }
}

EDM این مثال به شکل زیر است:

<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:DataServices>
    <Schema Namespace="ODataComplexTypeInheritanceSample" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <ComplexType Name="Shape" Abstract="true">
        <Property Name="HasBorder" Type="Edm.Boolean" Nullable="false" />
      </ComplexType>
      <ComplexType Name="Polygon" BaseType="ODataComplexTypeInheritanceSample.Shape">
        <Property Name="Vertexes" Type="Collection(ODataComplexTypeInheritanceSample.Point)" />
      </ComplexType>
      <ComplexType Name="Point">
        <Property Name="X" Type="Edm.Int32" Nullable="false" />
        <Property Name="Y" Type="Edm.Int32" Nullable="false" />
      </ComplexType>
      <ComplexType Name="Circle" BaseType="ODataComplexTypeInheritanceSample.Shape">
        <Property Name="Center" Type="ODataComplexTypeInheritanceSample.Point" />
        <Property Name="Radius" Type="Edm.Int32" Nullable="false" />
      </ComplexType>
      <EntityContainer Name="Container">
      </EntityContainer>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>

مشکلات شناخته شده و آخرین تغییرات:

در این بخش، مشکلات شناخته شده و آخرین تغییرات ایجاد شده در ASP.NET Web API OData 5.3 به طور مختصر شرح داده می شوند. 

OData v4

Query Options

مشکل: استفاده از expand$ تودرتو با استفاده از levels$=max نتیجه در یک عمق expansion نادرست حاصل می شود.

به عنوان مثال کد زیر را در نظر بگیرید:

~/Entities(6)?$expand=P($levels=2;$expand=D($levels=max)) 

اگر MaxExpansionDepth برابر 5 باشد، نتیجه این کوئری در عمق 6 خواهد بود.

رفع Bugها:

این نسخه منتشر شده، همچنین شامل رفع چندین Bug است که می توانید لیست آنها را در اینجا مشاهده کنید.

ASP.NET Web API OData 5.3.1:

در این نسخه، برای برخی از enumهای AllowedFunction یک Bug رفع شده است. این نسخه رفع Bug دیگری نداشته و یا هیچ ویژگی جدیدی به آن اضافه نشده است.

آموزش سی شارپ

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 1k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید