Webservice(比较老) 少数在使用,还是以前的老项目
WCF(.net):使用比较广,对内
WebAPI(对外)
就是发送一个http请求,返回xml(默认的格式)与json
返回值,清晰简单解析方便所以一般对外
Webapi属于mvc项目中一部分
Webapi对外:给android,ios提供数据 绝大多数使用webapi接口提供数据
Get:获取内容,查询
Post:提交内容,添加
Put:更新
Delete:删除
Mvc中访问方式是由什么决定的?
自定义路由~
webapi访问方式:
api/控制器名字/id(参数可选)
如果发送get请求访问的就是get
如果访问post:必须发送post请求
webapi获取post提交的参数:
1:使用request
2:封装一个dto
3:只传值不传键
WebAPI增加方法
Webapi标准,get方式访问就访问get方法,post方式访问就请求post方法;总:请求方式决定访问的方法
使用代码请求WebAPI
方法1:webrequest(旧)
方法2:httpclient(新)
异步支持得很好
需要添加dll,sysetm.net.http
Wcf三种异步请求方法
Async,await
这是在WcfService1创建的
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“UsersService”。
// 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 UsersService.svc 或 UsersService.svc.cs,然后开始调试。
public class UsersService : IUsersService
{
public List GetUsers(string _keycode)
{
if (string.IsNullOrEmpty(_keycode))
{
return null;//请提供授权码
}
UserDAL ud = new UserDAL();
wcf_Users wu = ud.GetWCF_UsersByKeyCode(_keycode);
//判断用户的授权码是不是有效
if (wu == null)
{
return null;//授权码无效
}
//判断用户的授权码是否过期
if (DateTime.Now > wu.ExpDate)
{
return null;//授权码已经过期
}
return ud.GetList();
}
}
这是在WcfService1下创建的
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Service1”。
// 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Service1.svc 或 Service1.svc.cs,然后开始调试。
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format(“You entered: {0}”, value);
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
}
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: 在此添加您的服务操作
}
// 使用下面示例中说明的数据约定将复合类型添加到服务操作。
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}