![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
всем привет. такая ситуация. есть приложение сервер и клиент к нему. они работают через WCF, соответственно в интерфейсе объявлена куча методов, по одному на каждое выполняемое клиентом действие(получить одни данные, получить другие данные, записать, проверить и пр.) и что то мне уже не нравится такое количество методов. можно ли как то уменьшить их количество, но при этом не давать клиенту информацию о реализации сервера(т.е. откуда данные берутся, что с ними на сервере происходит и пр.). подскажите в какую сторону хоть копать что бы уменьшить количество интерфейсных методов, но не потерять функциональность. у меня пока что только один способ, бровать между сервером и клиентом целые таблицы(может даже DataSet), или коллекции своих классов с сущностями таблиц. но что то методов при этом сильно меньше не становится.
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
Экскалупатор, разбить здоровый интерфейс на много маленьких + реализующий всю эту кухню класс (если вы уж так захотели - делать все одним классом) делать partial.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
в том то и дело что не хочу, надо как то упростить, вопрос больше не в том как разбить на классы, а как можно уменьшить общее количество методов. т.е. если методы выполняют одинаковую функцию(к примеру добавить данные в таблицу), то как можно реализовать добавление разных данных через один метод. да и к тому же если делать несколько интерфейсов и несколько же классов их реализующих, то как сервер будет определять к какому классу идет подключение если сервер все время слушает только один порт? но повторюсь решение через разбиение на классы не убирает основной проблемы: сервер предоставляет много методов, многие из которых выполняют одинаковые функции, только с разными данными. |
|||
|
||||
| AVX |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 20.5.2010 Репутация: нет Всего: 1 |
Я бы сделал класс, в котором содержаться данные для методов
И передавал бы его параметром метода в интерфейсе
А ещё лучше добавить перечисление
Это сообщение отредактировал(а) AVX - 28.1.2011, 22:43 |
||||||
|
|||||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
AVX, ммм, а как быть если у меня есть 20 таблиц в базе данных и клинтскому приложению в разное время нужно работать с разными данными? мы опять вернемся к куче методов каждый из которых принимает кучу разных параметров, при этом выполняя с ними одинаковые действия.
т.е. исходя из твоего примера получается что мне нужно 20 классов MyParam1, MyParam2 и пр.(для каждой таблицы или набора данных). Это сообщение отредактировал(а) Экскалупатор - 28.1.2011, 23:37 |
|||
|
||||
| AVX |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 20.5.2010 Репутация: нет Всего: 1 |
Ну если га то пошло, то можно param сделать объектом, и передавать в нём нужные вам данные, а в зависимости от kid приводить типы и выполнять действия над данными
Добавлено через 4 минуты и 42 секунды
Имхо, вы должны определить более высокий абстрактный объектный слой на основе реляционной модели, и если у вас получится 20 типов данных ничего в этом страшного нет, лишь бы все они имели смысл |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
AVX, ага, а придется использовать KnowTypeAttribute или NetDataContractSerializer чтобы такой аргумент wcf понимал...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |