软件架构逻辑
框架从层次结构上分主要分为:表示层、服务层、业务层、数据层
◆表示层
表示层由UI(User Interface)和UI控制逻辑组成。
c/s选用wpf+智能客户端,b/s选用asp.net mvc
WPF的出现解决了三个问题:
(1) 更快速的去开发更丰富的用户体验:使用WPF,可以在更加快速的时间内开发出来更加丰富的界面,满足用户的需求。WPF 借助 XAML 来利用标记而不是编程语言(如 C#)来构造精美逼真的用户界面 (UI), 只要稍微具备一些HTML基础知识,就可以快速地掌握XAML中的大部分内容。
(2) 消除用户界面差异:wpf可以以IE为宿主的。或Silverlight
(3) 软件开发团队的协作问题: 在软件团队中,我们比较熟悉Developer、DBA、Tester、IT Pro、Architect等。Designer可能往往被我们忽视,但实际上,Designer的工作成果才是与客户距离最近的。而且Designer与Developer如何配合工作,是很多团队所头疼的,而WPF正可以解决此问题。
智能客户端的优势
1)充分利用终端设备的优势
2)能够调用wcf
3)支持在线和离线两种状态
4)能够如同Web应用程序一般简单方便的部署
asp.net mvc内置AJAX支持。
本身含的MVC(模型-视图-控制器)和本系统MVVM(Model-View-ViewModel)就是双胞胎,在demo里已经有很好的集成
*注:因xaml和html是标记语言,此层大部分可用代码生成器生成。
◆服务层
采用微软的WCF,Windows Communication Foundation (WCF)是Microsoft为构建面向服务的应用提供的分布式通信编程框架平台,是.NET Framework 3.5的重要组成部分。使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。WCF从一开始就是工程化的,能够简化应用程序的开发与部署,降低开发成本。用于构建面向服务的应用程序,不管这些程序是独立的桌面应用程序,还是Web应用程序和服务,还是高端的企业应用程序。
◆逻辑、业务层
业务层封装了实际业务逻辑,包含数据验证,事物处理,权限处理等业务相关操作,是整个应用系统的核心。因此设计一个能够真实反映实际需要的业务层是非常必要的,我们将实际业务具体分为业务数据与业务操作两部分。
l 业务数据
Domain Model则是根据实际业务按照现实方式用OO思想建模,这样很适合业务复杂的系统。通常采用自定义数据实体(Custom Data Entity)方式表达。自定义数据实体,有着良好的性能,编译时的类型检查,数据表现方式非常直观符合实际业务的操作方式等优点,但需要自己定义维护类,在分布式环境下需要自己编写序列化方法。
此阶段负责数据交换(传输)的业务实体被称之为DTO(Data Transfer Object)。
DTO要能够支持:数据绑定、数据验证、历史记录、级联触发、合并集合、序列化与反序列化,要实现一个大的递归,从其中的任何一个对象开始,能够找出整个传递的所有数据。
(1)、数据的绑定支持。要实现IEditableObject接口,对于状态的变化要实现INotifyPropertyChanged接口,这样才能够实现数据的触发,这样就要实现一个对象能够找到其所有的集合,一个集合要能够其所有的对象,这样一样,就必须实现从对象、集合、对象的递归,再深入一点,就实现了数据的级联触发,实现了双向数据触发、绑定。数据源的每个属性变更,要能够在界面上反映出来,绑定界面的改变,能够记录到后台的数据源,并且要能够支持回滚。对于容纳这些数据的ObservableCollection集合也支持绑定处理。
(2)、数据验证。实现IDataErrorInfo接口
(3) 对于历史记录。当实现IEditableObject这个接口,则必然实现了历史记录。能够找到集合的所有更改的记录,包括删除的记录。对于单个对象而言是能够得到历史记录和当前数据,对于集合而言,则能够找出差异集,同时,集合也要具备集合回滚的功能。
(4) 级联触发,则是在实现数据绑定的基础上的,对于常见的主从结构,当从对象的一个属性改变了,要能够自动通知其所在的集合、集合再通知所在的对象数据改变了,如果是多层结构,则能够自动的从最底层开始一路通知到顶层。
(5)合并集合、集合的处理。集合的处理与数据绑定是直接相当的。数据源找出差异集之后,要对差异集进行处理,处理完之后,要对原始集合进行更进一步的处理,要把两个集合进行合并处理,主要是为了同步引用。
(6)同时,另外要实现的就是Data与SDO之间的转换以及其他格式的数据与SDO、Data数据之间的数据转换,比如Binary/Xml/Text/Key/文件/等,最基本的是SDO与Data之间的转换,这些转换根据需要,有时候是单向的,有时候是双向的,根据业务需求而定。
(7)序列化与反序列化,主要是涉及到Binary和XML序列化。
l 业务操作
业务操作负责对业务数据进行各种业务相关的处理,例如验证,流向,整合,事物,权限等,但它不负责有关对数据源的操作。
采用整合业务数据与业务方式来操作,将业务数据与相关的业务操作封装在一起称为业务实体,业务实体作为统一的业务层为表示层提供服务,同时也负责作为DTO在各个层次间传输,这样完整的Domain Model设计方式,每个业务实体都可以做为一个单独组件形式存在,对于组件化复用有着莫大的好处。
◆数据层
数据层的宗旨就是为数据源提供一个可供外界访问的接口,我们应该选用一种能够提供数据源无关的抽象数据访问接口并通过在其下挂接各种不同的DataProviador来访问数据源的数据层组件,这样做便于移植到不同的数据源上。
从纷繁芜杂的关系数据模型中抽象出概念模型。这样开发人员可以只需着眼概念模型,而不必要去关心纷繁芜杂的关系数据模型,从而提高开发效率。那么如何能够做到这一点?
答案就是:Linq 和 ADO.NET Entity Framework
l LINQ几乎支持你所期望的所有数据源:数据对象、SQL Server数据库、XML和数据集,当然也支持ADO.NET Entity(LINQ to Entities),LINQ有如下优势:
1、 无需复杂学习过程即可上手
下面我给出一个简单的C#示例。
String[] QueryString =
{ "One", "Two", "Three", "Four", "Five" };
要想查找其中长度大于3的字符串,你可以使用以下查询语句:
var ThisQuery =
from StringValue
in QueryString
where StringValue.Length > 3
select StringValue;
2、 编写更少代码即可创建完整应用。
3、 更快开发错误更少的应用程序。
4、 无需求助奇怪的编程技巧就可合并数据源。
5、 让新开发者开发效率更高。
l ADO.NET Entity Framework包括
1. 实体数据模型(Entity Data Model),开发人员通过EDM抽象出非常合适的模型。
2. 非常强大的client-view/mappping引擎,用于映射数据关系
3. Entity SQL语言和LINQ查询对EDM schemas的全面支持
4. ojbect services layer供您选择以何种方式去处理查询结果。比如(行,列或作为对象)。
5. 提供一个开放的模型使ADO.NET Entity Framework可以处理其他的数据存储。
6. Entity Framework 实现了乐观的并发模式(Optimistic Concurrency Model)
7. 事务处理
三、具体功能简述
3.1工作流解决方案
工作流引擎:该部分为工作流模型的核心部分,用于生成、管理、角度和监控工作流的各个活动执行情况,并实现相应的人机交互。由于采用XPDL等语言定义的工作流文件记载了相应的业务逻辑,隐藏工作流引擎通过解析该文件来了解业务流转的逻辑。然后依据某种运行模式按照解析出来的业务逻辑进行驱动,最终实现业务流程的流转。
工作流定义接口:通过该接口可以进行工作流程的分析、建模、描述和归档等工作,并将设计完毕的业务流程生成工作流引擎能够识别的语言。
工作流客户接口:处理工作流运行过程中需要人为参与的操作。
工作流调用应用程序接口:工作流引擎调用外部应用程序的规范。
工作流引擎协作接口:不同工作流引擎之间的协作。
工作流管理监控接口:监控和管理工作流所有实例状态。
3.2多语言&用户自定义标签方案
数据库结构
3.3消息发布/订阅系统方案
使用WCF创建发布/订阅系统有多种不同的方式,
(1)使用回调契约的发布/订阅系统
(2)使用MSMQ实际通用组播的发布/订阅系统
(3)使用流的发布/订阅系统
方法1,2适合通知数据量较大并且发布频率比较低的应用场景。
当通知的数据量较小而且发布频率又较高时,应该使用方法3。
3.4报表&打印方案
四、系统平台&支撑组件
l Wpf (UI)
l Asp.net mvc(UI)
l ClickOnce(智能客户端。可自动升级,离线操作)
l Linq(借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据,普通开发人员不必学习MsSql, mysql, orcale, access等数据库语法,节省开发时间)
l ADO.NET Entity(让应用程序可以用完全对象化的方法连接与访问数据库, 修改Provider就可迁移到不同的数据库)
l IIS6或以上
l Windows server 2003或以上
l WCF(服务层)
l Unity(是微软模式与实践团队开发的一个轻量级、可扩展的依赖注入&反转控制容器)
l SQL Server Compact Edition(用作智能客户端离线操作)
l WF(Microsoft Windows Workflow Foundation是一个可扩展框架,用于在 Windows 平台上开发工作流解决方案)
五、系统网络结构
添加专属销售顾问
扫码获取一对一服务