Как настроить службы RIA с Silverlight 4.0 и без EF - PullRequest
3 голосов
/ 16 декабря 2010

Как новичок в Silverlight, мне очень трудно настроить веб-сервис RIA. Примеры, доступные в Интернете, почти всегда называют Entity Framework как ORM, но мы используем NHibernate в качестве ORM. Мне известно об этом уроке Брэда Абрамса, в котором он использует NHibernate в качестве ORM, но большая часть его идет выше моей головы, потому что я также новичок в NHibernate, и некоторые концепции RIA мне не ясны, например. DomainService.

Я бы хотел сначала сохранить простоту и игнорировать ORM в данный момент. Итак, кто-нибудь может указать мне правильное направление относительно того, как заставить «ванильный» веб-сервис работать с Silverlight 4.0 и последним выпуском RIA? Например, как мне представить метод, который возвращает целое число 100, а затем вызвать метод из моего приложения SilverLight? Кроме того, я не уверен, уместно ли это, но приложение Silverlight размещено в ASP.NET MVC 2.

Для меня это должно быть так просто, но я действительно борюсь с этим в данный момент.

ТИА

David

1 Ответ

3 голосов
/ 17 декабря 2010

Эти сценарии (не связанные с EntityFramework RIA Services с Silverlight) явно недостаточно документированы, и я надеюсь вскоре опубликовать некоторые записи блога, чтобы охватить эти сценарии (в том числе как использовать NHibernate).

Вот один из способоввыполните то, что вы просите:

Установите «Инструменты Silverlight 4 для Visual Studio 2010», если вы этого еще не сделали:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b3deb194-ca86-4fb6-a716-b67c2604a139&displaylang=en

Создайте новое приложение для навигации Silverlightв Visual Studio 2010 (установите флажок, чтобы включить службы RIA).

Измените файл web.config в веб-проекте следующими способами:

Враздел, добавьте:

<httpModules>
  <add name="DomainServiceModule"
   type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule,
         System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0,
         Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>

Добавитьраздел как пэр:

  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
     multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Добавьте следующие ссылки на веб-проект:

System.ServiceModel.DomainServices.Hosting  
System.ServiceModel.DomainServices.Server

Создайте новый класс VanillaDomainService в веб-проекте, который содержит ваш метод «return 100»:

[System.ServiceModel.DomainServices.Hosting.EnableClientAccess()]
public class VanillaDomainService :
                System.ServiceModel.DomainServices.Server.DomainService
{
    public int ReturnInteger100()
    {
        return 100;
    }
}

Теперь вернемся к проекту приложения Silverlight, в Home.xaml.cs, в методе OnNavigatedTo, вызовите новый метод RIA Services (помните, что все вызовы асинхронные):

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        SilverlightApplication1.Web.VanillaDomainContext oneVanillaDomainContext =
           new SilverlightApplication1.Web.VanillaDomainContext();

        oneVanillaDomainContext.ReturnInteger100(
           anInt => MessageBox.Show(anInt.Value.ToString()), null);
    }

Теперь сборкаи запустить, и это должно быть.

Я проверил этот код, и он работал для меня.

...