|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Вообще, это в контексте WCF у меня, но думаю, что это общий вопрос, не только с WCF связанный. Есть у меня следующая иерархия Код: c# 1. 2. 3. 4. 5. 6. 7.
Проблема в том, что клиент видит у службы только элементы ITestService. Почему так? Я догадываюсь, что надо отнаследовать ITestService от IServiceBase, но разве это наследование уже не включено в части Код: c# 1.
объявления класса TestService? Если я ещё и интерфейс отнаследую, не будет ли это двойным наследованием (это, вообще, допустимо?)? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:24 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
И если надо точно отснаследовать интерфейс, не могли бы вы указать, где в МСДН об этом конкретно говорится для вот таких вот случаев. Может, какое-то глобальное правило языка? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:27 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardoИ если надо точно отснаследовать интерфейс, не могли бы вы указать, где в МСДН об этом конкретно говорится для вот таких вот случаев. Может, какое-то глобальное правило языка? Ну т. е., что наследуя от класса, наследующего от интерфейса, я не наследую от этого интерфейса ("вассал моего вассала не мой вассал"). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:29 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardoЯ догадываюсь, что надо отнаследовать ITestService от IServiceBaseДа Leo11Nardoно разве это наследование уже не включено в части Код: c# 1.
объявления класса TestService?Нет Leo11NardoЕсли я ещё и интерфейс отнаследую, не будет ли это двойным наследованием?Нет ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:29 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Если это особенность WCF, то пусть модераторы перенесут это в соответствующий раздел. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2016, 10:30 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Хмм, сейчас проверил - это явно особенность WCF, т. к. на обычных классах и интерфейсах всё видно и без наследования Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2016, 08:58 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardoХмм, сейчас проверил - это явно особенность WCF, т. к. на обычных классах и интерфейсах всё видно и без наследования Код: c# 1.
Т. е. вот такой код работает в каком-нибудь консольном приложении - метод BaseMethod вызывается. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
В контексте же WCF клиенты, созданные из TestService, не видят BaseMethod, пока я не отнаследую ITestService от IServiceBase. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2016, 09:11 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardoВ контексте же WCF клиенты, созданные из TestService, не видят BaseMethod, пока я не отнаследую ITestService от IServiceBase.Ну так опиши контракт WCF сервиса в классе, а не в интерфейсе, и будет как в "консольном приложении". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2016, 09:29 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Алексей КLeo11NardoВ контексте же WCF клиенты, созданные из TestService, не видят BaseMethod, пока я не отнаследую ITestService от IServiceBase.Ну так опиши контракт WCF сервиса в классе, а не в интерфейсе, и будет как в "консольном приложении". Но тогда клиентские прокси-генераторы не сгенерят мне прокси через AddServiceReference, да? Они же только на интерфейсы полагаются by design? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2016, 10:00 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardoОни же только на интерфейсы полагаются by design?Нет, им пофиг. С тем же успехом атрибуты, вроде OperationContract, можно указывать методам классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2016, 17:07 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Алексей КLeo11NardoОни же только на интерфейсы полагаются by design?Нет, им пофиг. С тем же успехом атрибуты, вроде OperationContract, можно указывать методам классов. Но тогда ещё один аргумент против классов и за интерфейсы - вроде как есть идеология, что клиентам надо давать интерфейсы, а классы скрывать на сервере. По подобной же причине разделяют интерфейсы и их реализации на отдельные сборки, и ту, которая с интерфейсами - отдаётся клиенту, а реализации в скрытой от него сборке находятся. Есть такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2016, 21:16 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardoАлексей Кпропущено... Нет, им пофиг. С тем же успехом атрибуты, вроде OperationContract, можно указывать методам классов. Но тогда ещё один аргумент против классов и за интерфейсы - вроде как есть идеология, что клиентам надо давать интерфейсы, а классы скрывать на сервере. По подобной же причине разделяют интерфейсы и их реализации на отдельные сборки, и ту, которая с интерфейсами - отдаётся клиенту , а реализации в скрытой от него сборке находятся. Есть такое?Есть такое. Но если клиент генерируется по WSDL-схеме, то от этих интерфейсов лично я пользы не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 05:11 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Алексей КLeo11Nardoпропущено... Но тогда ещё один аргумент против классов и за интерфейсы - вроде как есть идеология, что клиентам надо давать интерфейсы, а классы скрывать на сервере. По подобной же причине разделяют интерфейсы и их реализации на отдельные сборки, и ту, которая с интерфейсами - отдаётся клиенту , а реализации в скрытой от него сборке находятся. Есть такое?Есть такое. Но если клиент генерируется по WSDL-схеме, то от этих интерфейсов лично я пользы не вижу. Зачем же тогда во всех мануалах на МСДН пишут WCF-сервисы через интерфейсы и шаблон начального проекта для такого сервиса тоже через них? Какой-то best practice или просто интерфейс головного мозга у проектировщиков WCF, которые своё видение всем навязывают? Знаю тех, которые любую иерархию классов разрабатывают через интерфейсы - сначала их напишут, потом классы. Не разбираясь с тем, нужно ли это - просто так, на всякий случай. Да и привыкли они так. То же и с тест дривен девелопмент - некоторые уже и забыли, что можно как-то по-другому и не обязательно тесты писать на всякие примитивные действия. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 05:54 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardoАлексей Кпропущено... Есть такое. Но если клиент генерируется по WSDL-схеме, то от этих интерфейсов лично я пользы не вижу. Зачем же тогда во всех мануалах на МСДН пишут WCF-сервисы через интерфейсы и шаблон начального проекта для такого сервиса тоже через них? Какой-то best practice или просто интерфейс головного мозга у проектировщиков WCF, которые своё видение всем навязывают?Я не могу за них ответить. Leo11NardoЗнаю тех, которые любую иерархию классов разрабатывают через интерфейсы - сначала их напишут, потом классы. Не разбираясь с тем, нужно ли это - просто так, на всякий случай. Да и привыкли они так. То же и с тест дривен девелопмент - некоторые уже и забыли, что можно как-то по-другому и не обязательно тесты писать на всякие примитивные действия.Всё имеет свои преимущества, недостатки и применимость в отдельных случаях. Важно иметь собственное мнение и уметь применять всё по назначению. - В TDD интерфейсы позволяют подменить "боевую" реализацию логики тестовой. - В WCF интерфейсы позволяют описать контракт сетевой службы на языке C#. Но если это не требуется, то применение интерфейсов в данном случае лично я считаю лишним усложнением. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 06:06 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11Nardo, Строчку с endpoint из конфига покажешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2016, 19:19 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
refregLeo11Nardo, Строчку с endpoint из конфига покажешь? Код: xml 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 08:01 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11Nardo, Теперь ответь себе на вопрос. Как клиент может узнать о IServiceBase? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 08:55 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
refregLeo11Nardo, Теперь ответь себе на вопрос. Как клиент может узнать о IServiceBase?Клиент знает или о WSDL-схеме, сгенерированной по иерархии ITestService : IServiceBase , или имеет саму сборку, в которой описаны эти интерфейсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 09:08 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Алексей К, Алексей КrefregLeo11Nardo, Теперь ответь себе на вопрос. Как клиент может узнать о IServiceBase?Клиент знает или о WSDL-схеме, сгенерированной по иерархии ITestService : IServiceBase , или имеет саму сборку, в которой описаны эти интерфейсы.Да, но первноачальное условие, что наследственности ITestService : IServiceBase нет... Клиент ничего не знает о IServiceBase, Потому что в ендпоинте только один контракт. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 10:35 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
refregАлексей К, Алексей Кпропущено... Клиент знает или о WSDL-схеме, сгенерированной по иерархии ITestService : IServiceBase , или имеет саму сборку, в которой описаны эти интерфейсы.Да, но первноачальное условие, что наследственности ITestService : IServiceBase нет... Клиент ничего не знает о IServiceBase, Потому что в ендпоинте только один контракт.Согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 10:44 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
refregLeo11Nardo, Теперь ответь себе на вопрос. Как клиент может узнать о IServiceBase? Да, верно. Просто у меня пока ещё многое ускользает от внимания. Вот, нашёл описание, когда лучше использовать классы, а когда интерфейсы для контрактов. https://msdn.microsoft.com/en-us/library/ms733070(v=vs.110).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 19:08 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardorefregLeo11Nardo, Теперь ответь себе на вопрос. Как клиент может узнать о IServiceBase? Да, верно. Просто у меня пока ещё многое ускользает от внимания. Вот, нашёл описание, когда лучше использовать классы, а когда интерфейсы для контрактов. https://msdn.microsoft.com/en-us/library/ms733070(v=vs.110).aspx Мне только непонятно, если я использую класс в качестве контракта, то мне этот класс надо обрамлять сразу двумя атрибутами: ServiceContract и ServiceBehavior? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2016, 19:17 |
|
Непонятно с наследованием интерфейсов и классов
|
|||
---|---|---|---|
#18+
Leo11NardoLeo11Nardoпропущено... Да, верно. Просто у меня пока ещё многое ускользает от внимания. Вот, нашёл описание, когда лучше использовать классы, а когда интерфейсы для контрактов. https://msdn.microsoft.com/en-us/library/ms733070(v=vs.110).aspx Мне только непонятно, если я использую класс в качестве контракта, то мне этот класс надо обрамлять сразу двумя атрибутами: ServiceContract и ServiceBehavior?Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 05:30 |
|
|
start [/forum/topic.php?fid=20&msg=39170601&tid=1400799]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 297ms |
total: | 445ms |
0 / 0 |