原系统架构图
当网站开始营运后,可能陆续引发当初规划时始料未及的需求,每当新需求产生后,程序开发人员便开始重新评估可行性、系统分析设计、编写程序或修改、测试与部署等一连串的繁重的系统开发工作,现在 Windows 2003 所具有的 Application Server 服务平台,在原本服务中新增加许多颇具弹性的功能及作法,使应用程序系统更具安全性、延展性和可管理性。
在上述范例中,我们可能会因使用者的不同,当完成网络下单后,系统能对应不同的作业流程,例如 VIP 级的客户或业务人员代理客户下单时,系统能直接完成确认订单,省略人工审核作业,而其他使用者(一般客户)仍遵循原作业流程。将原系统架构重新调整如下图:
新系统架构
应用 IIS 6.0 应用程序区域及 COM 分区(Partitions) 特性,将接单订单资料分别暂存不同队列中,自动化审阅订单的流程,可以使用 MSMQ 中的触发程序完成订单审核,并调用原有的 COM 组件执行资料处理,整个系统架构看似两个截然不同的应用程序,实际上仅进行少许程序开发,其余的系统改造部份均由 Application Server 平台服务来完成。透过范例程序逐步指引完成,应可以更加明了如何运用 Application Server 所带来的益处。
系统需求
操作系统:Windows 2003
Services:请确认以下服务均以安装并启动
IIS 6.0 COM 1.5 MSMQ 3.0方法是:添加/删除 Windows 组件 Application Server 按 [详细信息] 选中 [消息队列服务] 按 [确定] 按 [下一步] 按 [完成] SMTP
方法是:添加/删除 Windows 组件 Application Server 按 [详细信息] 选择[Internet 信息服务(IIS)] 按[详细信息] 选中 [SMTP Service] 按 [确定] 按 [下一步] 按 [完成] SQL Server 2000
Setup 原系统应用程序
源程序代码解压缩后(以下说明出现 %Root% 表示此路径),计有以下三个文件夹:
DataBase Doc SampleCode:包含 iFDemoApplication、iFDemoService 两个文件夹。请按下列步骤安装:
1、安装 Trade 数据库
开启 [SQL Server 企业管理器]。 Microsoft SQL Server SQL Server 组 (local)(Windows NT) 数据库 按右键 所有任务 还原数据库。 设定 [还原成数据库] 输入:Trade。 选择 [从设备] 还原 按 [选择设备] 按 [添加]。 按 [] 选择 %Root%DataBase 文件夹。 选定 [文件名称] 输入:Trade.dmp 。 连续按 3 次 [确定] 等候完成再按 [确定]。 关闭 [SQL Server 企业管理器] 。 修改表 config 中的记录为有效的 SMTP 服务器地址。 修改表 Users 中 Email 的字段,将其设定为有效的 Email。2、部署 Server 端组件及设定
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)用资源管理器打开 %Root%SourceCodeiFDemoService 文件夹 执行 [Visual Studio .NET 2003 vsvars32] 进入控制台命令行 在控制台命令行中输入 buildall,按回车生成应用程序 生成完毕后关闭控制台命令行窗口3、COM 应用程序授权
打开 [组件服务]。 展开 组件服务 计算机 我的电脑 COM+ 应用程序 iFDemoOrderEntry 角色 OrderEntryRole 用户 按 [右键] [新建] [用户] 输入:Network 按 [确定]4. 安装效能计数器及环境变数
本文示例代码或素材下载
用资源管理器打开 %Root%SourceCodeiFDemoServiceSetupConfigbin文件夹。 执行 SetupConfig.exe。5. 安装 Web 应用程序
打开 [Internet 服务管理器]。 Internet 信息服务 (本地计算机) 默认 Web 站点 按 [右键] [新建] [虚拟目录]。 按 [下一步] 在 [别名] 中输入:iFDemoWeb。 按 [下一步] 按 [浏览] 选择目录 选泽 %Root%iFDemoApplicationiFDemoApplicationiFDemoWeb。 按 [确定]。 按 [下一步] 按 [下一步] 按 [完成]。 用资源管理器打开 %Root%SourceCodeiFDemoApplicationiFDemoWeb 文件夹 用记事本打开 Web.config。 修改 ConnDBString 的 Value 设定为 SQL Server 连接字符串。 打开浏览器,输入网址: http://localhost/iFDemoWeb 检查网页是否正常启用,若否检查本项步骤是否正确。6. 安装 Windows 管理程序
打开 %Root%iFDemoApplicationiFDemoAdminbin 文件夹。 用记事本打开 iFDemoAdmin.exe.config。 修改 ConnDBString 的 Value 设定为 SQL Server 连接字符串。7. 测试结果
打开浏览器,输入网址: http://localhost/iFDemoWeb。 测试登入:i. VIP客户使用者名称:user1,密码:9999
ii. 一般客户使用者名称:user2,密码:9999
iii. 内部业务员名称: sales1,密码:9999 执行下单作业
i. 按产品编号右侧 [选择] 打开 [选择产品窗口] 选择产品分类 选择产品一览表中按 [订购]。
ii. 回到主画面中 按 [加入订购明细]。
iii. 可依上述步骤加入多项明细。
iv. 按下 [确认订单] 即完成下单作业。 执行审核作业
i. 打开 %Root%iFDemoApplicationiFDemoAdminbin 文件夹,执行 iFDemoAdmin.exe。
ii. [客户订单处理] 窗口中,按下 [读取资料]。
iii. 按 [确认订单] 即完成审核,记录被添加到 SQL Server,同时系统发出 Email。
iv. 按 [取消订单] 即取消该笔记录。
Setup 新架构应用程序
1、新增本地用户,目的是 IIS 要添加 Pooling 以便指定此用户帐号。 打开控制面板中的管理工具 计算机管理。 管理工具 本地用户和组 用户 按 [右键] 新用户。 在用户名称中输入:NetUser1,输入密码并确认密码 取消 [用户下次登入时须更改密码] 选中 [密码永 不过期] 按 [创建] 按 [关闭]。 选择 NetUser1 按 [右键] [属性] 选择 [隶属于] 标签。 按 [添加] 输入:IIS_WPG 按 [确定] 。 按 [添加] 输入:Performance Log Users 按 [确定] 。 按 [添加] 输入:Performance Monitor User 按 [确定] 。 按 [确定]。
2. 在IIS 6.0上建立新的应用程序区域:
Internet 信息服务 (本地计算机) 应用程序区域 按 [右键] [新 建] [应用程序区域] 。 [应用程序区域标识]输入:AppPoolDemo 按 [确定]。 Internet 信息服务 (本地计算机) 应用程序区域 AppPoolDemo 按 [右键] [属性] 。 选择 [身份标识] 标签 。 选中 [设置为],在用户名称栏输入:NetUser1,输入密码 按 [确定]。3. 在新的应用程序集区中以原程序码建立应用程序:
打开 [Internet 服务管理器]。 Internet 信息服务 (本地计算机) 网站 默认 Web 网站 按 [右键] [新 建] [虚拟目录]。 按 [下一步] 在 [别名] 中输入:App1Demo 。 按 [下一步] 按 [浏览] 选择 %Root%iFDemoApplicationiFDemoApplicationiFDemoWeb 。 按 [确定] 按 [下一步] 按 [下一步] 按 [完成] Internet 信息服务 (本地计算机) 网站 默认 Web 网站 App1Demo 按 [右键] [属性] 。 在 [虚拟目录] 标签页下方的 [应用程序区域] 选择 AppPoolDemo4. 修改登入画面的程序代码
本文示例代码或素材下载
启动 Microsoft Visual Studio.NET 打开 项目 选择 %Root% SourceCodeSolution.sln 在 [解决方案] 所列的项目中打开 iFDemoWebLogin.aspx 源代码文件,将#Region " 原架构 "
......
#End Region
中的程序代码选取并将它注释掉,使程序不执行。 在 Login.aspx.vb 源代码文件
#Region " 新架构程序码 "
......
#End Region
中的程序代码选取并取消注释,使程序可执行。 重新生成项目: [生成] [生成 iFDemoWeb]。
5. 生成第二个消息队列,并设定其触发程序 打开 [管理工具] [计算机管理]。 计算机管理(本地) 服务和应用程序 消息队列 触发程序 规则 按 [右键] [新增] [规则] 。 在规则名称输入:TransferOrder [下一步] 。 [条件:] 请选择 信息标签不包含,[筛选器数值/字串:] 请输入 Customer 按 [新增] 按[下一步]。 在[组件ProgID]中请输入:iFDemo.OrderProcess.QueueTrigger,在[方法名称] 中请输入: Transfer。 按 [参数] 打开 [调用参数] 窗口 。 选择参数的下拉菜单中的 [队列路径名称(String 类型)] 按[新增] ,[消息ID(Variant 类型)] 按[新增] 按 [确定] 按[完成]。 计算机管理(本地) 服务和应用程序 消息队列 专用队列 按 [右键] [新增] 专用队列 。 在 队列名称 中输入: iFDemo_ExpressOrder 按 [确定] 。 展开 iFDemo_ExpressOrder 触发程序 按 [右键] [新增] [触发程序] 。 在[触发程序名称]中输入: TriggerTransferOrder 按 [下一步]。 左侧 [规则] 中选取 TransferOrder 按 [附加] 按 [完成]。
6. 建立 COM 分区
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)打开 [组件服务]。 主控台根目录 组件服务 我的电脑 按 [右键] [属性] 选择 [选项] 标签页,选中 [启用分隔] 按 [确定] 。 主控台根目录 组件服务 我的电脑 COM 分区 按 [右键] [新增] [分区] [下一步] 。 按 [建立一个空的分区] 在 [名称] 中输入 COMPart2 [下一步] [完成]。7. 指定 COM 分区用户
主控台根目录 组件服务 我的电脑 COM 分区用户 按 [右键] [新增] [使用者] 。 按 [新增] 输入: NetUser1 [确定] [确定]。 主控台根目录 组件服务 我的电脑 COM 分区 COMPart2 角色 启动器 [用户使用者] 。 按 [新增] 输入: NetUser1 [确定] [确定]。8. 在新的 COM 分区中建立 COM 应用程序
主控台根目录 组件服务 我的电脑 COM 分区 COMPart2 COM 应用程序 按 [右键] [新增] [应用程序] 。 [下一步] [建立空的应用程序] 输入 iFDemoExpressOrder 按4次 [下一步] [完成] 。 选择 iFDemoExpressOrder 组件 按[右键] [新增] 组件 [下一步] 安装新组件 选择%Root% iFDemoServiceOrderEntrybiniFDemo.OrderEntry.dll
[开启] [下一步] [完成] 。 展开 iFDemoExpressOrder 组件 iFDemo.OrderProcess.OrderEntry 按[右键] [属性] 。 选择 [启动标签] 选中 [启动对象建立] 在 [建立函数字符串] 中请输入: .\private$\iFDemo_ExpressOrder。 主控台根目录 组件服务 我的电脑 COM 分区 COMPart2 COM 应用程序 iFDemoExpress 角色 OrderEntryRole 用户 按 [右键] [新增] [用户] 输入: NetUser1 按 [确定]
9. 测试结果
打开浏览器输入网址: http://localhost/iFDemoWeb, 用VIP客户用户名称: user1,密码: 9999,登入成功后网址应为http://localhost/App1Demo/Order/OrderProcess.aspx,接续完成下单作业,系统将直接确认订单并发出 Email。 一般客户用户名称: user2,密码: 9999,登入成功后网址应为http://localhost/iFDemoWeb/Order/OrderProcess.aspx,接续完成下单作业,系统将订单 记录保留在消息队列中,等候执行 %Root%iFDemoApplicationiFDemoAdmin\bin iFDemoAdmin.exe进行订单人工审核确认作业。 用业务用户名称: sales1,密码: 9999,登入成功后网址应为http://localhost/App1Demo/Order/OrderProcess.aspx,接续完成下单作业,系统将直接确认订单并发出 Email。
本文示例代码或素材下载