[英]Better client side of web-service
我正在使用C#和MonoTouch編寫用於Web服務的客戶端應用程序。 它具有一些用於用戶會話(注冊,登錄,注銷),消息傳遞(列表,寫入,刪除等),圖像例程(上傳,下載)的命令。
我為用戶會話請求類型編寫了實現,該實現可以異步執行,如下所示:
{
public delegate void LoginEventHandler(Session session);
public delegate void ErrorEventHandler(Error error);
public delegate void StatusEventHandler(string status);
public interface IDataProvider
{
#region Session
Session GetSession();
event LoginEventHandler OnRegistered;
event ErrorEventHandler OnRegisteredError;
void Register(Person user);
event LoginEventHandler OnLoggedIn;
event ErrorEventHandler OnLoggedInError;
void Login(Person user);
event StatusEventHandler OnLoggedOut;
event ErrorEventHandler OnLoggedOutError;
void Logout(Session session);
#endregion
}
}
}
它可以正常工作 ,但即使現在實現2個事件處理程序也有點無聊且虛弱 ,以后再取消訂閱任何事件,就可以取消訂閱:
dataProvider = new DataProviderService ();
...
appDelegate.dataProvider.OnRegistered += HandleOnRegistered;
appDelegate.dataProvider.OnRegisteredError += HandleOnRegisteredError;
appDelegate.dataProvider.Register(GetPerson());
...
void HandleOnRegistered (Session session)
{
InvokeOnMainThread(delegate {
appDelegate.settings.Session = session;
appDelegate.dataProvider.OnRegistered -= HandleOnRegistered;
appDelegate.dataProvider.OnRegisteredError -= HandleOnRegisteredError;
Waiter.HideWaiter();
Console.WriteLine(session.userId);
}
);
}
void HandleOnRegisteredError (Error error)
{
InvokeOnMainThread(delegate {
appDelegate.dataProvider.OnRegistered -= HandleOnRegistered;
appDelegate.dataProvider.OnRegisteredError -= HandleOnRegisteredError;
Console.WriteLine(error);
});
}
有什么建議可以改進體系結構以進行進一步開發嗎? 還是有任何資料可以了解上師的日常工作?
通常,我設計此類事物的方式:
ViewDidLoad
和ViewDidUnload
以便可以在內存不足的情況下釋放大多數內存 IsViewLoaded
或事件中的可見性等,以確定是否需要處理事件 您可以取消Dispose
訂閱以取得良好的效果,但這不是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.