Microsoft .NET Pet Shop 简介
最初研究 .NET Pet Shop 的目的是用 Microsoft .NET 实现 Sun 主要的 J2EE 蓝图应用程序 Sun Java Pet Store 同样的应用程序功能。 根据用 .NET 实现的 Sun J2EE 最佳实践示例应用程序,各方面的客户可以直接地对 Microsoft 的 .NET 技术与基于 J2EE 的应用程序服务器进行比较,同时了解构建基于Web的应用程序中用到的各种建议的设计模式之间的异同。旨在显示构建企业级 n 层应用程序(可能需要支持多种数据库平台和部署模型)的 .NET 最佳实践。
Java Pet Store 是 什么?
Java Pet Store 是按 Sun 公司维护的 J2EE 蓝图开发的分布式应用程序的一个参考实现。示例应用程序最初的开发目的是帮助开发人员和架构师理解如何使用和利用 J2EE 技术,以及各个 J2EE 平台组件是如何配合的。 Java Pet Store 演示软件包括构建应用程序所需的Enterprise Java Beans (EJB) 体系结构、 Java Server Pages (JSP) 技术、标记库和 servlet 的完整的源代码及文档。 此外, Java Pet Store 蓝图应用程序还通过具体示例说明了一些模型和设计模式。
完整的 Java Pet Store 包括三个示例应用程序:
•
Java Pet Store: J2EE 蓝图主应用程序。
•
Java Pet Store 管理器: Java Pet Store 的管理器模块
•
Blueprints Mailer: 在小一些的包中给出一些 J2EE 蓝图设计指南的一个小应用程序。
Java Pet Store 的最初版本旨在处理以下数据库: Oracle、Sybase 和Cloudscape 。 IBM 已经开发了一个 DB2 版本的应用程序。 该应用程序可以从 Java 2 Platform Enterprise Edition Blueprints 公开获得。 主应用程序 Java Pet Store 是一个电子商务应用程序,可以通过它在线购买宠物。 启动应用程序后,可以浏览和搜索各种类型的宠物,从狗到爬行动物。
使用 Java Pet Store 的典型会话方案如下:
主页 — 这是用户第一次启动应用程序时加载的主页。
类别查看 — 有五大类: 鱼、狗、爬行动物、猫和鸟。 每一类都有几个相关的产品。如果选择鱼作为类别,可以看到天使鱼等等内容。
产品 — 如果现在选择一个产品,应用程序将显示产品的所有类型。通常产品类型是雄或者雌。
产品详情 — 每种产品类型(分别用不同项目表示)有详细的视图显示产品说明、产品图像、价格和库存数量。
购物车 — 用户可以通过它操作购物车(添加、删除和更新行项目)。
结帐 — 结帐页面以只读视图显示购物车。
登录重定向 — 当用户选择结帐页面上的“Continue”时,如果还没有登录,将重定向到登录页面。
登录验证 — 通过站点的身份验证以后,用户被重定向到信用卡和记帐地址表单。
定单确认 — 显示记帐地址和送货地址。
定单提交 — 这是定单处理流程的最后一步。 定单现在将提交到数据库。
Microsoft .NET Pet Shop
.NET Pet Shop 的目标是把注意力仅仅放在 Java Pet Store 上(管理和Mailer 组件没有在 .NET 中实现)。 除了重现 Java Pet Store 应用程序的功能之外,还增加了两项目标:
•
比较 .NET 和 J2EE 通过最佳实践实现的真实应用程序中代码和代码大小上的异同。
•
提供用 .NET 和 J2EE 实现的典型的设计良好的应用程序能够支持多少用户的数据。
业务需求
作为 Pet Shop 3 体系结构文档的一部分,我们给出了 .NET Pet Shop 的业务需求,这样开发人员和客户就可以理解我们在做应用程序的设计决策时进行的一些选择。
Pet Shop 应用程序的功能性需求是什么?
•
应用程序应该使客户能够按类和通过关键字搜索浏览公司目录。
•
应用程序应该为客户提供一种通过一个购物车模型就能购买多个商品项的机制。
•
应用程序应该提供简单的安全模型,这样客户必须先进行登录,才允许购买购物车的内容。
•
应用程序旨在支持高容量的企业级电子商务解决方案;因此应用程序应该展示以下方面:
•
高性能,通过所支持用户数和用户响应时间进行衡量
•
通过增加更多处理器来扩展的能力
•
通过增加更多机器组成群集的分布式扩展能力
•
在大型企业级系统中,应用程序可能需要访问多个数据库,因此应用程序应该支持分布式事务。
•
应用程序应该考虑灵活的部署策略。默认时应用程序的设计方案是要部署到两台机器上,一台是应用程序服务器,一台是数据库服务器,但是应该能够扩展在其他部署模型下工作。应用程序应该支持多个数据库供应商。 这里我们选择了 Microsoft SQL Server 和Oracle。
•
应用程序应该容易维护,这是通过应用程序中的代码行数来衡量的。
.NET Pet Shop 中使用的数据库架构是直接从 Java Pet Store 移植而来的。 Java Pet Store 支持几种数据库供应商格式,因此我们选取了 Sybase 应用程序的架构,并在一个 Microsoft SQL Server 2000 实例中创建。 这不需要改变 Sybase 版本的架构。 而创建 Oracle 版本的 .NET Pet Shop 时,我们直接采用了 Java Pet Store 数据库原来的 Oracle 实现。
数据库 有如下整体表结构,参见表 1:
表 1. Pet Shop 中的数据库表
表名用途
Account
代表基本客户信息
BannerData
存储广告条信息
Category
目录类别( Fish, Dogs, Cats 等)
Inventory
产品库存状态
Item
各个产品的细节
LineItem
定单细节
Orders
客户下的定单。 定单包括一个或多个行项目
OrderStatus
定单状态
Product
目录产品,每个产品可有一或多类型(项目)。 通常类型可能是雄或雌。
Profile
客户的用户配置情况
Signon
客户登录表
Supplier
有关供应商信息
在 .NET Pet Shop 版本 2 中,应用程序改为要创建一个方案,其中完成定单处理必须使用分布式事务。为了适应分布式事务方案,Orders、OrderStatus 和 LineItem 表都分到不同的可能安装在不同机器上的数据库实例。我们在 .NET Pet Shop 的第三版中保持了这个分布式设计模式。
图 5. .NET Pet Shop 订购数据库架构

