powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Использовать классы из веб сервиса в клиенте
30 сообщений из 30, показаны все 2 страниц
Использовать классы из веб сервиса в клиенте
    #38363731
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Требуется создать веб сервис, обращаться к которому будут присылая сериализованные в XML объекты с клиента.
Там их будут де-сериализовывать и обрабатывать.
Как объявить все нужные классы на сервисе, чтобы объявления не нужно было дублировать на клиенте?
C#, VS 2008 .NET 3.5
Что-то подсказывает что нужно чтобы код сервиса и клиента находился в одном пространстве имен, но как конкретно???
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38363905
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler,делается отдельная, общая сборка
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38363919
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, мне это ничего не говорит. Можно ли поподробнее? Я столько лет вожусь исключительно с бизнес логикой, что очень отстал от создания новых решений и проектов в студии.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38363921
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler,

1. Создаёте в студии новый проект с типом (output type) Class Library;
2. Описываете в нём упомянутые выше классы;
3. Добавляете ссылку на проект, или на сборку (dll) на клиенте, и на сервере.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38363925
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

А что насчет пространства имен в этой сборке? Оно должно совпадать с тем, которое используется в клиенте?
У веб сервиса вроде вообще пространство имен не указано явно.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38363929
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler, за годы возни с бизнес логикой Вы не пользовались пространствами имён?

Допустим система у Вас называется MySuperSystem, общие классы лежат в проекте Common (или DomainModel, или как Вам угодно), тогда в нём пространство имён:
Код: c#
1.
namespace MySuperSystem.Common


на сервере:
Код: c#
1.
2.
3.
4.
5.
6.
namespace MySuperSystem.Server
{
    using Common;

    // ...
}


на клиенте:
Код: c#
1.
2.
3.
4.
5.
6.
namespace MySuperSystem.Client
{
    using Common;

    // ...
}
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38363943
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Именно так, ни разу не пользовался.
В VS2008 проект веб сервиса создается примерно вот таким:

Код: c#
1.
2.
3.
4.
5.
6.
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{



то есть в нем вообще не упоминается в каком пространстве он находится. Но кажется ему это и не нужно до тех пор пока перед этим вставлена строка со ссылой на

Код: c#
1.
using MySuperNamespace;
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38363950
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler, а может таким:
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebService1
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}




Не суть важно.
Вы можете назначить пространство имён, изменить, расширить, избавиться от него.
Главное, чтобы не возникало неопределённостей.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38363990
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Да нет же, именно как я показал (за вычетом uses), никакого namespace явно не создается.
Но и так работает, так что Огромное Спасибо!

Посадили разработчика хранимых процедур ваять веб сервисы, вот и чайницкие вопросы возникают.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38364588
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerskyANA,

Да нет же, именно как я показал (за вычетом uses), никакого namespace явно не создается.
Но и так работает, так что Огромное Спасибо!

Посадили разработчика хранимых процедур ваять веб сервисы, вот и чайницкие вопросы возникают.Я запостил код только что созданного в студии проекта

MSDN Вам в помощь.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38364604
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerПосадили разработчика хранимых процедур ваять веб сервисы, вот и чайницкие вопросы возникают.Что у Вас за СУБД?

Помнится в SQL Server 2005 появилась фича: "Native XML Web Services (SOAP/HTTP endpoints)". В SQL Server 2012 от неё отказались, т.к. WCF есть.

Но времени было достаточно, чтобы разработчику хранимых процедур познакомиться с веб сервисами.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38365290
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

После создания библиотеки классов вроде все заработало, пока не возникла необходимость создать метод, в который передается объект одного из классов. Вроде бы явно указываю какой класс использовать, но все равно вылезает ошибка. Объявляю:

Код: c#
1.
public bool CreateOrderFromOrderInfo(string username, string password, VElectronics.VE_OrderInfo Order)



Вызываю:

Код: c#
1.
2.
3.
            VElectronics.VE_OrderInfo veo = new VE_OrderInfo();
           ...
            checkBox1.Checked = ves.CreateOrderFromOrderInfo("gobzo", "123456", veo);


ошибка:

Код: c#
1.
Error	2	Argument '3': cannot convert from 'VElectronics.VE_OrderInfo' to 'VElectronics.VE_Service1.VE_OrderInfo'
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38365648
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler, по тексту ошибки вроде Вам должно быть понятно в чём проблема.
ves - это что такое?
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38366602
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ves это веб сервис:

