我参与了几个与 Facebook 和 Netflix 等外部服务连接的项目。目前,我用来访问这些 API 的大多数库(包括我自己编写的库)都有单一方法,因此调用特定的 API 函数但似乎总是调用某种基本方法来发出请求。像这样的东西:
public class ExternalApi
{
public string SendMessage( criteria )
{
//do something unique to this method with criteria like
//like generating an xml statement or fql query
return SendRestRequest( modifiedCriteria );
}
public string GetData( criteria )
{
//do something unique to this method with criteria like
//like generating an xml statement or fql query
return SendRestRequest( modifiedCriteria );
}
public string SendRestRequest( modifiedCriteria )
{
//add global things to modifiedCriteria like authentication bits
//or wrapping the criteria in some xml or json shell
var request = new HttpRequest();
//make the request, return data
}
}
所以我的问题是在这里使用更好的模式或 OO 主体,所以在每个单一的 API 调用方法中,我不是每次都显式调用基本方法?
我正在寻找某种调用拦截模式,例如 ASP.NET MVC 框架和 ActionResults 吗?
编辑 1:我不希望使用任何其他服务或库(如 Wcf)的功能。对于这些项目,我只使用了这些 API 功能的 1-5%,并且更喜欢为这些东西滚动我自己的代码。