Silverlight - создан новый домен-сервис, но как мне получить к нему доступ от клиента? - PullRequest
3 голосов
/ 07 июля 2010

Я использовал шаблон бизнес-приложения SL и добавил новую пустую пустую доменную службу в папку «Мои услуги» в .Web-части решения. Класс DomainService1 и наследуется от DomainService. Он содержит один метод:

public class DomainService1 : DomainService
{
    public string Hello()
    {
        return "Hello World";
    }
}

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

Ответы [ 2 ]

4 голосов
/ 07 июля 2010

Код на стороне клиента генерируется RIA Services.

Чтобы получить доступ к службам, которые наследуют DomainService, вы создаете новый контекст на стороне клиента.

Заменить часть имени "Service" на "Context".

UserService = UserContext, ArticleService = ArticleContext и т. Д.

Код клиента

var testContext = new TestContext();
            testContext.Hello();

Сервисный код

[EnableClientAccess]
    public class TestService : DomainService
    {
        public string Hello()
        {
            return "Hello world!";
        }
    }
0 голосов
/ 14 мая 2012

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

Если имя вашей службы оканчивается тегом service, вы сможете преобразовать его в контекст как имя моей службы DomainService1, то на стороне клиента оно может быть доступно по DomainContext1. Если на стороне сервера мое имя Domainservice - ABC, то я могу получить к нему прямой доступ по имени, контекст не нужен.

Сервисный код:

[EnableClientAccess]
public class TestService : DomainService
{
    public string Hello()
    {
        return "Hello world!";
    }
}

Код клиента: На стороне клиента вы должны объявить пространство имен как system.your web project.web.servicesmodel.client

Теперь

TestContext test=new TestContext(); 
test.Hello(getData,null,false);`

// первый параметр - это метод обратного вызова, второй не важен для вас, а третий - если возникает какое-либо исключение,

public void getData(InvokeOpration<string> value)
  {
    MessageBox.Show(""+value.Value);

    }

Теперь вы можете получить Hello World как MessageBox.

...