首页  ·  知识 ·  
Label
      编辑:  图片来源:网络
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是可以跨域访问的。
CrossDomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
 
ClientAccessPolicy.xml
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource include-subpaths="true" path="/"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>
 
这两个文件需要放在wcf的根目录,好像网上说如果用IIS做wcf的宿主,这两个文件可能需要放在www的根目录interpub里面。
2.2 Silverlight部署
 
2.3 wcf部署
 
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、样例代码
  数据库SQL

数据库SQL
create database slwcf
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,下面是我的一张程序架构图,希望大家可以指出问题。
 
本文作者:virusswb 来源: http://www.cnblogs.com/virusswb/archive/2010/01/20/1652107.html
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的
收藏至微信