События на сервере, обрабатываемые клиентом
Пока тут ещё почитаю, но может кто-то уже сталкивался.
Ты про что? Про ASP.NET или .NET Remoting.
Цитата:
Originally posted by 3A3-968M
Ты про что? Про ASP.NET или .NET Remoting.
Ты про что? Про ASP.NET или .NET Remoting.
Remoting
Пусть есть событие ServerEvent, его экземпляр OnServerEvent тусит на сервере. Есть также функция MyEventHandler на клиентской стороне, которую используем для подписки. Создаём репитер на клиентской стороне:
public class MyRepeater: MarshalByRefObject
{
public event ServerEvent OnServerEvent;
public void FireServerEvent(object sender, EventArgs args)
{
if(OnServerEvent!=null) OnServerEvent(sender, args);
}
}
Теперь добавляем код в клиентский класс, который хочет подписаться на событие сервака:
MyRepeater rep=new MyRepeater();
rep.OnServerEvent+=MyEventHandler;
Класс MyRepeater выступает в роли повторителя(репитера) события ServerEvent. Чтобы воспользоваться этим классом, клиент создаёт его новый экземпляр и подписывается на его событие OnServerEvent. А сервак вызывает метод FireServerEventю
А на счёт сериализации: обычно в .NET Remoting используется SOAP (Simple Object Application Protocol). Объект сериализуется в XML-текст. Для сериализации SOAP используется класс SoapFormatter. Сериализовать можно только поля класса, помеченный атрибутом Serializable. Поля, которые не нужно сериализовать помечаем атрибутом NonSerialized