惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
Security Latest
Security Latest
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
GbyAI
GbyAI
L
LINUX DO - 最新话题
A
Arctic Wolf
T
Tor Project blog
G
GRAHAM CLULEY
I
InfoQ
博客园_首页
IT之家
IT之家
The Register - Security
The Register - Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
K
Kaspersky official blog
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
U
Unit 42
PCI Perspectives
PCI Perspectives
量子位
P
Palo Alto Networks Blog
S
Securelist
T
Troy Hunt's Blog
博客园 - 【当耐特】
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
博客园 - 聂微东
罗磊的独立博客
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
NISL@THU
NISL@THU
C
Cisco Blogs
T
Threatpost
有赞技术团队
有赞技术团队
Forbes - Security
Forbes - Security
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
T
The Exploit Database - CXSecurity.com
Cloudbric
Cloudbric
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - yo

Silverlight 缺陷 - yo - 博客园 SilverLight Controls WF 4.0 中 Persistence 异常 - yo SilverLight框架初探-View - yo - 博客园 SilverLight框架初探-RiaService SilverLight框架初探-ViewModel 与客户“调情” AG_E_PARSER_BAD_PROPERTY_VALUE 定义属于自己的Routing 数据契约的序列化 WCF客户端配置问题 关闭EXCEL进程 母版页中控件ID获取 - yo - 博客园 Reportviewer - Error: ASP.NET session has expired - yo SQL CLR C# DLL动态调用 Sharepoint List faults - yo 出错页面webpar的t删除 quickpart
SilverLight框架初探
yo · 2010-03-13 · via 博客园 - yo

SilverLight技术的出现也已经有很长一段时间了,但是却感觉还没有比较统一的框架模式(个人的技术水平有限)。

在研究它的架构模式过程中,刚开始是试想采用MVC模式来搭建系统架构,利用SilverLight与WebForm相结合的形式,但是框架做好了之后感觉不太好使,WebForm与SilverLight间的页面展现总是感觉不能跟其相应的页面逻辑代码实现分离;相反,Controller对于View的控制还增加了相应的工作量,所以放弃采用MVC模式。

后来尝试采用MVP模式,虽然能够实现页面的逻辑分离,但是Presenter却感觉显的比较臃肿,需要处理的关系较多,压力较大,所以只能继续寻找合适的框架模式。

终于找到了一种相对合适的框架模式:MVVM,即Model-View-ViewModel。这种模式跟MVP模式相似,只是对它进行了相应改进。View这里跟MVP中的View是一样的,负责页面展现;ViewModel是对应于View的页面模型,包含与View想对应的属性与行为;Model可以分为业务模型与实体模型。通过这种方式,我们可以实现页面与逻辑的分析,只有我们的Viewmodel不变,那么View既可以用WPF,也可以用SilverLight等来展现。如下图:

 

随着.net 4.0的推出及SilverLight技术与WCF的不断完善,也使我们可以更灵活的搭建相应框架。如上图,在Service Layer,我采用了Domain Service来处理Client与Service间的通信,Domain service也是一种WCF通信方式,只不过是对它进行了封装,使我们不用去关心具体的通信问题;Domain Model采用了Ado.net Entity Data来处理数据连接。下面是我做的一个框架模型:

这里分为Client与Server两部分:Client主要是负责页面展现及相应的页面模型;Server则负责业务逻辑处理

1.Client

Mvvm.Client:View,这里是我们要实现的UI展现,可以用SilverLight、WPF等;

Mvvm.Client.ViewModel: ViewModel,包含与View相对应的属性与行为;

2.Server

Mvvm.Server.Data: Entity Model,实体模型,我们可以添加一个Ado.net Entity Data Model来实现与数据库的通信;

Mvvm.Server.DataService: Data Service,数据服务,通过它进行相对应的数据操作;

Mvvm.Server.RiaService: Ria Service, 业务服务,通过它调用DataService的数据服务来操作Entity Model,并且实现与Client端ViewModel的通信;我们可以添加一个Domain Service来实现。同时,还有一个DtoModels文件夹,这里放置的是与View属性相对应的模型。Ria Service通过Data Service来操作Entity model,此时返回的是与数据库相对应的实体模型,所以需要转换为与View相对应的模型,我们将这些类放在DtoModels文件夹下,相互间的转换可以采用AutoMapper或Linq来实现。

Mvvm.Server.Web: web应用程序。

这就是我对于MVVM这种模式的理解,希望有兴趣的朋友一起探讨、学习。

参考资料:

http://forum.cornerstone.se/blogs/cornerstones_utvecklarblogg/archive/2009/11/30/silverlight-4-mvvm-with-commanding-and-wcf-ria-services.aspx