разница в использовании службы WCF - Console vs Silverlight - PullRequest
0 голосов
/ 18 июля 2010

Может кто-нибудь сказать, почему, когда у меня есть контракт wcf:

    [ServiceContract]
public interface IService1
{
    [OperationContract]
    string TestGetName();
}

и реализация

 public string TestGetName()
    {
        return "Kasia";
    }

Когда я пытаюсь использовать его в консольном приложении, я могу сделать только это:

    Service1Client client = new Service1Client();
    Console.WriteLine((client.TestGetName()));

но в Silverlight я должен использовать этот способ:

            Service1Client clientTest = new Service1Client();
            clientTest.TestGetNameCompleted += new EventHandler<TestGetNameCompletedEventArgs>(clientTest_TestGetNameCompleted);
            clientTest.TestGetNameAsync();
    void clientTest_TestGetNameCompleted(object sender, TestGetNameCompletedEventArgs e)
    {
            this.dataGridChild.DataContext = e.Result;

    }

Почему в SL я не вижу это первое короткое решение, а только это с обработчиками событий?Или лучше ... почему в Консольном приложении я могу выбрать генерацию синхронной операции, а в SL я должен использовать Генерацию асинхронных операций ...: /

Ответы [ 2 ]

2 голосов
/ 18 июля 2010

Синхронный вызов остановит поток пользовательского интерфейса Silverlight и, возможно, исполняющую среду, т. Е. Браузер.Чтобы предотвратить это, разрешены только асинхронные вызовы.

Поначалу это, конечно, необычно, но в долгосрочной перспективе полезно разделить уровень представления и уровень обслуживания.

1 голос
/ 18 июля 2010

Silverlight не поддерживает синхронные вызовы (что вы и делаете в своем консольном приложении).

Обновление: http://forums.silverlight.net/forums/p/34531/104526.aspx "Суть в том, что похоже, что синхронное поведение удалено из-за того, что оно не поддерживается всеми браузерами."

...