Какую платформу следует создать Для простого соответствия JSON с использованием CodeSmith - PullRequest
1 голос
/ 09 апреля 2011

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

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

Я немного прочитал и вижу некоторые распространенные проблемы с сериализацией JSON вnetTiers относительно циклических ссылок и т. д.

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

Ранее я использовал netTiers.

Что мне хотелось бы, так это несколько указателей:

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

1 Ответ

2 голосов
/ 11 апреля 2011

Я уже некоторое время использую 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 - это служба и сущность, созданные с использованием шаблонов CodeSmith netTiers, а функция возврата 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, но я думаю, что вы пойдете по тому же пути.

...