Эти сценарии (службы RIA не EntityFramework с 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 в веб-проекте следующими способами:
В разделе ‹system.web› добавьте:
<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› как аналог ‹system.web›:
<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);
}
Теперь создайте и запустите, и это должно быть так.
Я протестировал этот код, и он сработал для меня.
person
Michael Maddox
schedule
17.12.2010