wcf представление дженериков

Если ни один из вышеупомянутых комментариев, справки ответа (ответов) -

, Что я нашел здесь, (Nvidia), не то, что во входят в систему, все довольно хорошо. Но рано или поздно вещи наполнены & медленный. Открытие, закрытие, минута & восстанавливая windos, переключая WS, гладкая прокрутка, ect. ect.

По крайней мере сюда отключение animations плагин в compiz разрешает все это. Некоторые я не собираюсь использовать его, имели бы мгновенную производительность затем некоторым эффектом никакого действительного значения

5
задан np-hard 31 August 2009 в 19:39
поделиться

2 ответа

Я полагаю, это возможно, хотя я не уверен, что вам это нужно. Я бы выбрал следующий подход (непроверенный, не уверен, что он работает). Сначала создайте в своем решении следующую структуру проекта:

  • ServiceInterfaces
  • ServiceImplementations (ссылки ServiceInterfaces и ModelClasses )
  • ModelClasses
  • Host (ссылки ServiceInterfaces и ServiceImplementations )
  • Клиент (ссылки ServiceInterfaces и ModelClasses )

В ServiceInterfaces у вас есть такой интерфейс (я пропустил пространства имен и т. Д., Чтобы сделать пример короче):

[ServiceContract]
public interface IMyService<T>
{
    T GetObject(int id);
}

В ServiceImplementations у вас есть класс, реализующий IMyService :

public class MyService<T> : IMyService<T>
{
    T GetObject(int id)
    {
        // Create something of type T and return it. Rather difficult
        // since you only know the type at runtime.
    }
}

В Host у вас есть правильная конфигурация для вашей службы в App.config (или Web.config ) и следующий код для размещения вашей службы (учитывая, что это отдельное приложение):

ServiceHost host = new ServiceHost(typeof(MessageManager.MessageManagerService))
host.Open();

И, наконец, в Клиент , вы используете класс ChannelFactory для определения прокси:

Binding binding = new BasicHttpBinding(); // For the example, could be another binding.
EndpointAddress address = new EndpointAddress("http://localhost:8000/......");
IMyService<string> myService =
    ChannelFactory<IMyService<string>>.CreateChannel(binding, address);
string myObject = myService.GetObject(42);

Опять же, я не уверен, работает ли это. Хитрость заключается в том, чтобы разделить ваши сервисные интерфейсы (в ServiceInterfaces ) и объекты модели предметной области (в ModelClasses ) между хостом и клиентом.

2
ответ дан 13 December 2019 в 22:12
поделиться

Нет, вы не можете. Независимо от того, хотите ли вы или не нуждаетесь в взаимодействии, основная основа WCF - это обмен сообщениями.

Клиент отправляет серверу сообщение и получает ответ. Это сообщение - все, что проходит между клиентом и сервером, и его необходимо сериализовать в XML или двоичный формат. Вот почему любые передаваемые данные должны быть атомарными (например, int, string) или DataContract - описанием стека служб WCF о том, как сериализовать и десериализовать такие объекты.

Вы не можете передавать какие-либо интерфейсы или другие «уловки» - все, что происходит между клиентом и сервером, должно быть выражено в основном в схеме XML.

Я боюсь, что то, что вы пытаетесь достичь, совершенно противоречит тому, что предлагает WCF.

8
ответ дан 13 December 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: