使用ASP.NET或者JSP开发基于WEB的企业应用,很大一个问题就是如何提高用户体验。虽然随着Ajax技术的出现以及客户端JavaScript技术的发展,WEB的客户端体验越来越接近传统的桌面应用程序,但仍然相差甚远,并且编码烦琐,工作量大。
微软推出的的Silverlight用于为 Web 生成和提供下一代媒体体验和丰富的交互式应用程序 (RIA)。配合微软的实体框架及主域服务,使用MVVM模式进行企业级的WEB应用开发。
本课程通过已经应用在企业中的实际项目讲解这一开发模式。通过本课程,你可以学习到如何使用Silverlight、WCF RIA Service、EF、Prism框架、MVVM进行企业级的WEB应用开发。
二、课程目标
学完本课程后,你可以了解和掌握以下主要技术:
全面掌握Silverlight应用程序的开发方式
全面掌握Silverlight常用控件
熟练使用XAML进行界面设计和布局
创建Silverlight自定义控件
编写自定义的控件样式
掌握控件内容模型
Silverlight应用程序的本地化和国际化
DataGrid的数据绑定和输入
创建Silverlight打印模板
创建实体框架模型
使用LINQ To Entity技术处理数据
为实体框架模型定义元数据
创建WCF RIA服务
为Silverlight客户端程序提供WCF数据服务
使用Prism框架对项目模块化
创建Prism子类及应用
使用MVVM模式构建客户端
……
除了上述主要技术,还有更多技术细节未能一一列出。
本课程中,项目的每个模块除了现场编码实现之外,也会对该模块的数据结构、业务逻辑进行详细的需求分析和讲解。
三、为什么需要这么套课程?
1、企业需要什么?
就我本人在IT培训机构任职的经历来看,目前的IT企业特别需要精通B/S模式软件开发的人才。尤其是在企业应用软件的开发领域。而传统的JSP、ASP.NET在用户体验上有着各种各样的缺陷,这正是Silverlight需要解决的问题。另外在本课程中也对软件的设计模式(MVVM)做了详细的讲解,这都有助于企业在开发大型软件中更加合理的降低软件开发成本,提高软件开发质量。2、我们提供什么?
通过本课程的学习,我们通过已经应用在企业中的实际项目讲解一种新的开发模式。通过本课程,你可以学习到如何使用Silverlight、WCF RIA Service、EF、Prism框架、MVVM进行企业级的WEB应用开发。这些都是微软力推的主流技术,无论是Silverlight还是实体框架(EF)或者MVVM设计模式,都是企业应用开发中不可或缺的实用技术。
四、课程特色(亮点)
所有代码均在课程视频中现场编写。在讲课过程中,老师会结合多年现场教学经验,对课程中的重点难点进行深入浅出的讲解,并加入陷阱教学法、设问教学法等多种教学技巧,通过现场调试、BUG跟踪等方式,力求不仅使学员能掌握视频中的课程内容,更能积累开发经验和调试经验,使学员能够体会实际开发的过程。
本课程中,项目的每个模块除了现场编码实现之外,也会对该模块的数据结构、业务逻辑进行详细的需求分析和讲解。
五、我可以学吗?
本课程针对具有C#.net语言基础知识,但未从事过软件开发,或有少量开发经验,但未接触过Silverlight开发的程序员。本课程特别适合渴望了解软件开发过程,积累软件开发经验,从而真正步入软件开发领域的初学者。
六、学完后能做什么?
可以从事与企业应用软件开发相关的工作,课程中不仅全面介绍了Silverlight技术,还讲解了关于实体框架的大量技术,这都是使用微软框架进行软件开发的实用技术。可以从事Windows 8应用商店软件的开发。Windows 8应用商店软件与传统的Windows软件有很大区别,而Silverlight技术则是开发Windows 8应用商店软件的基本框架。可以从事Windows Phone 8应用的开发。和Windows 8商店应用软件一样,WP8应用也是以Silverlight技术做为开发的基本框架。
七、课程详细大纲
第1讲:第一个Silverlight应用程序
Silverlight的发展历史,应用领域。创建SilverLight项目,了解TextBlock、TextBox、Button控件,了解Silverlight应用程序的工作原理,完成简单的Silverlight应用程序功能。
第2讲:Silverlight的布局方式
了解Silverlight的布局方式,详细讲解Grid、StackPanel和Canvas布局容器的使用,重点掌握Grid的应用 ,包括行列定义、宽度高度的定义方式,如何使用StackPanel实现导航菜单等。
第3讲:让用户界面更漂亮
编写美观实用的登录页面,使用Grid和StackPanel美化登录页面的布局,完成登录页面功能,向用户显示信息框以及如何在Html页面中为Silverlight指定输入焦点。
第4讲:页面导航及参数传递
了解UserControl和Page的区别和适用场合,掌握使用控件进行页面导航和使用编程方式进行页面导航。掌握Uri映射方式及注意事项,掌握如何在页面间传递和接收参数。本章还展示了Silverlight程序出现错误的三种情况,帮助学员积累调试经验
第5讲:Silverlight的样式表
学习如何为多个控件的属性提供相同的样式值,如何定义和引用静态资源。如何修改控件的默认外观。了解什么是可视化状态,如何自定义可视化状态的外观,如何实现简单动画。
第6讲:控件的内容模型
按照Silverlight中控件的分类,重点讲解了实际开发中最常用的文本控件、内容控件和项控件。在文本控件中,讲解了RichTextBox的基本使用方式;在内容控件中,通过修改Button显示内容的示例讲解了Content属性的用法;在项控件中,重点讲解了ComboBox的用法,包括在XAML中添加项、用编程方式向Items集合中添加项以及使用ItemsSource进行绑定项的不同方式。
第7讲:编写自定义控件
学习如何在Silverlight中开发自定义控件。本章讲解了从TextBox派生一个只能输入数字的自定义控件NumericBox,以及从ContentControl控件中派生的GroupBox控件。讲解了如何编写Silverlight控件中特有的依赖属性,如何通过编写样式文件来呈现一个完全自定义的控件。
第8讲:编写Toolbar控件(一)
这一讲和下一讲都是编写ToolBar控件。由于ToolBar控件内容较多,所以分成两部分来讲解。在编写ToolBar控件的过程中,可以学习到如何从项控件(ItemsControl)继承,如何为控件增加可视化状态,如何使用状态管理器在状态之间切换以及为控件添加事件等内容。
第9讲:编写Toolbar控件(二)
第10讲:Silverlight应用程序的全球化和本地化
学习如何在Silverlight应用程序中设计和开发支持多个区域性用户的本地化界面,例如让用户界面支持多种语言。如何在Silverlight应用程序中添加资源文件语言包,除了通过Silverlight核心自动切换语言支持以外,如何在运行时支持用户手动切换用户界面的语言等内容。
第11讲:LINQ基础
学习如何实用LINQ完成快速查询,如何用推断类型接受LINQ查询的结果。介绍如何在代码中使用委托和匿名方法,匿名方法和Lambda表达式之间的关系,如何理解和编写Lambda表达式。扩展方法的概念以及如何编写扩展方法等内容。
第12讲:创建实体框架模型(edmx)
了解什么是实体框架模型,如何创建和应用实体框架模型。使用实体框架模型对数据进行处理。通过一个Windows应用程序讲解如何使用实体框架模型进行数据的增删改查,同时演示了一些常见错误的原因及解决方法。
第13讲:主域服务(Domain service)
学习如何在Silverlight应用程序中创建主域服务,如何使用主域服务和实体模型操作数据,如何在Silverlight应用程序中异步调用主域服务中的方法。本章还详细讲解了主域服务的命名约定。
第14讲:初识MVVM
了解MVVM的基本概念,学习如何使用MVVM模式进行软件开发。通过一个MVVM的案例了解为什么要使用MVVM模式以及ViewModel在软件项目的作用。在这一章,还学习了如何使用Silverlight的绑定机制,如何实现ICommand接口,以便使按纽可以不用通过代码来执行命令。
第15讲:用MVVM模式实现登录功能(一)
这一讲和下一讲详细介绍了IDataErrorInfo和INotifyPropertyChanged接口的作用,以及如何实现它们。通过以实现了这两个接口的类做为视图模型的基类的方式,实现了视图模型和视图之间的绑定。当实体中的属性发生变化时,不需要通过在视图中编码就能实现视图中对应控件外观上的变化。这两章演示了如何自动显示业务逻辑验证结果,如何自动提交用户在视图中更改的数据以及如何使用Label控件为其它输入控件提供辅助效果。最后,在本章的项目中,还可以了解到如何对验证结果进行本地化的显示方式。
第16讲:用MVVM模式实现登录功能(二)
第17讲:数据批注和实体类元数据
介绍了System.ComponentModel.DataAnnotations命名空间中的数据批注特性(Attribute),如何利用这些特性对实体类进行数据定义和验证,如何为实体类添加元数据,以便对自动生成的实体框架模型添加数据定义和验证规则。如何为实体框架模型添加扩展方法。本章还创建了项目通用基类的基本框架。
第18讲:概要设计和通用基类
通过讲解企业进销存项目的概要设计,了解整个项目的功能组成、模块划分。对各个模块的主要功能做了简要说明。在本章中,还将完成项目通用基类的创建和实现。
第19讲:实现项目主框架(一)
实现项目运行的主界面,完成从登录到主界面的切换。对第7讲创建的控件库项目进行扩展,完成主界面中所需要的Accordion控件,导航条和导航面板控件,TabControl控件,使用这些新的控件完成软件的主界面并实现各个状态间的切换。本章还修改了第17讲创建的实体扩展类,添加了对实体集合进行排序的扩展方法。
第20讲:实现项目主框架(二)
第21讲:实现项目主框架(三)
第22讲:实现项目主框架(四)
第23讲:实现项目主框架(五)
第24讲:角色及角色权限管理(一)
实现角色管理模块。主要功能包括对系统角色的增删改查,对角色权限的分配等。通过完成系统管理中的角色管理模块,了解本项目中具体模块的开发方式。在这一章中,首先要建立模块通用接口和基类,定义模块操作和基本状态,实现上述编码后才开始进行模块的编码实现。在完成模块的编码中,将了解如何使用DataGrid呈现数据,如何对数据分页,如何处理用户界面在不同编辑状态之间切换等内容。本项目中的其它基础模块的实现方式和角色管理的实现方式非常接近。
第25讲:角色及角色权限管理(二)
实现界面设计,使用DataGrid完成数据展示,使用DataPager实现数据分页
第26讲:角色及角色权限管理(三)
完善用户界面,实现角色增、删、改功能。
第27讲:角色及角色权限管理(四)
使用实体模型元数据,修改默认的客户验证方式和提示文本,增加自定义验证类。
第28讲:角色及角色权限管理(五)
对增、删、改进行业务逻辑验证,并将服务器端验证信息以实体验证方式显示到客户端。
第29讲:角色及角色权限管理(六)
实现分配权限功能,创建CheckBoxItem控件,创建子窗口视图对应的视图模型。创建角色权限主域服务。
第30讲:角色及角色权限管理(七)
完成视图模型中的业务逻辑,实现了界面中模块的加载及权限显示,完成了角色管理模块中的所有功能。
第31讲:Prism框架和项目模块化(一)
这两章讲解如何把角色管理和项目主框架整合到一起。如何实现Prism框架中提供的接口,如何为角色管理增加模块化信息,如何在项目主框架中注册模块信息,最后,如何在项目主框架中加载角色管理模块。
第32讲:Prism框架和项目模块化(二)
这一章在实现模块化的基础上重新处理各个模块中的权限管理,了解模块和模块之间如何调用,比如角色管理如何去调用用户管理的域服务。如何通过实体模型的元数据为实体加载关联数据(Include特性)。
第33讲:采购订单(一)
采购订单是企业进销存中最复杂的模块之一,通过实现采购订单,可以了解对复杂模块处理的流程,包括界面处理、单据录入、业务逻辑等整个过程。
这一章介绍采购订单的基本设计并完成部分界面设计。
第34讲:采购订单(二)
继续完成采购订单的界面设计,这一章还介绍了如何使用Linq返回某个实体的部分数据。
第35讲:采购订单(三)
开始编写采购订单视图模型,实现数据绑定,实现使用代码向绑定的数据转换器传递参数。这一章完成了采购订单列表的初步显示。
第36讲:采购订单(四)
加载和采购订单相关的其它数据,如供应商、币别、结算方式等。介绍了如何修改从服务器获取的数据集,以便在客户端显示额外的数据。这一章还介绍了如何从采购订单数据中获取不重复的制单用户的方式。
第37讲:采购订单(五)
在显示采购订单数据之前,对界面进行初始化,同时实现了显示采购订单主表中的引用数据。
第38讲:采购订单(六)
完善采购订单列表的显示功能,完成采购订单的服务器端筛选和客户端筛选功能,介绍了这两种筛选的不同处理方式。
第39讲:采购订单(七)
处理采购订单的界面在不同操作下的状态,完成了SetButtonState()重要方法的编写,并对在Silverlight中,对处于容器中的控件数据绑定时产生的问题作了说明并提出了解决办法。
第40讲:采购订单(八)
完成采购订单明细的显示功能。介绍了如何在实体框架元数据中描述主子表关系,如何使用外部引用来处理和采购订单主表没有关联的物品相关数据的显示,如何在代码中动态地处理数据显示的格式。
第41讲:采购订单(九)
对显示采购订单的细节进行处理,在数据加载时以不同颜色显示不同状态下的采购订单。对DataGrid进行扩展,通过重写DataGrid控件对其添加行的双击事件,以进一步完善界面的人性化操作。本章开始进入采购订单的新增功能的实现。
第42讲:采购订单(十)
处理新增采购订单的业务逻辑,包括如何处理新增采购订单明细的界面和后台。重写DataGrid以改变DataGrid的默认的控件行为,了解如何使用DataGridTemplateColumn以自定义DataGrid的列外观和行为。
第43讲:采购订单(十一)
通过重写DataGridTemplateColumn完善模板列的外观及行为。创建通用的物品选择用户控件,供所有需要选择物品的模块调用。在这一章中,讲解了如何定义客户端数据模型以满足不同数据的需求。
第44讲:采购订单(十二)
继续完成物品选择控件。
第45讲:采购订单(十三)
在采购订单中使用物品选择控件,以便在新增或修改订单明细时选择物品。掌握如何通过分部类扩展实体模型的功能,如何通过观察自动生成的代码找到解决问题的方法,对今后解决类似的问题有非常好的借鉴作用。
第46讲:采购订单(十四)
如何实现在物品选择控件之外采用手工输入代码并自动检查正确性,通过线程阻塞在主域服务中模拟同步调用。如何在UI中实现跨线程调用。
第47讲:采购订单(十五)
完成采购订单新增功能。结合数据标注和客户端代码对数据进行验证。
第48讲:采购订单(十六)
完成采购订单修改功能。在增删改查的操作中,修改是最复杂的实现,了解在域服务中如何对主子表结构的数据进行修改。
第49讲:采购订单(十七)
本章是最后一讲,完成了采购订单剩余的主要功能,包括删除和审核。讲解了如何在域服务中处理服务器端数据更新,如何处理域服务约定之外的的方法。讲解如何在Silverlight应用程序中显示帮助文件和文档打印的简单处理方式,最后对整个讲座做了一个回顾,完成了本课程。
九、学员常见问题Q:常见问题一:学习该教程使用什么开发软件和工具?软件有没有随教程提供,没有提供的话,在哪里可以下载?A:本课程使用微软出品的开发工具Visual Studio2012。学员可以去微软的官方网站下载90天的免费试用版本或者从网上搜索其它的可用版本。本课程在VS2013下也可以使用。除此之外,学员还需要额外下载一个Prism4.1,该软件是完全免费的。下载地址:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=28950Q:Q:常见问题二:我学过C#,但是没有从事过实际的软件开发,我能学得懂吗?A:这就是你要学习本课程的最大原因。在学习过程从了解软件开发过程,积累软件开发经验