Crab: China SaaS Sample Application
SaaS Sample Application 目录 1
目 录
案例介绍
面向读者
范围
:安装和部署
系统需求
安装向导
验证部署
解决方案描述
逻辑视图
逻辑视图
实现视图
:应用场景
如何实现
如何注册租户
如何自定义界面
如何添加删除自定义字段
如何自定义
如何管理用户权限
:架构要点
!"#" 所需要面对的三头怪
可配置性
安全性
资源利用的平衡
$%#&# # '
效率
()
数据模型自定义
数据库设计
向实体添加扩展字段
数据模型的配置文件
视图
时序图
*&# &&)
实现细节
数据库设计
工作流定义服务类
编辑工作流定义
展现工作流
创建委托单 +
工作流规则 +
,-# 认证
.&&/0&
实现
关于 !(!1!"%(#"2!#" )3
数据库设计
服务
与 !,$45+-6&# 的结合
数据模型
7 ")
隔离
低偶合
SaaS Sample Application 目录 2
多租户效率
表现层
流程
可伸缩
租户
81# )&8 ) 3
#6& +
Chapter 1: 案例介绍
,9&,%#" 目前已经是一个重要的市场热点,在中国目前已经有越来越多的人开始
了解,并关注 ,9&,%#"。像 :#;0 对于世界 ,, 领域的意义一样,6 是中国
,, 软件的一个里程碑,我们希望通过 6 这个案例程序把微软 ,, 架构和开发的有关知识阐
述出来,提供给广大的架构师和开发人员进行学习。
就像 :#;0 一样,6 同样利用微软新的技术来构建 ,, 应用,利用多种技术去实现
,,体系结构中的难点和要点。但与 6 与 :#;0 又有所区别,:#;0 仅仅是一个案例
SaaS Sample Application 目录 3
程序,而 6 在第一期的产品中也将作为案例程序进行使用,但在这个发布后 6 将作为一个
真正的 ,, 软件进行运营。6 不仅可以体现卓越的技术价值,并且在商业应用上也有比较高
的参考价值
简而言之,6是一个物流报关领域 ,, 应用软件,主要实现了从工厂或货运代理公司到
中国海关报申报系统之间业务流程,其中主要实现了订单,申报,定箱,配车等比较复杂的功能。
关于这部分有关商业逻辑的详细信息,我们会在 Chapter 4 应用场景中重点想大家介绍。
面向读者
本案例 6 所面向读者是目前希望把原有单 应用系统向 类型系统进行转型的 7,< 的软
件架构师,同时 6 也对于目前关注 5 #&内部希望把定制软件与 ,, 应用进行结合的架构师有一定的
借鉴作用。由于本案例中的大部分服务基于 8 进行封装,对于希望了解45+和 ,=! 架构的程序员也有比
较好的学习作用。
注意:本案例的重点并不是介绍
SaaS
的商业模式,其重点是如何利用最近新的微软技术搭
建一个
Mul-Tenant
的
SaaS
应用,并介绍如何去解决一些在
SaaS
应用开发中的常见问题。
范围
这个 +6 的版本的应用并没有体现特别多的商业逻辑>主要是基于微软 ,,架构白皮书
Multi-Tenant Data Architecture
实现基于元数据的 架构 6 中只实现了 ,, 应用
成熟度模型的第三个层次( ?'6> 5@"# ),并且利用 4-<$#& 的
模式实现了 的元数据架构。在 +的版本中我们并没实现成 ,, 应用成熟度模型的
第四个层次(,"6> ?'6> 5@"# ),但我们会考虑在下面的 6 版本中
加入第四个成熟度模型的实现。
这个案例应用是一个 6应用与一个智能客户端应用的结合。.7 自定义,数据自定义等基
于元数据实现的特征均在 6 应用中实现,智能客户端主要实现的是用户自定义工作流的工作。
该案例应用不以实现复杂的业务逻辑为目的,其主要目的利用微软的 最新技术(例如:
8,8,,A:++,!(!)等实现基于微软平台的 的应用架构系统。在设计中,
我们把很多模块服务设计的更加松耦合,使之成为一个通用的面向 ,=! 的 ,, 应用,同时我们
会考虑在下面的 6 版本中加入新的 ,=! 概念例如 Enterprise Service Bus 等。
这个案例程序并不是一个完美的案例,其中还有很多 ,, 架构中需要实现的模块并没有体
现在该应用中,由于该应用是一个开放源代码的应用,我们欢迎有更多的朋友可以逐渐完善该应
用,并为 6 增加一些没有实现的模块。
在 6 中我们不仅用到了 8>8 等微软最新的开发技术来搭建应用,我们还采用 !(=45
5 28- 的设计思想来构建我们的 5 2 实体。有关 ADO.NET Entity Framework
的相关资料大家可以参考 The ADO.NET Entity Framework Overview 来获得。
SaaS Sample Application 目录 4
Chapter 2:安装和部署
系统需求
6的系统 要 求 是 # )&B$$C&&# ,$ 以 上 版 本 1 包 括 # )&B$$C&&#
,$3,458-+ 和458-+。
在编译和运行 6 之前,请确保以下系统或组件已被安装:
# )&B$$C&&# ,$或以上版本
77,+或以上版本
,A:,%++5D&&5)# >,A:,%++1推荐3
#"&9<#&,)#++ -5)# 1 推 荐 3 , 或 #"&9<#&,)#++ $C&&#
5)#
458-+
<#&,)#++D &# C458-+1# )&8 ) 3
<#&,)#++D &# C458-+183>4%-6++$
5 #&:#62C458-+
活动目录应用模式1!(!3,$
!&45!ED%+
安装向导
3 打开 ,目录
3 运行 6-部署 66 应用,68 服务,数据库和 !(! 实例3
3 运行$%#&# 61创建 !(! 实例和初始化信息3
要完成整个安装过程,请采用默认方式和默认值,具体请参照
Readme (
在
Setup
目录中
)
。