2

我試圖發展與以下層的應用程序:實體框架+ Java腳本客戶

  1. 實體框架模型
  2. 數據服務(無論是WCF或Web API,但我更喜歡的Web API)
  3. Java腳本+ HTML + CSS客戶

該模型包含了繼承和多態集合:

public class Master 
{ 
    public virtual ICollection<BaseDetail> Details { get; set; } 
} 

public abstract class BaseDetail 
{ 
    public virtual Master Master { get; set; } 
} 

public class Detail1 : BaseDetail { } 
public class Detail2 : BaseDetail { } 
public class Detail3 : BaseDetail { } 

的問題是,我找不到合適的一個Java Script框架,滿足我的需求:

  1. 擊退
    • 優點:
      • 支持繼承和多態的集合很好
      • 支持Web API & JSON(我認爲它比WCF更簡單& oData)
    • 缺點:
      • 不支持EF元數據。您必須手動複製java腳本中的模型
      • 不能很好地理解JSON序列化的EF模型。你必須預先,後處理JSON
  2. Breeze.js
    • 優點:
      • 支持EF元數據非常好。在飛行中產生JS模型
    • 缺點:
      • 不支持繼承
      • 不支持的WebAPI + JSON
  3. JayData
    • 優點:
      • 支持EF元數據不夠好
    • 缺點:
      • 似乎它支持繼承,但不支持多態的集合
      • 不支持的WebAPI + JSON

有沒有其他的替代JS框架?或者,也許我錯了命名框架?你能提供一個例子嗎?謝謝!

+1

您爲什麼認爲breezejs對元數據的支持非常好,jaydata的支持程度還不錯? (我爲jaydata工作) –

+0

因爲它在運行中生成JavaScript模型。沒有必要調用JaySvcUtil.exe。但我認爲這是非常主觀的優勢......模型不會經常變化,調用util也不是問題。 – Denis

+0

感謝您的澄清!事實上,我們可以用預生成的模型和沒有它的兩種方法。獲取上下文的語法略有不同。我們的大多數示例都使用靜態模式,因此可能會產生誤導,對此抱歉。如果您在Windows上的nodejs中使用jaydata作爲odata客戶端,我們只支持靜態上下文,因爲libxmljs不能在Windows上編譯。 –

回答

6

編輯:從v 1.3.1開始,Breeze現在支持繼承。

-

對於微風,你是正確的,它沒有(還)支持繼承。那是在微風路線圖上,你可能想要vote it up

它支持ASP.NET Web API和JSON。好奇的是,你認爲不然,因爲幾乎所有的BreezeJS樣本都是完全依賴於JSON內容類型的Web API樣本。

+0

是的,3票是我的。 我的意思是,示例控制器(你在談論)不是真正的REST。沒有get/put/post/delete,只有oData在它們中。所以我認爲這不是真的Web API。只是WCF數據服務的變體。 – Denis

+0

你對JSON也是對的。但我的意思是這不是簡單的,簡單的JSON,它包含元數據。例如,這個JSON與Backbone不兼容。 – Denis

2

對WebAPI的JayData支持與Microsoft Web API OData extension一起提供。雖然它需要您根據控制器,路由等設置服務器端。

我們很樂意從事多態集合的優先級工作,目前我們正在實施OData V3。在http://github.com/jaydata上打開問題,以便我們可以與您聯繫。

+0

謝謝,我已經添加了一個建議。 – Denis