Windows Phone 7
[WP7] Toast Notification 만드는법 3 (Mango Ver)
동동(이재동)
2011. 5. 27. 18:37
자 이번에는 WCF Rest Service를 만들어 보자.
이것도 역시 WCF Rest Service 프로젝트 생성해서
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Notifications
{
private static Dictionary<string,List<Uri>> subscribers = new Dictionary<string,List<Uri>>();
private static object obj = new object();
[WebInvoke(UriTemplate = "register?uri={uri}&appId={appId}", ResponseFormat = WebMessageFormat.Xml, Method = "GET")]
public void Register(string uri,string appId)
{
Uri channelUri = new Uri(uri, UriKind.Absolute);
Subscribe(channelUri,appId);
}
private void Subscribe(Uri channelUri,string appId )
{
lock (obj)
{
if (subscribers.ContainsKey(appId) == false)
{
subscribers.Add(appId, new List<Uri>());
}
if (!subscribers[appId].Exists((u) => u == channelUri))
{
subscribers[appId].Add(channelUri);
}
}
//OnSubscribed(channelUri, true);
}
[WebInvoke(UriTemplate = "GetSubscribers?appId={appId}", ResponseFormat = WebMessageFormat.Json, Method = "GET")]
public List<Uri> GetSubscribers(string AppId)
{
return subscribers[AppId];
}
귀찮아서 소스만 썻다 보면 알듯이
클라이언트가 Register 메소드를 호출하여 URI와 AppID(구분을 위해)
를 주면 그걸 그냥 List에 저장하는 형식이다.
나중에 이걸 DB로 저장하게 바꾸기만 하면 된다.