.NET ASMX AJAX返回的对象

.NET ASMX AJAX返回的对象,.net,wcf,web-services,asmx,datacontract,.net,Wcf,Web Services,Asmx,Datacontract,假设我有一个使用ajax调用和javascript填充的模式弹出窗口 我已经在后端为我的数据对象编写了我想要使用的类,这些类来自我的数据库,但为了参数起见,它们只是虚拟类: public class Foo { public string Property1 { get;set; } public string Property2 { get;set; } } public class Bar { public int Id { get;set; } publ

假设我有一个使用ajax调用和javascript填充的模式弹出窗口

我已经在后端为我的数据对象编写了我想要使用的类,这些类来自我的数据库,但为了参数起见,它们只是虚拟类:

public class Foo {
    public string Property1 { get;set; }
    public string Property2 { get;set; }
}

public class Bar { 
    public int Id { get;set; }
    public int Name { get;set; }
}
我需要已经从数据库接收到的这两个对象的数据。我想知道将它们返回客户端的最佳方法是什么。我已经提出了一些想法:

  • 两个web方法调用(似乎是一个额外的XHR请求)
  • 一个调用返回一个对象数组,索引0为Foo,索引1为bar
  • 创建一个封装这两个类的新结构
对于这个特殊的例子,我可以解决它,但我觉得在我编写的代码中会出现很多问题,我想在提出解决方案之前我会先问一下。有人有经验/反馈吗?如果WCF能以任何方式帮助我解决这个特殊的问题,我肯定愿意做出改变


如果这有什么不同的话,我会使用jQuery

请创建一个包含两个类实例的包装类:

public class FooBar {
    public Foo foo { get; set; }
    public Bar bar { get; set; }
}
这确保在客户端:

  • 您不必根据对象的索引对对象的位置进行假设
  • 客户机代码具有更好的可读性和可维护性。几乎没有曲解的余地
  • 您的服务操作可以有一个返回参数

至少,这是我的观点:-)

如果您最终只为web服务调用使用了一次FooBar,您仍然推荐这种方法吗?我想你可以把这个类放在同一个web服务文件中,我仍然建议你放一个FooBar类,甚至为它创建一个单独的文件。你们需要知道,我是一名日常实践的架构师,所以关注(未来)可重用性和可维护性是我的日常工作。你个人今天没有直接使用的东西,将来可能会对你或其他需要维护你的代码的人有很大的价值。这个答案和评论很好。我倾向于这种方式,但我试图确保没有其他可接受的方式。