我正在为一个项目开发前端移动应用程序。后端由其他人处理。在整个应用程序中,我向服务器请求信息。
我使用svcutil.exe来获取自动生成的客户端代理。当前,我使用全局单例服务来提供代理(以便在整个应用程序中使用相同的代理进行服务器调用)。
由于每次进行服务器调用时都需要做类似的事情,所以我使用一个类来概括我必须做的事情。
// Pseudocode
T Call<T>(Expression<Func<T>> myMethod){
// check internet connection (return if no internet)
// check proxy state and open it if necessary
// surround call with try catch
// if caught exception, report to online logging service
}
// called something like this
ExampleService _proxy;
var serverValue = wcfCallManager.Call( () =>
_proxy.GetValue(userInfo, stringQuery, settings) );
我最近研究了WCF,发现:
在我的脑海中,新代码如下所示:
public string PerformQuery(string query, string url){
//checks if proxy with url exists and sends that or creates a new one
var proxy = _proxyGetter.GetProxy(url);
//performs query with error handling/logging
var queryResult = wcfCallManager.Call( () =>
proxy.GetValue(userInfo, stringQuery, settings));
// translates queryResult into usable format.
return _wcfDataFormatter.FormatQueryResult(queryResult);
}
所以我的问题是: