文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>全程剖析Silverlight项目

全程剖析Silverlight项目

时间:2010-09-13  来源:knate

起这个名字有点扯虎皮拉大旗的感觉,曾看到有本《Dissection a C# Application Inside ShareDevelop》由清华大学出版社出版的,中译名就叫《C#软件项目开发全程剖析---全面透视SharpDevelop软件的开发内幕》,套用一下,至于能不能达到那本书的高度,说实话,我是没有底的。这几年程序写下来,并无多大建树,却感觉自己的文笔是越来越差了,常常词不达意。明明一件很容易说明的问题,在我嘴里有时就会嘣出让人费解的意思出来,一定要下决心改正过来,或许写写这点类似日记的东西可能会有所帮助和改善的吧。

这个"剖析"的对象是我们这段时间为California州的一家保险公司做的一个报价Silverlight项目。记项目的开发团队是Onsite团队中一个Senior高级工程师+一个架构师+一个DBA+业务专家。主要负责WCF端+Web服务端+数据库持久化。我们Offshore团队由一个高级工程师领队+三个高级工程师共4个人组成(说实话我们Offshore Team对于Onsite Team的这个试水项目的投入还是蛮大蛮热情的)。

下面这段文字,是我好早以前就记录下的,当初没有全盘去看,是零星的记忆却想高屋建瓴的总括整个这个Silverlight项目,冲着这股劲,先贴在这里吧。
1、如果子ViewModel里面某个字段发生变化,需要引起父ViewModel的某个字段引起变化。方法就是给子ViewModel加一个PropertyChanged事件。
在Employee Plan Assignment这个界面的ViewModel中,就有一个这样子的需要,改变子ViewModel里的PlanName,就要相应的改变该Plan的TotalPremium值。同时加总的TotalAmout也应该重新计算一下。调试鼓弄了半天,最后使用的就是在实例化子ViewModel后,注册一个PropertyChanged事件来监听是否有改变。如有改变e.PropertyName就重新计算。
2、相反如果在父ViewModel的变化要引起子的变化的话,只需在子里面写一个公用方法,在父里面调用。这两条所谓的父子是招父是一个容器,包含多个子这样一种逻辑
3、关于Converter的使用,本项目中所有的Converter都放在WB.Nat2.Web.Quoting.Common专案下的Converters文件夹下面。然后在WB.Nat2.Web.Quoting的Themes下面新建一个Convert.xaml文件。作为一个静态资源,然后在要应用的直接使用{StaticResouce Converter.xaml中定义的Key值}就OK了。比方说那个显示Logo的的需求是如果有图标就显示,否则显示文本。就是定义两个对象,一个Image和一个TextBlock,让TextBlock的Visibility绑定Image这个UI元素本身,然后调用visibilityFromImageConverter,并指定ConverterParameter=true就行了。
4.关于Filter,同样使用的是定义在一个叫Rules.xaml的静态资源文件里,比如说Raf只能输入数字,不能输字母的过滤,采用的就是正则表达式[0-9.]。在调用的时候,直接使用System.Windows.Interactivity.dll中定义的Interaction.Behaviors下的KeyDownFilterBehavior,并指定里面的Filter属性等于静态资源里定义的键值就行了。
5、本项目的一些结构理解
Silverlight端--->Web端--->WCF服务端
Silverlight端,就是我们Offshore Team做的,Project分别叫做WB.Nat2.Web.Quoting./.Presentation/.Common/.Controls,
WEB端,理论上应该也由我们Offshore来弄,改动的地方一般是在Controllers/Repositories/Extensions/ServiceReferences这4个文件夹中修改。前两者的藕和度是相当高的,会由Controllers调用Repositories中的方法,然后经由ServiceReference调用WCF中的方法了。Extensions里面的方法就是一些对象的扩展方法,比如说Dto转成ViewModel及互转。至于ServiceReferences里的文件,由于US Team做好了Bat文件,我们基本上在改了Dto之后,签出,然后在Windows Explorer中运行一下对应的Bat文件就可以了。
WCF端,US Team掌控着,但有时offshore team也会进去修改的。对应的专案分别是
WB.Nat2.Common和WB.Nat2.Data,还有一个WB.Nat2.Services及Reliability及其它几个,由于从没有进去看过,略过。在Common中定义Dto,这个Dto是我们保存进数据库前的一个转换,跟我们在Web的Repositories中的定义的Dto,内容一致(废话,如果内容不一致,如何一一对应映射),但应该明白的是Web中的那个Dto是可以接至WB.Nat2.Web.Quoting.Common中的Silverlight用的。然后很了然的可以看出在Data中做一些数据库的访问。
6、关系图:
G&C
C&R
C&P
O&C
O&P
EAP
Deliverly
TKS
G&C需要生成O&C的数据,并且需要保存至AgencyWow和Pick(就是Silverlight本身的数据库),生成O&C的数据是异步产生的。
G&C页面跳转有两种情况,一种是选择Virgin时,直接跳至O&C,如果不选,而另一种情况就是跳至C&R.
C&R生成C&P的数据,并保存Plan至Cache里面。
后面的页面依上面排列次序跳转。

 

 

 

相关阅读 更多 +
排行榜 更多 +
体素僵尸射击

体素僵尸射击

飞行射击 下载
侵预防部队

侵预防部队

飞行射击 下载
脑洞足够大

脑洞足够大

休闲益智 下载