![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
ababab |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 29.4.2011 Репутация: нет Всего: нет |
Здравствуйте.
Имеется клиентское дотнет-приложение, которое общается по сети с джава-сервером для получения данных. Использоваться веб-сервисы невозможно, т.к. на джава-сервере они не реализованы. Ниже описано два подхода к взаимодействию по сети. Вопрос темы в том, какой из них лучше. извиняюсь за простыню, не нашел спойлеров Первый: Для общения используются асинхронные методы класса WebClient. Примерный метод получения данных выглядит следующим образом:
Пример использования:
Этот подход не устроил из-за неудобства работы с дотнетовскими событиями: 1) необходимость возвращать объект данных, наследованный от EventArgs; 2) использование статики в DataService сильно усложняет код; 3) нужно постоянно привязываться/отвязываться от события; 4) при этом нет жесткой связи между методом Get и событием Got; 5) при множестве запросов и множестве ответов, нужно ставить в соответствие запросу ответ — использовать некие ID или UserState для различения ответов; Второй: Примерный метод получения данных:
Пример использования:
Вопрос: чем второй подход может быть хуже первого? Насколько я понимаю, это не совсем стандартный способ реализации метода получения данных, т.к. их, скорее всего, реализуют на событиях. В данный момент используется второй подход. В чем могут быть недостатки такого подхода в долгосрочной перспективе? |
||||||||
|
|||||||||
eugene123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 1.8.2011 Репутация: нет Всего: нет |
Не понятно чем не устроила событийная модель дотнета. По-моему, очень все удачно и логично реализовано. Наверно, тут подходит пословица про плохого танцора...
В любом случае, если не устраивают асинхронные методы (которые в любом фреймворке основаны на событиях), используй их синхронные аналоги (i. e. WebClient.DownloadString(Uri)) А в приведенных выше двух подходах принципиальной разницы нет вообще, есть только различие в рюшках сишарпа |
|||
|
||||
ababab |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 29.4.2011 Репутация: нет Всего: нет |
В данном конкретном случае с событийной моделью дотнета работать неудобно. Насчет танцора - отличный аргумент по делу. Синхронные методы не доступны, т.к. это Silverlight-приложение. Принципиальная разница таки есть, и она заключается в удобстве использования. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |