标签: wcf-ria-services

如何在WPF应用程序中使用WCF RIA SERVICES?

我想在我的WPF应用程序中使用WCF RIA SERVICES.

但WCF RIA SERVICES客户端现在仅支持Silverlight和ASP.NET,我如何在WPF应用程序中使用它?

c# wpf wcf wcf-ria-services

31
推荐指数
1
解决办法
2万
查看次数

如何提高WCF数据服务性能

我是WCF数据服务的新手,所以我一直在玩.经过一些初步测试后,我对测试数据服务的性能感到失望.

我意识到因为WCF DS是基于HTTP的,所以协议中固有的开销,但我的测试仍然比我预期的慢:

环境:

  • 所有在一个盒子:四核64位笔记本电脑与4GB RAM运行W7.体面的机器.
  • 具有16个表的小型SQL数据库(SQLExpress 2008 R2)...正在测试的表有243行.
  • 在IIS中托管我的测试服务,包含所有默认值.

码:

  • 我为这个数据库创建了一个实体框架模型(DataContext)(VS2010的股票代码).
  • 我已经基于这个模型创建了一个数据服务.
  • 我已经创建了一个客户端,该服务器具有针对此服务的直接服务引用(ObjectContext)(VS2010的股票代码)
  • 在客户端我也可以直接调用EF模型并使用Native SQL(ADO.NET SqlConnection)

测试计划:

  • 每次迭代都连接到数据库(有一个重用连接的选项),查询目标表中的所有行("EVENTS"),然后对它们进行计数(从而强制执行任何延迟的提取).
  • 为Native SQL(SqlConnection/SqlCommand),实体框架(DataContext)和WCF数据服务(ObjectContext)分别运行25次迭代.

结果:

  • Native SQL的25次迭代:436ms
  • 实体框架的25次迭代:656ms
  • WCF数据服务的25次迭代:12110ms

哎哟.这比EF慢约20倍.

由于WCF数据服务是HTTP,因此没有机会进行HTTP连接重用,因此每次迭代都会强制客户端重新连接到Web服务器.但肯定还有比这更多的事情.

EF本身相当快,并且同样的EF代码/模型被重用于服务和直接到EF客户端测试.对数据服务中的Xml序列化和反序列化会有一些开销,但那么多!?!我以前在Xml序列化方面表现很好.

我将使用JSON和协议缓冲区编码运行一些测试,以确定我是否可以获得更好的性能,但我很好奇社区是否有任何关于加快这一点的建议.

我对IIS不太满意,所以也许有一些IIS调整(缓存,连接池等)可以设置来改善这个?

wcf astoria wcf-data-services wcf-ria-services

24
推荐指数
1
解决办法
1万
查看次数

如何在新的Silverlight应用程序中选择WCF,REST,POX和RIA服务

还有一个很大的不同的方式Silverlight应用程序可以连接返回到它的服务器.包含

对于这些中的每一个,请说明它的用途以及何时使用或不使用它.我不是在寻找一个很好的细节,只是一套"经验法则",可以在它们之间进行选择.

(问题是在设计第一个Silverlight应用程序时,知道在没有时间学习所有这些应用程序时要使用的内容.)

如果我在这个问题中用WPF替换Silverlight会对你的答案产生什么影响?(我假设WPF认为由于防火墙和管理员策略,不能直接连接到数据库.)

rest silverlight wcf wcf-data-services wcf-ria-services

22
推荐指数
2
解决办法
5839
查看次数

RIA服务与WCF服务:有什么区别

有很多关于如何使用.NET RIA服务构建Silverlight应用程序的信息,但目前尚不清楚RCF中WCF中缺少什么是唯一的东西?

以下是围绕这一主题的几个主题:[1],[2]

但他们没有回答这个问题.

对于这个愚蠢的问题很抱歉,但RIA Services如果您已经拥有,那么图层会为您的应用带来什么Silverlight <--> WCF Service <--> Business Logic <--> Entity Framework Model <--> Database?验证?验证?它对你有用吗?

目前我唯一看到的是:使用RIA服务时,您不需要手动托管WCF服务,也不需要在客户端配置任何引用(clien side == Silverlight应用程序).

可能我不知道RIA服务的一些非常有用的功能?所以,请你指点那个好医生吗?

非常感谢.

PS我已经阅读了很多关于差异的不同文章,但无法澄清它......所有文章都"讲述"并且不具体.如果你打算给我一个附加文章的链接,请你这么好,并提供一份你看到的好处列表.

.net silverlight wcf wcf-ria-services

20
推荐指数
1
解决办法
1万
查看次数

RIA Services EntitySet不支持"编辑"操作

我在RIA服务(VS2010Beta2)中迈出了第一步,我遇到了这个问题:创建了一个EF模型(没有POCO),它上面的通用存储库和一个RIA服务(托管在ASP.NET MVC应用程序中)并试图获取数据从ASP.NET MVC应用程序:运作良好.下一步:Silverlight客户端.获得了对RIAService(通过其上下文)的引用,查询了存储库的所有记录并将它们也引入了SL应用程序(使用此代码示例):

private ObservableCollection<Culture> _cultures = new ObservableCollection<Culture>();
public ObservableCollection<Culture> cultures
{
  get { return _cultures; }
  set
  {
    _cultures = value;
    RaisePropertyChanged("cultures");
  }
}
Run Code Online (Sandbox Code Playgroud)

