Какую платформу я должен создать Для простого соответствия JSON с использованием CodeSmith

Мне только что удалось набрать копию CodeSmith 5.2 в то же время, когда я начинаю проект веб-разработки в ASP.NET, и я решил объединить их.

Сайт должен будет использовать элементы на основе JSON (либо jQuery, либо ExtJS, еще не определились) для поведения типа поиска / выпадающего списка.

Я немного прочитал и вижу некоторые распространенные проблемы с сериализацией JSON в netTiers, касающиеся циклических ссылок и т. Д.

Похоже, по умолчанию у меня есть выбор netTiers, CSLA, NHibernate, KineticFramework или PLINQO.

Я использовал netTiers раньше.

То, что я хотел бы, это несколько указателей:

С какой платформой легче всего создать совместимый код, и какие настройки нужно внести либо в настройки по умолчанию, либо в сами шаблоны, чтобы заставить его работать.

1 ответ

Решение

Я уже некоторое время использую netTiers с ExtJ, и это правда, что существуют проблемы с циклическими ссылками при кодировании, но мы редко возвращаем целые сущности и находим, что возвращение подмножества данных сущностей работает хорошо. Мы используем C#; вот пример:

UserAccountService uaSvc = new UserAccountService();
UserAccount ua = uaSvc.GetByUserId(UserId)[0];
return Json(new { success = true, data = new { ua.UserName, ua.CustomerName, ua.Email } });

Где UserAccountService и UserAccount - это сервис и сущность, сгенерированные с использованием шаблонов netTiers CodeSmith, а функция возврата Json() является частью MVC Microsoft. Вы можете заменить другой кодер, например, Newtonsoft, если вы не используете MVC.

Это возвращает JSON, который выглядит следующим образом; Ext.js может легко потреблять это:

{"success": true, data:{"UserName":"Knight", "CustomerName":"Knight Inc.", "Email":"knight@knightknight.com"}}

Вы также можете вернуть список или массив данных, следующий использует Linq, чтобы получить его в очень компактном виде

return Json(new UserAccountService().GetAll().Select(u=>new  {u.UserID, u.UserName}));

Это возвращает данные как это:

[{"UserName":"Knight", "CustomerName":"Knight Inc.", "Email":"knight@knightknight.com"}, {"UserName":"George", "CustomerName":"George Inc.", "Email":"george@george.com"}]

Как видите, совместимый JSON легко создать из результатов запроса netTiers. Я не использовал шаблоны, отличные от шаблонов netTiers, но я думаю, что вы пойдете по тому же пути.

Другие вопросы по тегам