| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Альтернатива событиям при запросе данных? |
| Автор: ababab 18.5.2012, 07:49 | ||||||||
| Здравствуйте. Имеется клиентское дотнет-приложение, которое общается по сети с джава-сервером для получения данных. Использоваться веб-сервисы невозможно, т.к. на джава-сервере они не реализованы. Ниже описано два подхода к взаимодействию по сети. Вопрос темы в том, какой из них лучше. извиняюсь за простыню, не нашел спойлеров Первый: Для общения используются асинхронные методы класса WebClient. Примерный метод получения данных выглядит следующим образом:
Пример использования:
Этот подход не устроил из-за неудобства работы с дотнетовскими событиями: 1) необходимость возвращать объект данных, наследованный от EventArgs; 2) использование статики в DataService сильно усложняет код; 3) нужно постоянно привязываться/отвязываться от события; 4) при этом нет жесткой связи между методом Get и событием Got; 5) при множестве запросов и множестве ответов, нужно ставить в соответствие запросу ответ — использовать некие ID или UserState для различения ответов; Второй: Примерный метод получения данных:
Пример использования:
Вопрос: чем второй подход может быть хуже первого? Насколько я понимаю, это не совсем стандартный способ реализации метода получения данных, т.к. их, скорее всего, реализуют на событиях. В данный момент используется второй подход. В чем могут быть недостатки такого подхода в долгосрочной перспективе? |
| Автор: eugene123 23.5.2012, 14:41 |
| Не понятно чем не устроила событийная модель дотнета. По-моему, очень все удачно и логично реализовано. Наверно, тут подходит пословица про плохого танцора... В любом случае, если не устраивают асинхронные методы (которые в любом фреймворке основаны на событиях), используй их синхронные аналоги (i. e. WebClient.DownloadString(Uri)) А в приведенных выше двух подходах принципиальной разницы нет вообще, есть только различие в рюшках сишарпа |
| Автор: ababab 25.5.2012, 13:55 | ||
В данном конкретном случае с событийной моделью дотнета работать неудобно. Насчет танцора - отличный аргумент по делу. Синхронные методы не доступны, т.к. это Silverlight-приложение. Принципиальная разница таки есть, и она заключается в удобстве использования. |