....

//Get cultures            
EntityQuery<Culture> queryCultures = from cu in dsCtxt.GetAllCulturesQuery()
                                             select cu;
loCultures = dsCtxt.Load(queryCultures);
loCultures.Completed += new EventHandler(lo_Completed);
Run Code Online (Sandbox Code Playgroud)

....

void loAnyCulture_Completed(object sender, EventArgs e)
{
  ObservableCollection<Culture> temp= 
  new ObservableCollection<Culture>loAnyCulture.Entities);
                AnyCulture = temp[0];
}
Run Code Online (Sandbox Code Playgroud)

问题在于:每当我尝试编辑记录的某些数据时(在本例中为第一条记录),我都会收到此错误:"Culture"类型的EntitySet不支持"编辑"操作.

我认为我做了一些奇怪的事情,并试图创建一个Culture类型的对象并为其赋值:它工作得很好!

我错过了什么?我必须声明一个EntitySet吗?我必须标记它吗?我必须......什么?

提前致谢

entityset wcf-ria-services

19
推荐指数
1
解决办法
2万
查看次数

"CreateRiaClientFilesTask"任务意外失败

我是VS 2010并且最近安装了WCF RIA Services V1.0.为了测试,我创建了一个新的Silverligh Business项目,但现在我不时地重建解决方案时收到以下错误:

有人知道我为什么会这样吗?

谢谢

Error   1   The "CreateRiaClientFilesTask" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.ServiceModel.DomainServices.Tools, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.ServiceModel.DomainServices.Tools, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, Boolean loadTypeFromPartialName)
   at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean …
Run Code Online (Sandbox Code Playgroud)

silverlight wcf-ria-services

19
推荐指数
2
解决办法
1万
查看次数

RIA服务:如何创建自定义身份验证?

我正在使用Silverlight RIA服务,我想创建自定义身份验证.这似乎是唯一几乎没有文档的东西(我已经阅读了整个RIAServicesOverview.docx).

您知道我创建客户身份验证服务的方法吗?我不想使用默认的ASP.NET成员资格模型.我不知道我需要实现什么接口或抽象类 - 虽然我确实找到了System.Web.Ria.ApplicationServices.IAuthentication.

我需要实施IAuthentication吗?如果是这样,你能否就如何这样做给我一些建议?这些是以下方法:

    public User GetUser();

    public User Login(string userName, string password, bool isPersistent, string customData);

    public User Logout();

    public void UpdateUser(User user);
Run Code Online (Sandbox Code Playgroud)

我不知道我将如何实现其中任何一个(登录除外) - 如果Logout()工作,服务怎么可能知道用户当前登录了什么?

我已经冲刷寻找如何做到这一点了几个小时在网上,我无法找到任何介绍如何创建一个简单的DomainService可以用于在"RIA联" Silverlight项目验证用户.

如果有人能够对此有所了解,我将非常感激.

谢谢,
查尔斯


[编辑]
在MSDN代码库中找到了RIA服务页面.有一个名为Authentication Samples的部分,它链接到一些很棒的代码示例.如果您想了解有关身份验证在RIA服务中如何工作的更多信息,请查看它.

silverlight-3.0 wcf-ria-services

17
推荐指数
1
解决办法
2万
查看次数

RIA服务与WCF服务

我正在重写一个LOB应用程序,其架构如下:

Silverlight && Windows Mobile - > WCF - >实体框架 - >数据库.

移动应用程序应该能够像Silverlight应用程序那样做某些事情.使用RIA服务可以获得哪些好处?什么是RIA服务优于WCF的优势和劣势?

silverlight wcf wcf-ria-services

15
推荐指数
1
解决办法
1万
查看次数

MVVM-light + RIA服务最佳实践

我想开始一系列MVVM-light(w/RIA Services)最佳实践.我发现有很多项目是有用的最佳实践或最佳方法,但是希望听到其他人使用MVVM-light工具包并查看他们发现的内容.

请将您的最佳做法发布为此问题的答案.

silverlight wcf-ria-services mvvm-light

15
推荐指数
1
解决办法
3524
查看次数

Linq To Entities - 如何过滤子实体

我有实体GroupUser.
Group实体拥有Users财产是用户的列表.
用户有一个名为的属性IsEnabled.

我想编写一个返回Groups 列表的linq查询,该列表只包含Users IsEnabled为true 的s .

例如,对于类似下面的数据,
AllGroups
组A
用户1(IsEnabled = true)
用户2(IsEnabled = true)
用户3(IsEnabled = false)

B组
用户4(IsEnabled = true)
用户5(IsEnabled = false)
用户6(IsEnabled = false)

我想得到
FilteredGroups
A组
用户1(IsEnabled = true)
用户2(IsEnabled = true)

B组
用户4(IsEnabled = true)

我尝试了以下查询,但Visual Studio告诉我
[不能将属性或索引器'用户'分配给它 - 它是只读的]

FilteredGroups = AllGroups.Select(g => new Group()
                    {
                        ID = g.ID,
                        Name = g.Name,
                        ...
                        Users = g.Users.Where(u …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities entity-framework wcf-ria-services

14
推荐指数
2
解决办法
2万
查看次数