powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема c WCF service
10 сообщений из 10, страница 1 из 1
Проблема c WCF service
    #35191580
#vr_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сервере объявляется метод

Код: plaintext
1.
[OperationContract]
void SaveCatalogTypes(Guid userGuid, DataSet changeDS, out int out_res);

но на клиенте генерируется следующее его описание:

Код: plaintext
1.
2.
public int SaveCatalogTypes(System.Guid userGuid, System.Data.DataSet changeDS) {
            return base.Channel.SaveCatalogTypes(userGuid, changeDS);
        }

Т.е. третий параметр превратился в возвращаемое методом значение.
Кто знает почему и как это исправить?
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192281
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А во что он должен превратиться, если объявлен как out?
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192305
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredА во что он должен превратиться, если объявлен как out?

Вопрос, конечно, интересный.
А если в этом OperationContract несколько out-параметров, во что они должны превратиться?
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192316
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прокси всегда вручную пишу. Но полагаю несколько выходных параметров можно передать листом, массивом, строкой наконец.
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192317
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структурой или экземпляром класса. Всё пройдёт.
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192326
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredЯ прокси всегда вручную пишу. Но полагаю несколько выходных параметров можно передать листом, массивом, строкой наконец.

Я тоже иногда так делаю. :)

Но без строгой типизации само понятие контракта теряет смысл. Ибо перестает быть контрактом.
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192331
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разнести разные типы по разным методам [OperationContract] в рамках одного сервиса.
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192350
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredРазнести разные типы по разным методам [OperationContract] в рамках одного сервиса.

Тоже вариант.

Но если нужна транзакционность метода - уже не прокатит, надо придумывать средства обеспечения контекста.


Ау! Спецы по WCF есть? Help!
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192364
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуть по-подробнее задачу можно описать.
Трансакции есть в WCF

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
class MyService : IMyContract
{
   [OperationBehavior(TransactionScopeRequired = true)]
   public void MyMethod(...)
   {
      MyClass obj = new MyClass( );
      obj.SomeMethod( );
   }
}
class MyClass
{
   public void SomeMethod( )
   {
      using(TransactionScope scope = new TransactionScope( ))
      {
         //Do some work then
         scope.Complete( );
      }
   }
}
...
Рейтинг: 0 / 0
Проблема c WCF service
    #35192365
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этот пример лучше

Код: 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.
////////////////////////// Service Side ////////////////////////////
[ServiceContract]
interface IMyContract
{
   [OperationContract]
   [TransactionFlow(TransactionFlowOption.Allowed)]
   void MyMethod(...);
}
[ServiceContract]
interface IMyOtherContract
{
   [OperationContract]
   [TransactionFlow(TransactionFlowOption.Mandatory)]
   void MyOtherMethod(...);
}
class MyService : IMyContract
{
   [OperationBehavior(TransactionScopeRequired = true)]
   public void MyMethod(...)
   {...}
}
class MyOtherService : IMyOtherContract
{
   [OperationBehavior(TransactionScopeRequired = true)]
   public void MyOtherMethod(...)
   {...}
}
////////////////////////// Client Side ////////////////////////////
using(TransactionScope scope = new TransactionScope( ))
{
   MyContractClient proxy1 = new MyContractClient( );
   proxy1.MyMethod(...);
   proxy1.Close( );

   MyOtherContractClient proxy2 = new MyOtherContractClient( );
   proxy2.MyOtherMethod(...);
   proxy2.Close( );

   scope.Complete( );
}

//Can combine in single using block:
using(MyContractClient proxy3 = new MyContractClient( ))
using(MyOtherContractClient proxy4 = new MyOtherContractClient( ))
using(TransactionScope scope = new TransactionScope( ))
{
   proxy3.MyMethod(...);
   proxy4.MyOtherMethod(...);
   scope.Complete( );
}
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема c WCF service
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]