- 浏览: 496298 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1028)
- [发布至博客园首页] (826)
- [随笔分类]个人生活随笔 (14)
- [网站分类]首页候选区 (26)
- [网站分类]SharePoint (15)
- [网站分类]其他技术区 (6)
- [随笔分类]批处理技巧 (6)
- [随笔分类].net 2.0 (3)
- [随笔分类]SharePoint2007(MOSS2007) (0)
- [网站分类].NET新手区 (6)
- [网站分类]ASP.NET (6)
- [网站分类]架构设计 (18)
- [网站分类]程序人生 (2)
- [网站分类]SQL Server (2)
- WCF (3)
- 编程技巧 (2)
- 模式架构 (2)
- 分析设计 (4)
- 生活随笔 (0)
- 软件工程 (1)
- Android实例 (2)
最新评论
-
zilong0536:
楼主您好:
请问发表博文支持图片的功能怎么实现啊,一直没有思路 ...
新浪微博开放平台开发-android客户端(3) -
nicegege:
小弟 学习了
帮助中国移动设计10086的排队小模块 -
zl7824516:
用什么技术没说啊
通告(公告),消息(站内短信),提醒的设计:通告 -
virusswb:
源码下载: SinaWeibo2 源码下载之后,将后缀改为ra ...
新浪微博开放平台开发-android客户端(3) -
Jimmyxu0311:
找不到源码下载
新浪微博开放平台开发-android客户端(3)
1、环境配置
本文的Silverlight版本为Silverlight3,具体的配置过程可以参考:http://www.cnblogs.com/psunny/archive/2009/08/31/1556976.html或者http://www.cnblogs.com/wheeloffate/archive/2009/08/25/1553973.html
如果希望破解expression studio 3的话,可以在google中搜索【expression studio 3 破解】,也就是将下载的dll替换安装目录中的原文件,替换之前别忘了备份原文件,以防意外。
2、注意事项
2.1 跨域访问
跨域指的是当WCF的宿主和Silverlight得宿主不在同一个域中的时候,默认是不可以访问的。这里的域指的是应用程序的域,详细介绍可以参看:.net中应用程序域的概念。
主要是指的wcf默认不支持跨域访问(当你在单独一个项目中),需要两个xml文件来声明wcf是可以跨域访问的。
下面的跨域支持来自:http://www.silverlightshow.net/items/WCF-Integration-in-Silverlight-2-Beta-1.aspx
Cross-Domain Support
If you want to enable your service to work cross-domain, there are two files you will want to concern yourself with:
crossdomain.xml
This file comes from back in the macromedia flash days. Since it has wide support on the internet, it makes sense for Silverlight to support it. You can read some documentation on this file format here.
One use supported by the specification is to specify domains which can access the service:
xml version="1.0"?> DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="www.yoursite.com" /> <allow-access-from domain="yoursite.com" /> <allow-access-from domain="*.moock.org" /> cross-domain-policy>
However, that detailed format is not supported by Silverlight. Instead, you must opt in to all domains if you want to use the crossdomain.xml approach. Such a policy file would look like this:
xml version="1.0"?> DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" /> cross-domain-policy>
However, since this format doesn't cover all the scenarios that Silverlight developers are likely interested in (and flash developers too, most likely), Microsoft has provided another cross-domain file that is more flexible and currently Silverlight-specific: clientaccesspolicy.xml.
clientaccesspolicy.xml
lf you want finer control over your cross-domain policy, you'll want to use clientaccesspolicy.xml. This file allows you to specify both what domains have access to your service, and also what subpaths are covered by the policy. You can include both clientaccesspolicy.xml and crossdomain.xml for your services; Silverlight will check this file before looking for the crossdomain.xml
The equivalent to the "allow all domains access to all services" is below:
xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from> <domain uri="*"/> allow-from> <grant-to> <resource path="/" include-subpaths="true"/> grant-to> policy> cross-domain-access> access-policy>
If you want to get more selective about what you enable, you can specify external domains and subfolders on your site:
xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from> <domain uri="http://contoso.com"/> allow-from> <grant-to> <resource path="/public-services/" include-subpaths="true"/> grant-to> policy> cross-domain-access> access-policy>
You can find additional information about cross-domain files on msdn.
这两个文件需要放在wcf的根目录,好像网上说如果用IIS做wcf的宿主,这两个文件可能需要放在www的根目录interpub里面。
2.2 Silverlight部署
http://www.cnblogs.com/ibillguo/archive/2008/08/31/1280418.html
http://www.cnblogs.com/kvspas/archive/2009/04/25/silverlight3_install_bug.html
http://www.pin5i.com/showtopic-16755.html
http://blog.csdn.net/net_lover/archive/2008/04/06/2255074.aspx
这里的部署指的是sl3部署,宿主是IIS网站,ASP.NET网站,将网站发布到IIS中,设置网站的属性,设置ASP.NET属性版本为2.0,在HTTP头中添加两种MIME类型,.xaml application/xaml+xml和.xap application/x-silverlight-app,就可以了。
2.3 wcf部署
http://msdn.microsoft.com/zh-cn/library/aa751792.aspx
http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/10358039-fa88-494e-a382-ba1b70a2b866
http://www.cnblogs.com/pdfw/archive/2007/12/25/1014293.html
http://www.cnblogs.com/GSonOVB/archive/2009/08/13/1545648.html
http://msdn.microsoft.com/zh-cn/library/ms733766.aspx
这里的部署,以IIS网站为宿主,将wcf发布到一个IIS网站,在网站的根目录添加上面提到的两个文件CrossDomain.xml和ClientAccessPolicy.xml,甚至要添加到www的根目录【C:\Inetpub\wwwroot】。
2.4 Silverlight的数据库操作
目前有四种:web service、wcf、ado.net data service和ria service,但是后面的ado.net data service还是CTP版,RIA service还是beta版,都不适合用于实际应用开发,而且后两者也有一个问题,可能在某些方面要好于wcf,但是整体比较他们不如wcf,而且他们在数据库方面只支持MS SQL。在
Silverlight与数据库的三种互操作,中有一个简单的比较。
wcf肯定要比web service要好,wcf是微软新一代的分布式应用通信架构,整合了以前的web service、.NET REmoting、wse、COM+等等,可以完全使用托管代码编写,可以跨应用、跨机器、跨系统、甚至跨不同的OS都可以通信,只要他们遵守相同的交互标准。
2.5 调试wcf程序
WCF多层结构的开发,与往常的单程序调试有所不同,总是由于通信导致调试的无法进行,搜了一下互联网,找到了这个办法,测试后发现可行。
在WCF的HOST(寄主)所在项目中右键->调试->启动新实例,开始调试服务端。
在客户端所在项目中右键->调试->启动新实例,开始调试客户端。
这样的话,不管在同一个解决方案中还是不同解决方案中都可以进行WCF的调试。
2.6 其他
wcf如果进行了修改,修改了代码,就需要重新编译,在引用wcf的客户端,也需要更新wcf的服务引用,否则新的wcf不会被使用,你使用的还是旧的wcf。
silverlight修改了代码,也要重新编译一遍,否则,web项目还是旧的Silverlight类库,所以还是出不来效果。
3、样例代码
http://silverlightwcf.codeplex.com/
数据库SQL
go
USE [slwcf]
GO
/****** 对象: Table [dbo].[Customer] 脚本日期: 01/20/2010 13:14:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[CustomerId] [int] NULL,
[CustomerCode] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[CustomerName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
go
insert into Customer(CustomerId,CustomerCode,CustomerName)
values(1,'sssss','ssssss')
insert into Customer(CustomerId,CustomerCode,CustomerName)
values(2,'ddddd','ddddd')
insert into Customer(CustomerId,CustomerCode,CustomerName)
values(3,'eeeee','eeeeee')
insert into Customer(CustomerId,CustomerCode,CustomerName)
values(4,'ffffff','ffffff')
insert into Customer(CustomerId,CustomerCode,CustomerName)
values(5,'aaaaa','aaaaa')
go
功能就是根据条件查找单个数据,grid显示全部数据,添加数据,wcf的数据访问层使用了NHibernate2.1.2。
4、应用架构图
这次的应用有一部分的客户端为了增加交互性,提高体验,使用了Silverlight3,数据库交互部分使用的是WCF,有一部分后台管理还是用ASP.NET页面来做,数据库交互就直接使用ADO.NET,下面是我的一张程序架构图,希望大家可以指出问题。
Technorati 标签: Silverlight,wcf,数据库交互,开发环境配置,跨域访问
WCF目前知道的不需要配置证书的情况;
1.Security Mode为None,也就是不启用安全,这里不需要证书。
2.NetTcpBinding 在使用Windows安全验证的时候,不需要证书,安全由Windows Domain提供。
3.如果不想使用证书,可以在basicHttpBinding下使用TransportCredentialOnly安全模式,这里客户端凭据信息都是明文传递的。
代码可以在http://silverlightwcf.codeplex.com/下载。
发表评论
-
NET 应用架构指导 V2 学习笔记(十六) 服务层设计指导
2010-06-04 00:13 548如果你的应用是通 ... -
NET 应用架构指导 V2 学习笔记(十七) 组件设计指导
2010-06-05 00:48 672组件提供了一种将 ... -
NET 应用架构指导 V2 学习笔记(十八) 表现层组件设计指导
2010-06-05 21:09 529本章讲述的是你在设计用户界面组件和表现层逻辑组件的时候应该 ... -
NET 应用架构指导 V2 学习笔记(十九) 表现层组件设计指导
2010-06-06 06:15 5955 决定数据绑定的 ... -
NET 应用架构指导 V2 学习笔记(二十) 业务组件设计指导
2010-06-07 06:58 616前言 业务组件 ... -
微软企业库5.0学习笔记(四十二)异常处理模块
2010-06-14 00:04 839企业库的异常处理 ... -
关于程序员在30岁、35岁之后怎么办的新思考
2010-06-14 10:40 625首先给大家问个好 ... -
NET 应用架构指导 V2 学习笔记(二十四) 跨层关注问题
2010-06-17 20:00 595概况 大部分的 ... -
微软企业库5.0学习笔记(四十三)数据验证模块
2010-06-19 08:07 999概况 任何接受用户或者是其他系统输入的应用,一定要确保 ... -
关于项目进度慢的思考----如何提高整体开发效率
2010-06-21 23:42 806我们都是软件行业 ... -
微软企业库5.0学习笔记(四十四)实战数据验证模块
2010-06-23 19:22 8421 在业务对象上添加验证 添加对程序集【Microso ... -
微软企业库5.0学习笔记(四十五)实战数据验证模块----高级篇
2010-06-24 19:41 9711、添加自定义的提示信息 验证失败的提示信息可以自定义 ... -
面向对象类设计的五大原则(一)单一职责原则Single Responsibility Principle
2010-06-29 15:45 778引言 面向对象类设计,或者说是面向对象设计,有五大原则 ... -
《深入浅出设计模式-中文版》读书笔记 开篇乱弹(一)
2010-07-01 06:42 652oreilly的《Head.First ... -
《深入浅出设计模式-中文版》读书笔记-继承与组合(三)
2010-07-03 16:53 606经过上一次的改造 ... -
《深入浅出设计模式-中文版》读书笔记-观察者模式(四)
2010-07-06 06:34 635今天要接触的是观 ... -
利用attribute实现简单的ORM
2010-07-09 15:27 683我不知道NH的ORM具 ... -
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
2010-07-14 13:02 807题外话 最近已经在努力学习了,学习基本功,学习设计模式 ... -
《深入浅出设计模式-中文版》读书笔记-工厂模式(五)
2010-07-16 12:46 699今天给大家带来的是:工厂模式。 我们在代码中创建一个对 ... -
Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(一)
2010-07-18 21:47 671题外话 又是一本Head.First系列的书,这个系列 ...
相关推荐
《Silverlight结合WCF进行数据库操作的实现与学习》 在现代Web应用开发中,Silverlight作为一种强大的富客户端技术,可以提供丰富的用户交互体验。同时,为了实现远程数据交互,WCF(Windows Communication ...
而WCF RIA Services(Windows Communication Foundation Rich Internet Application Services)是微软为Silverlight应用程序提供的一种服务框架,主要用于简化客户端和服务器之间的数据交互,特别是在数据库操作中的...
总结起来,"Silverlight通过WCF服务连接Oracle数据库"涉及的主要知识点有:Silverlight应用开发、WCF服务设计与实现、Oracle数据库连接与操作、用户输入验证以及安全性考量。这个过程展示了如何在分布式环境中整合...
这就是一个简单的Silverlight通过WCF服务访问SQL数据库进行登录验证的实现过程。这个过程中,你将学习到如何在SQL Server中创建表,如何编写WCF服务接口和实现,以及如何在Silverlight客户端中调用这些服务。对于...
Silverlight通过WCF获取数据库中字段 开发工具为VisualStudio2010 数据库Sqlserver2005 Silverlight版本4.0 浏览器需要安装微软silverlight(银光)插件 自己做的简易项目拿出来交流,有喜欢交流的加我QQ 641255387 ...
通过以上步骤,我们可以构建一个基于Silverlight和WCF的登录系统,它结合了Silverlight的富用户体验和WCF的灵活通信能力,为用户提供了一个高效、安全的登录界面。在实际项目中,这种组合经常被采用,特别是在企业级...
在部署Silverlight+WCF项目时,需要对WCF进行配置检查。首先,需要检查ServiceReferences.ClientConfig文件,确保绑定WCF的方式是否为BasicHttpBinding。如果为customHttpBinding,需要手动进行修改。 在Web.config...
通过以上步骤,我们可以成功地创建一个WCF服务,使得Silverlight应用程序能安全、有效地与数据库进行交互。在实际开发中,还需要考虑性能优化、并发控制、事务管理等因素,以确保系统的稳定性和可扩展性。在...
在浏览器中测试应用,确保Silverlight客户端能够成功连接到WCF服务,并与Oracle数据库进行交互。 综上所述,"silverlight访问oracle数据库实例"涉及的关键技术包括Silverlight的UI设计和事件处理,WCF服务的创建与...
4.Silverlight通过WCF与数据库通信 5.Silverlight利用LINQ操作数据库 6.Silverlight控件布局 7.Silverlight数据绑定技术 8.Silverlight事件处理 9.Silverlight控件样式和控件模板 10.应用Blend工具进行开发
这个项目展示了如何在Silverlight应用程序中利用WCF服务进行数据通信,并通过WF实现业务流程管理,再结合Linq进行数据操作。 **WCF(Windows Communication Foundation)** WCF是.NET框架的一个重要组成部分,用于...
新建项目时可以选择创建一个Silverlight应用程序,并勾选添加ASP.NET 2.0网站作为宿主,以便后续进行数据库操作。创建完成后,Silverlight应用程序会被编译成一个名为`SilverLightDemo.xap`的文件,这个文件包含了...
在这个主题中,我们将探讨使用Silverlight 5结合C# 2010进行数据库操作的三种主要方法:WCF(Windows Communication Foundation)、WebService以及LINQ(Language Integrated Query)。 1. **Windows Communication...
在Silverlight应用中,由于不能直接与数据库进行通信,因此通常需要通过某种中间层(如ASP.NET Web服务或WCF服务)来获取和提交数据。但在这个特定情况下,我们将探讨一种不依赖这些服务的方法。 要实现Silverlight...
在这个场景中,“Silverlight调用WCF服务登录界面”意味着我们将使用Silverlight来设计一个用户登录界面,并通过WCF服务与后端数据库进行通信以验证用户凭据。以下是对这个主题的详细解释。 首先,让我们理解...
在项目的Web部分,需要添加一个WCF服务,该服务将作为Silverlight应用与SQL Server数据库之间的桥梁。WCF服务将调用前面定义的存储过程,处理用户名和密码的验证逻辑。 ##### 4. 用户信息类定义 定义一个`Users`类...
3. **数据库操作**:WCF服务端通过LINQ表达式与数据库进行交互。例如,更新操作可能使用`UpdateOnSubmit()`方法,删除操作则使用`DeleteOnSubmit()`,所有这些操作在提交时(通常是通过`SubmitChanges()`方法)都会...
WCF服务作为一个中间层,可以在服务器端处理数据库操作,然后将结果传递给Silverlight客户端。 在“SilverlightApplication2”这个项目中,我们可以预期包含以下关键组件: 1. **Silverlight客户端项目**:这是...
通过以上步骤,我们可以构建一个完整的、基于Silverlight的前端应用,利用MVVM模式提高代码组织,通过WCF实现与后台服务的高效通信,并使用EF简化Oracle数据库的操作。这样的解决方案既保证了用户界面的互动性,又...
在进行Silverlight开发时,由于其安全性限制,直接连接数据库是不可行的。通常的做法是通过Web服务(如WCF)间接访问数据库。然而,这样的设计增加了项目的复杂度,并且降低了代码的可移植性。本文档将介绍一种替代...