2009-02-26 18 views
0

Bir sayfa yönteminden bir JSON nesnesini almak için jQuery kullanıyorum. SubSonic kullanan bir DAL sahibim ve SubSonic tarafından oluşturulan sınıflardan oluşturulan nesneleri döndürürsem, boruları tıkayacağım. :) Biliyorsunuz, tüm kamu mülkleri serileştiriliyor. Bu uygulama için ayrı bir iş katmanı istemiyorum, çünkü küçük ve okuma işlemlerine odaklanmış ve başka bir katman bir overkill gibi görünüyor. (Aynı zamanda muhtemelen hassas bilgilerle) bazı Sesaltı şişirilmiş nesneleri indirirken önlemek ve bu gibi nesnelerin listesini dönen çalıştı ayrı bir katman, bina kaçınmak için:Sayfa yönteminden ayrı bir sayfa yönteminden özel nesnelerin bir listesini döndürmenin hızlı bir yolu

[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; 
} 

O inşaat ve karşılığında güzel bir JSON nesnesi olsun (DateTime değerini göz ardı et):

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

Bu iyi bir yaklaşım mı? List<object> hakkında endişeliyim - bir List<SomeDomainObject> demek için daha mı kötü? Performans? Başka bir şey?

Bu .NET 2.0, 3.5 özelliklerini kullanamıyorum. En azından anonim türler çalışır ...

cevap

0

Yaklaşımımın yanlış bir yanı yok gibi görünüyor. Tek yapmam gereken, kullanıcı arayüzünü güncellemek için bir JSON nesnesini arayan istemciye (tarayıcıya) döndürmektir. Bu uygulama% 99 okuma işlemlerini yapıyor, bu yüzden ben de iyiyim. Aslında bir Hizmet ve Alan eklemeye başladım (işyerlerini burada tutuyorum), ama onları atacağım. Gerçekten bu uygulama için basit tutmaya çalışıyorum ve ihtiyacım olmayan şeyleri eklemiyorum.

1

En büyük öneri, bir Liste yerine "Koleksiyon" yapmak olabilir, ancak basit bir web servisinin iadesiyle, bir öneri kadar büyük değildir, çünkü bu öneri En tipik olarak, nesnenin hala bir .NET derlemesinde yaşadığı ortamlarda.

Ben de okumak kolay olduğunu düşünüyorum.

1

.net kodundan doğrudan GetFiles yöntemi çağrılırken kesinlikle yazılan erişimi kaybetme olurdu bu senaryoda List<object> yerine List<SomeDomainObject> kullanmanın tek dezavantajı.

+0

Teşekkürler. NET'te bu yöntemi kullanmam gerekmiyor, sadece tek bir veri istemciye geri veri almak, dolayısıyla Liste 'un iyi görünmesi gibi. –

İlgili konular