Silverlight - создана новая служба домена, но как мне получить к ней доступ из клиента?

Я использовал шаблон бизнес-приложения SL и добавил новую пустую, пустую службу домена в свою папку Services в .Web-части решения. Это класс DomainService1, наследуемый от DomainService. Он содержит один метод:

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

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


person Calanus    schedule 07.07.2010    source источник


Ответы (2)


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

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

Замените часть имени «Служба» на «Контекст».

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

Код клиента

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

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

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

Убедитесь, что вы включили службу 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.

person Dhaval Patel    schedule 14.05.2012