REST - 良好的设计实践

时间:2014-04-22 10:25:37

标签: c# windows-phone-8 restsharp

我是Windows Phone开发的新手,我正在尝试编写一个从服务器检索数据并将其显示给用户的应用程序。我在服务器上有几个资源,比方说User,Quest和Activity。我使用RestSharp lib从服务器检索数据。

获取用户的示例:

public void Get(String id, LifeHunt.MainPage.UserReady userReady)
{
   var client = new RestClient(Deployd.REST_URL);
   var request = new RestRequest(resource + "/{id}", Method.GET);

   request.AddUrlSegment("id", id);

   client.ExecuteAsync<User>(request, response =>
   {
      if (response.StatusCode == System.Net.HttpStatusCode.OK)
      {
         userReady(callback.Data);
      }

   });
}

一旦检索到用户,我就会调用我作为回调传递的userReady方法,并让用户进入MainPage进行显示。

现在,我必须为所有用户,任务和活动重复所有CRUD(插入,获取,GetAll,更新,删除)功能的整个过程。这意味着我将需要15种不同的回调方法,我认为这不是一个好的软件设计。

另一种方法是只有一个回调方法,并检查回调方法中传递的参数类型。但是我不认为这也是一个很好的解决方案。

我正在考虑为CRUD创建通用接口,由所有User,Quest和Activity类实现它:

interface ICRUD<T>
{
   void GetAll(GenericCallback callback);
   void Get(GenericCallback callback);
   void Add(T item, GenericCallback callback);
   void Remove(String id, GenericCallback callback);
   void Update(T item, GenericCallback callback);
}

但是我真的不知道如何实现它,即使它是一个好方法。有人可以建议我一个好的设计解决方案吗?

1 个答案:

答案 0 :(得分:1)

使用MVVM,创建一个ViewModel,它将保存您需要的所有数据并将其绑定到View。然后使用直接返回所需数据的方法创建Service类(无回调)。在ViewModel中创建此服务的实例,并在需要时调用方法来获取和填充数据。