超牛链AI Logo

超牛链博客: 读书|骑行|笔记分享
user
老王不响
@关于博主
2013-08-26

Silverlight 点点滴滴 5 mins read


p>SL, RIA,即不仅仅是普通的层三架构的web系统。SL前台呈现,调用后端查询数据库传递,更多的东西可在前端,如浏览器实现更多的动作,xap包都下载到本地了,用户会默认安装SilverLight runtime,近似CRL的东西。

一个基于Silverlight的model至少由3个部分构成:

前段,一个SilverLight工程,生成xap包,

通信,一个WCF工程,生成dll

后端,一个class Library,生成dll

为了启动1个这样的model,你需要有一个web host(宿主程序),即asp.net web应用程序,他会生成对应的一个silverlight的defaul.asps文件, 部署在IIS上后,用户点击https://www.chaoniulian.com则打开的这个defaul.asps,故而第一次,用户通过IE浏览器,把你的SilverLight xap下载本地,启动了SL页面。

对于企业应用级别的SL借鉴方案,一般有10几个开发人员在做model,怎么把这些model组织为web site的菜单项,可以实现不同的region区域:固定展示log的region,展示当前用户信息的region,展示导航树的region,展示主工作区间的region。

需要采用插件架构,如Prism简介, 详细的可看这一系列blog:

*****************

  • MVVM:binding everything 一种新的思维,数据和UI交互的新思维。
  • 页面代码分离:asp.net思路。 xaml+xaml.cs文件组成前台用户看到的内容。 Xaml里面写页面元素,如Grid、textBox, cs里面写具体逻辑代码(实际上,如果完全通过上面的MVVM实现逻辑,则这个cs文件里面写的代码少得很)
  •       其项目编译后对应为xap文件(zip压缩文件,方便用户网络下载)
  • 前端,只能引用添加Silverlight项目、WCF引用,必须引用SilverLight类库(当添加非SL的,则Visual Stuido会报错提示)。
  • UI组件采用的是成熟的Telerik,主要用了其GridView、TreeView、Chart、RickTextBox、RadButton等。
  • 后端,普通的class Library项目即可,同以往的.net应用程序没有任何区别。
  •   WCF: 前段和后端通信的桥梁,写一个专门的WCF工程(位于后端),可直接调用后端的Class Library。 前段和后端通信,就靠这个了:前段传递数据给后端, 后端返回数据给前段。
  • 前后台怎么复用代码方法:
  •       通过添加WCF引用,会自动生成Entity的代码,在reference.cs文件里面

    通过链接类、条件编译方式,可以实现前、后端代码级别复用,这种办法,效率非常高。

  • 几个现金陷阱:

陷阱一:泛型传递

泛型是在编译器确定了数据类型,而WCF仅仅是XML封装的接口,如果发布了一个T的接口,那么使用者使用,谁编译WCF接口? 怎么编译WCF? 所以,不行的。

陷阱二:object传递: 基类、子类传递。参见上面说的基本类型,如果一个数据的calss,没有添加标签封装,WCF会报错的。

陷阱三:DataTable传递

典型的ADO.net思想,还停留在windows桌面应用系统领域, JSON、byte[]才是WCFSL的王道。

主要因为,你引用DataTable的System.Data类库,在前段不可见(前段相对后端裁剪了很多,更轻巧)。 如果你实在要这么做,推荐一个开源的SL.DataTalbe给你,需要源码的发邮件给我。

如果数据流大,可通过byte[]方式通信,在后端序列化为byte[],WCF传递给前段,(上篇写过,前段可通过链接类、条件编译复用后端代码:类变量、类方法), 前段可反序列化为实体类。

在多年单机版思路,几年前转换为Client-Server开发思路模式。 最近的2年往Brower-Server开发模式转变,同时也兼顾Windows Phone移动端思路吧。

2013-08-26
老王 加冕为王
老王,工作了19年的软件工程师、连续创业者、Blogger(since 2013),微软.net MVP获得者(2015~2016)、 Unity3D UVP获得者 (2017)。 曾任上市公司研发主管、知名外企Social Media Marketing 。 现专注于Instagram、SEO等海外社交媒体营销技术研究与实践。 四十而立的我,有2个可爱的宝宝,喜好骑行、读书、木工, 尤其喜好历史、科幻书籍。
友情链接
超牛链 57天前 2024年3月6日 15:17

永远的粉丝,永远支持楼主的每一个故事

超牛链 57天前 2024年3月6日 15:17

求楼主放我一马,留个沙发名

超牛链 57天前 2024年3月6日 15:17

老板大大的故事总是那么打动人心,让人感动

最新文章

超牛链AI:Ollama本地LLM LangChain RAG小试--算力为王

算力为王时代: CPU --> GPU

GPU这...
【发刊词】超牛链AI: hello world.

​公元2024年,比2023年的AI风暴,更加寒噤。

《一句顶一万句》 遇见一个能说的上话的人不易

2024年 甲辰龙年春节假期,我看了2本小说,茅盾文学...

2023个人总结: AI、骑行、青椒炒肉丝

后疫情时代,刚褪去口罩。又迎来经济消费降级,我的客户同...

热门文章

C#程序员整理的Unity 3D笔记(六):Git源码管理

对程序员而言,写的代码用源码管理系统管理起来,非常方便...

且行且思:记录一次西安城墙国际马拉松---8公里

百度搜索,输入西安城墙马拉松,有7万2千个结果。 实际...

骑行故事初心--自由的御风而行

2023年,三年疫情过后第一个春天,我开始了骑行: 空...

Unity3D for VR 学习(7): 360°全景照片

    在VR应用中,有一个相对简单的虚拟现实体验,那...

相关【技术杂谈】文章

查看所有相关【技术杂谈】文章
搭建Squid3 密码账号IP代理

上文中,说明了 Squid3 IP Proxy 隐藏原IP,这里就搭建Squid 3密码账号IP代理进行整理,涉及...

不用插件,js脚本显示星号密码

不用插件,js脚本显示星号密码

以前,我是用Chrome插件做这个这的--显示星号密码的。 今天,分享一个不用插件...

执行MySQL报错

今天新采购了柒比贰WordPress主题,安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL...