0

jQuery を使用して、ページ メソッドから JSON オブジェクトを取得しています。SubSonic を使用する DAL があり、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 の機能は使用できません。少なくとも匿名型は機能します...

4

3 に答える 3

1

最大の推奨事項は、リストではなく「コレクション」にすることかもしれませんが、単純な Web サービスの戻り値では、オブジェクトがまだ . NET アセンブリ。

こちらも読みやすいと思います。

于 2009-02-26T20:25:09.203 に答える