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

Код: 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
14.03.2008, 22:31
    #35192281
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема c WCF service
А во что он должен превратиться, если объявлен как out?
...
Рейтинг: 0 / 0
14.03.2008, 22:48
    #35192305
Диез
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема c WCF service
buredА во что он должен превратиться, если объявлен как out?

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

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

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

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

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


Ау! Спецы по WCF есть? Help!
...
Рейтинг: 0 / 0
15.03.2008, 00:08
    #35192364
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема c WCF service
Чуть по-подробнее задачу можно описать.
Трансакции есть в 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
15.03.2008, 00:09
    #35192365
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема c WCF service
Вот этот пример лучше

Код: 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
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема c WCF service / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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