|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
клиент хочет именно такого, а я хотел передавать параметр внутрь ХМЛ, который мог бы содержать внутри разные параметры... как понять -strong typed? т.е. чего он хочет? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2008, 20:11 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Лучше всего, спросите у него, чего именно он хочет. strong typed это концепция, а не конкретная технология. Код: plaintext 1. 2. 3. 4.
Код: plaintext 1.
а теперь стало грустно Код: plaintext 1. 2.
а теперь опять весело! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2008, 20:45 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
да он ничгео не скажет т.е. попросту говоря - stongly typed method для Webservice - это значит не использовать в качестве параметров хмл, в котором может быть всё, что угодно, а только явные параметры с указанными типами... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2008, 09:48 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Winnipuhклиент хочет именно такого, а я хотел передавать параметр внутрь ХМЛ, который мог бы содержать внутри разные параметры... А зачем так делать? Разве не удобнее "явные параметры с указанными типами" передавать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2008, 10:18 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Alex_BBB Winnipuhклиент хочет именно такого, а я хотел передавать параметр внутрь ХМЛ, который мог бы содержать внутри разные параметры... А зачем так делать? Разве не удобнее "явные параметры с указанными типами" передавать? лучше, но мне надо передавать описание дерева, т.е. грубо говоря пример: метод создающий поддерево в дереве, я пердаю в хмл описание поддерева, структуру. И как мне сделать это используя strongly typed метод? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2008, 10:37 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Winnipuh... И как мне сделать это используя strongly typed метод? Передавать экземпляр поддерева (ес-с-нно, он должен быть сериализуемым, иначе через SOAP не "пропихнентся"). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2008, 11:00 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
qu-qu Winnipuh... И как мне сделать это используя strongly typed метод? Передавать экземпляр поддерева (ес-с-нно, он должен быть сериализуемым, иначе через SOAP не "пропихнентся"). хмм..это описание специфической иерархической структуры, которая д.б. создана в базе данных вебсервисом... Как передавать сериализуемый экземпляр подерева? если можно чуть подробнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2008, 11:16 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Winnipuh... Как передавать сериализуемый экземпляр подерева? если можно чуть подробнее... Куда уж - "чуть подробнее" (так сгодится): Код: plaintext 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2008, 13:07 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
подробнее уже некуда т.е. резюме: если я создам сериализуемый класс для передачи параметров, даже если они могут содержать каждый раз разное количество данных внутри - то вот это и будет strong typed метод? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2008, 13:13 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Winnipuh... если я создам сериализуемый класс для передачи параметров, даже если они могут содержать каждый раз разное количество данных внутри - то вот это и будет strong typed метод? Не совсем так, "strong typed" заключается не в том, что передается экземпляр какого-либо типа, а в том, что этот тип - наиболее "специализирован" под задачи, решаемые методом, принимающем параметр данного типа. Например, можно написать метод, принимающий экземпляр IDataParameter или IDbDataParameter и "скармливать" этому методу экземпляры SqlParameter(), OleDbParameter(), OracleParameter() и т.д. С точки зрения "type safety" метод будет вполне себе "strong typed", т.к. никакой string/int/Enum и пр. Point туда уже не "пролезет"... Однако ж, если в самом методе используется определенный провайдер БД (например, OracleCommand()), то при передаче внутрь SqlParameter(), OleDbParameter() - получится исключение на предмет несоответствия типов, т.е. получается, что с точки зрения функциональности метода - аргумент нифига не "strong typed", т.к. его "strong" составляющая "смягчена" использованием интерфейса IDataParameter. То же самое и с вашей "коллекцией значений", если вы будете "ожидать" в методе экземпляр ArrayList(), то в общем случае метод не примет string[] или int[] (с этой точки зрения - ArrayList "strong typed"), однако ж - внутри метода вам придется разбираться с каждым элементом этого ArrayList-а на предмет "а что же оно такое?" и делать кастинг для использования свойств/методов тех экземпляров, которые "закрыты" в ArrayList-е... Мой (ваш?) пример с "деревом", может быть, и не совсем удачен (что просили, то и написал), т.к. он подразумевает "неопределенность" структуры относительно количества вложенных узлов, однако ж, с точки зрения "strong typed" использования этого "дерева" - все нормально, т.к. ничего другого, кроме как "показывать заголовок" и "держать список дочерних узлов" оно не умеет и ничего другого вместо именно этого "дерева" вы методу подсунуть не сможете. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2008, 14:07 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
спасибо! доходчиво.... Но вот еще вопрос: есил вызывающее клиентское приложение будет скажем на Java, кто и где отбиваться будет от некорректного параметра? Сам вебсервис во время вызова и передачи параметра? Но как клиенту удостовериться перед вызовом, что он передает подходящий тип? ведь скажем класс мог быть изменен? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2008, 20:15 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Начнем, как водится, "с конца": Winnipuh... Но как клиенту удостовериться перед вызовом, что он передает подходящий тип? ведь скажем класс мог быть изменен? Клиент получает от веб-сервиса т.н. "контракт" в виде WSDL-файла, в котором мета-описаниями (на XML) указано (в частности) - какие методы и с какими параметрами можно вызывать у веб-сервиса, если типы параметров "объектные", то в "контракте" прилагается также "схема" для сериализации/десериализации каждого такого типа. Отсюда вывод - если клиент в состоянии "восстановить" тип по такой "схеме", то он сможет и создать экземпляр нужного типа для вызова нужного метода. Если за время существования клиента кто-то изменил "контракт" (в частности - переделал класс для типа параметра), то на вызов метода со "старым" типом ругнется сам лично веб-сервис... Клиента в этом случае придется перекомпилять с новым вариантом "контракта". Winnipuh... есил вызывающее клиентское приложение будет скажем на Java, кто и где отбиваться будет от некорректного параметра? Сам вебсервис во время вызова и передачи параметра?... В принципе, выше я уже ответил на поставленный вопрос, однако ж, стоило бы еще раз напомнить, что само понятие "веб-сервис" это не что-то "волшебное", связывающее, скажем, Java/.NET/etc, а просто - набор "спецификаций" и "соглашений" (SOAP), реализованный поверх стандатрного протокола передачи текстовой информации (HTTP). Т.е. сам факт "кросс-платформенных интеграционных возможностей" веб-сервисов базируется на простом допущении о том, что любая "платформа" в состоянии принять/переслать текстовую строку, с которой она "потом" может сделать все, что ей заблагорассудится (например, сделать из нее экземпляр какого-то класса с помощью "соглашений сериализации" SOAP, или наоборот). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2008, 10:08 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
2 qu-qu спасибо за ответ! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2008, 10:51 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
вот смотрите, я вставил ваш класс для примера, в метод Код: plaintext
получил WSDL, это и есть полное описание сехмы преобразования? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2008, 10:57 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Winnipuh... получил WSDL, это и есть полное описание сехмы преобразования? ... Совершенно верно, это оно и есть... С поправочкой на то, что на стороне клиента по такому описанию вы не сможете получить "полный аналог" исходного класса MyTreeNode (в частности потому, что я "намеренно" изменил имя узла для коллекции/массива дочерних узлов), но это в общем-то и не нужно, главное, чтобы клиент смог сгенерить "что-то похожее", которое потом сериализуется при вызове веб-метода в структуру XML полностью соответствующую приведенной схеме, и "потом" на стороне веб-сервиса "оно" легко сможет быть десериализовано уже в "настоящий" экземпляр исходного MyTreeNode(). З.Ы. на стороне клиента класс-"заглушка" для параметра типа MyTreeNode может быть сгенерен из WSDL таким образом: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2008, 11:28 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
проясняется.... что значит "tns:" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2008, 12:36 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Winnipuhпроясняется.... что значит "tns:" ? Сокращение от "target namespace" - часть спецификации SOAP/WSDL, которая "требует" обязательного указания "пространств имен" для всех типов, описанных в "контракте"... (чтоб, не дай БГ, не "попутать" их другими типами, которые задаются с помощью XML так же просто, как пересылаются пресловутые "2 байта"). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2008, 12:43 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
qu-qu Winnipuhпроясняется.... что значит "tns:" ? Сокращение от "target namespace" - часть спецификации SOAP/WSDL, которая "требует" обязательного указания "пространств имен" для всех типов, описанных в "контракте"... (чтоб, не дай БГ, не "попутать" их другими типами, которые задаются с помощью XML так же просто, как пересылаются пресловутые "2 байта"). аааа! точно! я почитал про WCF, может стоит сразу на нем делать сервис? вроде как последний писк в вебсервисах ... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2008, 13:42 |
|
WebService: что такое strong typed?
|
|||
---|---|---|---|
#18+
Winnipuh... я почитал про WCF, может стоит сразу на нем делать сервис? вроде как последний писк в вебсервисах ... Не знаю, еще не пробовал в рабочих проектах (тут бы с "классическими" веб-сервисами успеть "расплеваться"). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2008, 14:59 |
|
|
start [/forum/topic.php?fid=19&fpage=35&tid=1398005]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 232ms |
total: | 357ms |
0 / 0 |