我正在为我的ASP.NET应用程序编写一个其他开发人员将使用的API。 API将基本返回具有其名字,姓氏和ID的人员列表。有很多方法可以在ASP.NET中编写Web服务,最简单的方法是创建一个返回DataTable的Web服务函数(asmx)。这对于其他.NET开发人员来说很简单,但我不相信这是为一般平台和语言独立性编写Web服务的最佳方式。
目前公认的标准是什么,这样的网络服务今天在野外发挥得很好?
答案 0 :(得分:3)
经验中浮现的一些想法:
List<Person>
而不是DataTable
。基本类型更容易序列化,并且在其他编程环境中更有意义,因为您希望您的服务与语言无关。getBlah()
,updateBlah(obj newObj)
,deleteBlah(obj objToDelete)
等。 Person
类,并且只有5个与最终用户相关,请提供一个在Person
和PersonSimple
类之间接口的类。如果没有这一层,您的最终用户将不得不在每次更改数据结构时修改您的代码,并且您将被这种紧密耦合锁定。如果安全很重要
答案 1 :(得分:0)
我目前正在处理类似的问题:.NET中的web api服务接收数据表作为输入参数,对它们应用一些操作(使用表值函数),并返回一些输出数据表。
在您的情况下,您不需要使用像DataTable这样的复杂类;你可以使用一个简单类的数组(List&lt;&gt;),其中包含名字,姓氏和id等字段。使用ASP.NET的Web Api,您可以执行以下操作:
1)在Visual Studio中创建一个新的WebApi项目:例如(在VS 2012中)C#&gt;网络&gt; ASP.NET MVC 4 Web应用程序&gt;选择&#34; Wep Api&#34;作为项目模板
您将看到一个包含大量文件夹的VS项目,其中包括一个名为 Models
的文件夹如需帮助,请参阅:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api
2)使用如下所示的类创建一个新的模型代码文件 Person.cs :
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string[] Friends { get; set; }
}
3)使用获取,插入和更新数据库记录的方法创建新的控制器代码文件 PersonController.cs 。所有必要的序列化/反序列化(JSON和XML)和数据绑定都是由项目模板设置的Web Api环境自动完成的。
// Get all the records of persons
public IList<Person> Get()
{
// read database into a list of persons (List<Person>)
// return List<Person>
}
选定人员的返回记录:
public Person Get(int id)
{
// read database for a selected person
}
参数绑定(读取http POST发送到对象或列表对象中的JSON / XML内容)也会自动完成,如下所示:
// parameter binding: Create a Person object with content from XML/JSON
public void ReadPerson(Person p)
{
Trace.WriteLine(Person.Id);
}
public void ReadPersonList(List<Person> plist)
{
Trace.WriteLine(plist.Count);
}