我想在我的WPF应用程序中使用WCF RIA SERVICES.
但WCF RIA SERVICES客户端现在仅支持Silverlight和ASP.NET,我如何在WPF应用程序中使用它?
我是WCF数据服务的新手,所以我一直在玩.经过一些初步测试后,我对测试数据服务的性能感到失望.
我意识到因为WCF DS是基于HTTP的,所以协议中固有的开销,但我的测试仍然比我预期的慢:
环境:
码:
测试计划:
结果:
哎哟.这比EF慢约20倍.
由于WCF数据服务是HTTP,因此没有机会进行HTTP连接重用,因此每次迭代都会强制客户端重新连接到Web服务器.但肯定还有比这更多的事情.
EF本身相当快,并且同样的EF代码/模型被重用于服务和直接到EF客户端测试.对数据服务中的Xml序列化和反序列化会有一些开销,但那么多!?!我以前在Xml序列化方面表现很好.
我将使用JSON和协议缓冲区编码运行一些测试,以确定我是否可以获得更好的性能,但我很好奇社区是否有任何关于加快这一点的建议.
我对IIS不太满意,所以也许有一些IIS调整(缓存,连接池等)可以设置来改善这个?
还有一个很大的不同的方式Silverlight应用程序可以连接返回到它的服务器.包含
对于这些中的每一个,请说明它的用途以及何时使用或不使用它.我不是在寻找一个很好的细节,只是一套"经验法则",可以在它们之间进行选择.
(问题是在设计第一个Silverlight应用程序时,知道在没有时间学习所有这些应用程序时要使用的内容.)
如果我在这个问题中用WPF替换Silverlight会对你的答案产生什么影响?(我假设WPF认为由于防火墙和管理员策略,不能直接连接到数据库.)
有很多关于如何使用.NET RIA服务构建Silverlight应用程序的信息,但目前尚不清楚RCF中WCF中缺少什么是唯一的东西?
但他们没有回答这个问题.
对于这个愚蠢的问题很抱歉,但RIA Services
如果您已经拥有,那么图层会为您的应用带来什么Silverlight <--> WCF Service <--> Business Logic <--> Entity Framework Model <--> Database
?验证?验证?它对你有用吗?
目前我唯一看到的是:使用RIA服务时,您不需要手动托管WCF服务,也不需要在客户端配置任何引用(clien side == Silverlight应用程序).
可能我不知道RIA服务的一些非常有用的功能?所以,请你指点那个好医生吗?
非常感谢.
PS我已经阅读了很多关于差异的不同文章,但无法澄清它......所有文章都"讲述"并且不具体.如果你打算给我一个附加文章的链接,请你这么好,并提供一份你看到的好处列表.
我在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吗?我必须标记它吗?我必须......什么?
提前致谢
我是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 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服务中如何工作的更多信息,请查看它.
我正在重写一个LOB应用程序,其架构如下:
Silverlight && Windows Mobile - > WCF - >实体框架 - >数据库.
移动应用程序应该能够像Silverlight应用程序那样做某些事情.使用RIA服务可以获得哪些好处?什么是RIA服务优于WCF的优势和劣势?
我想开始一系列MVVM-light(w/RIA Services)最佳实践.我发现有很多项目是有用的最佳实践或最佳方法,但是希望听到其他人使用MVVM-light工具包并查看他们发现的内容.
请将您的最佳做法发布为此问题的答案.
我有实体Group
和User
.
该Group
实体拥有Users
财产是用户的列表.
用户有一个名为的属性IsEnabled
.
我想编写一个返回Group
s 列表的linq查询,该列表只包含User
s 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) wcf-ria-services ×10
silverlight ×5
wcf ×5
.net ×1
astoria ×1
c# ×1
entityset ×1
linq ×1
mvvm-light ×1
rest ×1
wpf ×1