Код: c#
1.
VE_WebService.VElectronicsWebService ves;



Код: c#
1.
2.
3.
4.
5.
6.
7.
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class VElectronicsWebService : System.Web.Services.WebService {
...
}
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38366667
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler, код вызыва - это код клиента? Для работы с сервисом воспользовались Add Web Reference?
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38366910
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

да и да.

мне все больше кажется что от меня потребовали глупость - передавать объект класса с клиента в сервис. в любом случае передадутся только данные без методов. гораздо проще делать как я и раньше делал - вручную сериализовывать на клиенте и десериализовывать в сервисе.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38367023
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Koblerда и да.

мне все больше кажется что от меня потребовали глупость - передавать объект класса с клиента в сервис. в любом случае передадутся только данные без методов. гораздо проще делать как я и раньше делал - вручную сериализовывать на клиенте и десериализовывать в сервисе.Воспользовавшись Add Web Reference Вы сгенерировали на клиенте необходимые proxy-классы для работы с сервисом по WSDL, что предоставляет последний. Работать теперь надо через них и Вашей библиотекой на клиенте можно не пользоваться. Вы загляните внутрь метода CreateOrderFromOrderInfo на клиенте ради интереса.

Если Вам проще вручную сериализовывать передаваемые данные, то сериализуйте, я не против. Они автоматически будут десериализованы в сервисе.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38368032
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Это-то понятно, непонятно зачем, когда в прокси-классах нет методов, а только данные.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38368384
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler, выше упомянул о WSDL, подумайте над этим.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38369519
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Так можно все глаза просмотреть. Можно подробнее?
Проблема в том, что Reference.cs превращает классы в классы без методов.
Например мой заказ содержит список продуктов:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    [Serializable]
    public class VE_OrderInfo
    {
        public Int32 CustomerId = 0;

        public VE_OrderInfo () {
            Items = new List<VE_ProductInfo>();
        }

        [XmlArray]
        public List<VE_ProductInfo> Items {get; set;}

        public string SpecialInstructions;

        public void AddProduct(VE_ProductInfo pi)
        {
            Items.Add(pi);
        }
    }



Так на клиенте Items становятся просто массивом VE_ProductInfo[] без метода Add. В результате я не могу вызвать ни мой метод AddProduct, ни Items.Add. В связи с этим можно пожалуйста прояснить ранее сказанное:
skyANAОни автоматически будут десериализованы в сервисе.
Как именно этого добиться? Не то чтобы меня напрягало вручную де-сериализовывать, но если можно этого не делать, то было бы лучше.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38369541
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo Kobler,
- Вы, чего, и конфеты за меня есть будете?(с)

Код: 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.
  [Serializable]
    public class VE_OrderInfo : IAddStrongMy
    {
        public Int32 CustomerId = 0;

        public VE_OrderInfo()
        {
            Items = new List<VE_ProductInfo>();
        }

        [XmlArray]
        public List<VE_ProductInfo> Items { get; set; }

        public string SpecialInstructions;



        public void AddProduct(VE_ProductInfopi)
        {
            throw new NotImplementedException();
        }
    }
    public interface IAddStrongMy
    {
        void AddProduct(VE_ProductInfopi);
    }

...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38378879
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Что такое IAddStrongMy?
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38379226
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, господа, но вопрос решился гораздо проще. Просто удаляются несколько лишних строк...
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38379539
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerИзвините, господа, но вопрос решился гораздо проще. Просто удаляются несколько лишних строк...Где удаляются?
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38379570
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В кодогенерированных классах сервиса ничего удалять нельзя. При следующем рефреше все изменения слетят.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38380478
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Они слетят, а я их опять удалю. Зато работает.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38380488
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerОни слетят, а я их опять удалю. Зато работает.Ёжики кололись и плакали, но продолжали есть кактус.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38380550
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Ничего, зато работает и все довольны.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38380584
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gobzo KoblerМСУ, Они слетят, а я их опять удалю. Зато работает.
Этопять.
...
Рейтинг: 0 / 0
Использовать классы из веб сервиса в клиенте
    #38402273
Фотография Gobzo Kobler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предложите решение. Насмехаться и я умею.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Использовать классы из веб сервиса в клиенте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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