图 6. .NET Pet Shop 帐号和产品数据库架构

Microsoft .NET Pet Shop 简介的更多相关文章
- Microsoft .NET Pet Shop 4
Microsoft .NET Pet Shop 4:将 ASP.NET 1.1 应用程序迁移到 2.0 299(共 313)对本文的评价是有帮助 - 评价此主题 发布日期 : 2006-5-9 | 更 ...
- Microsoft .NET Pet Shop 4: Migrating an ASP.NET 1.1 Application to 2.0
249 out of 297 rated this helpful - Rate this topic Gregory Leake Microsoft Corporation Alan Le, Ale ...
- asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料
asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料 NET Pet Shop .NET Pet Shop是一个电子商务的实例, ...
- Microsoft Detours 2.1简介
http://blog.163.com/qcb_163/blog/static/9545466420117851038971/ Microsoft Detours 2.1简介 2011-08-0817 ...
- Microsoft Azure File 服务简介
我们非常高兴地宣布在微软Azure中国区推出 Microsoft Azure File 服务预览版.Azure File 服务使用标准 SMB 2.1 协议提供文件共享.Azure 中运行的应用程序现 ...
- ethereum Pet Shop
在部署宠物商店时遇到的一些坑,给大家总结一下,以免大家多走弯路 转载的地址(详细):https://steemit.com/cn/@lucia3/ethereum-pet-shop 启动"n ...
- asp.net资料! (.NET) (ASP.NET)
使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.NET2.0小技巧--内部控件权限的实现 ...
- web错误
“/Web”应用程序中的服务器错误. 服务器 'LD-PC' 上的 MSDTC 不可用. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误 ...
- web.config的数据库连接字符串进行加密
连接参考:http://wenku.baidu.com/link?url=nwGug8wxz143A4pvBE_kN6vMU7aF3ojwCKJOyN-TQleZ07iAYrjx_FnFVDOtZAF ...
随机推荐
- HDU 1026 Ignatius and the Princess I 迷宫范围内的搜索剪枝问题
这个问题是一个典型的类型的问题迷宫广泛的搜索. 在网上看到了很多解决方案. 没什么解决问题的分析报告,不指出其中的关键点.代码更像是一大抄.一些分析师也有很大的文章分析.只是不要全部命中关键,什么是广 ...
- 使用Java快速实现进度条(转)
基于有人问到怎样做进度条,下面给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax. ...
- Redis系列之(二):Redis主从同步,读写分离(转)
1. Redis主从同步 Redis支持主从同步.数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制. 2. 配置主从同步 Mater Slave的模式,从Slave向Maste ...
- Hadoop 2.6.0分布式部署參考手冊
Hadoop 2.6.0分布式部署參考手冊 关于本參考手冊的word文档.能够到例如以下地址下载:http://download.csdn.net/detail/u012875880/8291493 ...
- Linux下is not in the sudoers file(转)
用sudo时提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的用户名,也就是你的用户名没有权 ...
- 无插件,直接加参数,chrome它可以模拟手机浏览器
在目标出现,加上一些参数即可:--user-agent="mozilla/5.0 (linux; u; android 2.3.3; en-us; sdk build/ gri34) app ...
- Linux内核导出符号宏定义EXPORT_SYMBOL源代码分析
资源: <include/linux/moudule.h> --. #ifndef MODULE_SYMBOL_PREFIX #define MODULE_SYMBOL_PREFIX &q ...
- 重写IHttpHandler,实现前后端分离
再说重写IHttpHandler,实现前后端分离 aspx页面第一次加载时,HttpHandler 里面是如何编译指定页面的呢?Framework提供了编译页面的API如下: BuildManag ...
- 《Java并发编程实战》第十四章 构建自己的同步工具定义 札记
一.状态依赖性的管理 有界缓存实现的基类 @ ThreadSafe public abstract class BaseBoundedBuffer<E> { @GuardeBy( &quo ...
- 十天学Linux内核之第二天---进程
原文:十天学Linux内核之第二天---进程 都说这个主题不错,连我自己都觉得有点过大了,不过我想我还是得坚持下去,努力在有限的时间里学习到Linux内核的奥秘,也希望大家多指点,让我更有进步.今天讲 ...
