Я пытаюсь разработать приложение с следующими слоями:Entity Framework + Java Script Client
- Entity Framework Модель
- Service Data (или WCF или веб-API, но я предпочитаю Web API)
- Java Script + HTML + CSS Client
модель содержит наследования и полиморфных коллекции:
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 подходит для моих нужд:
- отбрасывания
- профи:
- поддерживает наследование и полиморфные коллекции очень хорошо
- опоры Веб-API & JSON (я думаю, что это проще, чем WCF & oData)
- минусы:
- не поддерживает метаданные EF. Вы должны дублировать модель в java-скрипте руками
- не понимает JSON-сериализованную EF-модель достаточно хорошо. Вы должны предварительно, постобработки JSON
- профи:
- Breeze.js
- плюсы:
- поддерживает метаданные EF очень хорошо. JS модель генерируется на лету
- минусы:
- не поддерживает наследование
- не поддерживает WebAPI + JSON
- плюсы:
- JayData
- плюсы:
- поддерживает EF meta данные достаточно хорошо
- минусы:
- , кажется, что он поддерживает наследование, но не поддерживает полиморфные коллекции
- не поддерживает WebAPI + JSON
- плюсы:
Есть ли другие альтернативные JS-рамки? Или, может быть, я ошибаюсь в названных рамках? Можете ли вы привести пример? Благодаря!
Почему вы думаете, что поддержка метаданных breezejs очень хорошо, и jaydata достаточно хорошо? (Я работаю для jaydata) –
Поскольку он генерирует JavaScript-модель «на лету». Не нужно вызывать JaySvcUtil.exe. Но я думаю, что это очень субъективное преимущество ... Модель не меняется слишком часто, и это не проблема вызова утилиты. – Denis
Спасибо за разъяснение! На самом деле мы можем сделать оба пути с помощью предварительно сформированной модели и без нее. Синтаксис для получения контекста несколько отличается. В большинстве наших примеров используется статическая схема, которая может вводить в заблуждение, извините за это. Если вы используете jaydata в качестве клиента odata в nodejs в окнах, мы поддерживаем только статический контекст, так как libxmljs не компилируется на окнах. –