Быстрый способ вернуть список пользовательских объектов из метода страницы без отдельной BLL - PullRequest
0 голосов
/ 26 февраля 2009

Я использую jQuery для получения объекта JSON из метода страницы. У меня есть DAL, который использует SubSonic, и если я верну объекты, созданные из классов, сгенерированных SubSonic, я засорю каналы. :) Вы знаете, все общедоступные свойства сериализуются. Мне не нужен отдельный бизнес-уровень для этого приложения, потому что он небольшой и ориентирован на операции чтения, а еще один уровень кажется излишним. Чтобы избежать загрузки некоторых раздутых объектов SubSonic (возможно, также с конфиденциальной информацией) и избежать создания отдельного слоя, я попытался вернуть список объектов, например:

[WebMethod]
public static List<object> GetFiles()
{
    FileCollection collection = DB
        .Select()
        .From(DataAccess.File.Schema)
        .ExecuteAsCollection<FileCollection>();

    List<object> files = new List<object>(collection.Count);

    foreach (DataAccess.File file in collection)
    {
        files.Add(new {
                          file.FileId,
                          file.ApplicantFirstName,
                          file.ApplicantLastName,
                          file.UploadDate
                      }
        );
    }

    return files;
}

Это работает, и в ответ я получаю хороший объект JSON (не обращая внимания на значение DateTime):

[{"FileId":1,"ApplicantFirstName":"Paweł","ApplicantLastName":"Krakowiak","UploadDate":"\/Date(1235656448387
)\/"}]

Это хороший подход? Я обеспокоен List<object> - это хуже, чем возвращаться, скажем, List<SomeDomainObject>? Спектакль? Что-то еще?

Это .NET 2.0, я не могу использовать функции 3.5. По крайней мере анонимные типы работают ...

Ответы [ 3 ]

1 голос
/ 26 февраля 2009

Единственный недостаток использования List<object> вместо List<SomeDomainObject> в этом сценарии - потеря строго типизированного доступа при вызове метода GetFiles непосредственно из кода .net.

1 голос
/ 26 февраля 2009

Самая большая рекомендация может состоять в том, чтобы сделать ее «коллекцией», а не списком, но с простым возвратом через веб-сервис это не так уж сложно, так как эта рекомендация чаще всего встречается в средах, где объект все еще живет в сборке .NET.

Я думаю, что это легко читать.

0 голосов
/ 27 февраля 2009

Похоже, нет ничего плохого в моем подходе. Все, что я хочу сделать, это вернуть объект JSON вызывающему клиенту (браузеру) для обновления пользовательского интерфейса. Это приложение выполняет операции чтения на 99%, поэтому я в порядке. На самом деле я начал добавлять сервисы и домен (я оставляю здесь свои бизнес-объекты), но я собираюсь выбросить их. Я действительно стараюсь сделать это простым для этого приложения и не добавляю ненужные мне вещи.

...