Duwamish部署方案篇

简介: Duwamish部署方案篇 Duwamish 7.0 支持两种多计算机部署方案。非分布式部署方案在一台 Web 主机上部署 Web 层、业务外观、业务规则和数据访问层,但可以在群集间复制该 Web 主机以达到负载平衡。
Duwamish部署方案篇

Duwamish 7.0 支持两种多计算机部署方案。非分布式部署方案在一台 Web 主机上部署 Web 层、业务外观、业务规则和数据访问层,但可以在群集间复制该 Web 主机以达到负载平衡。分布式方案在单独的服务器上部署特定的组件。例如,业务外观、业务规则和数据访问层可能位于独立于 Web 主机的服务器上。在实际部署中数据库服务器通常位于单独的计算机上。

1, 非分布式部署方案

在一台 Web 主机上部署 Web 层、业务外观、业务规则和数据访问层,然后通过软件(如Application Center 2000)或硬件来实现网络场(Web Farm)内各个Web Server的负载平衡。

在本机默认安装Duwamish 7.0时,是采用非分布式部署方案。

  

2, 分布式部署方案

使用 .NET Framework 远程处理技术将应用程序分布到多台计算机中。简单而言,就是IIS Web Server和Application Server分离,其中Web层(包括SystemFramework和Common项目)部署在IIS Web上,BusinessFacde/BusinessRules/DataAccess层(包括SystemFramework和Common项目)一起部署在Application Server上。

 

 

Duwamish 7.0 使用 HTTP/二进制而不是 HTTP/SOAP。使用 HTTP 的决定基于要通过端口 80 上的防火墙的要求。使用二进制而不是 SOAP 的决定基于性能上的考虑。对于大的数据块,二进制的性能优于 SOAP。因此,如果要传递大的数据块(例如,数组、数据集或数据表),则使用二进制格式化程序。如果要传递小的数据块,则选择使用 SOAP 还是二进制格式化程序是无关紧要的。传递整数时两者的性能都很好。

3, 如何将Duwamish 7.0部署为基于.Net Remoting的分布式系统

下面采用Microsoft提供的Deploytool工具自动进行(其实手工也很方便):

C:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\Duwamish 7.0 CS>deploytool deploy RemoteMachine=localhost path="C:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\Duwamish 7.0 CS\Duwamish7_Remote" 

在command line窗口输入上述命令行代码。

[10/29/2004 6:43:43 AM] Creating directory C:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\Duwamish 7.0 CS\Duwamish7_Remote on W1MIS38

[10/29/2004 6:43:43 AM] Stopping all internet services on W1MIS38

[10/29/2004 6:43:59 AM] Deploying Duwamish7 Business Facade on W1MIS38

[10/29/2004 6:43:59 AM] Creating web site on W1MIS38

[10/29/2004 6:44:00 AM] Generating remoting configuration files

[10/29/2004 6:44:00 AM] Starting all internet services on W1MIS38

[10/29/2004 6:44:02 AM] Starting Default Web Site on W1MIS38

[10/29/2004 6:44:02 AM] Deployment successful

运行结果:

(1)在IIS创建中创建Web Application(Duwamish7_Facade),本地路径为:C:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\Duwamish 7.0 CS\Duwamish7_Remote\web 作为Remote Server端,Bin目录下是BusinessFacde/BusinessRules/DataAccess层(包括SystemFramework和Common项目)DLL文件。

其中web.config文件中包含所有Remote Objects的配置,如

<wellknown mode="Singleton" type="Duwamish7.BusinessFacade.ProductSystem, Duwamish7.BusinessFacade" objectUri="ProductSystem.rem" />

(2)Web层创建remotingclient.cfg配置文件,对Application Server而言,Web层相当与Client端。

remotingclient.cfg配置文件中包含formatter的设置(binary ),选择二进制格式化程序来序列化消息,注意是出于性能的考虑。

(3)Web application加载remotingclient.cfg配置文件

Web application在global.asax文件包括如下代码,在Application_OnStart事件中加载Retmoting配置文件。

void Application_OnStart()

{

ApplicationConfiguration.OnApplicationStart(Context.Server.MapPath( Context.Request.ApplicationPath ));

string configPath = Path.Combine(Context.Server.MapPath( Context.Request.ApplicationPath ),"remotingclient.cfg");

if(File.Exists(configPath))

    RemotingConfiguration.Configure(configPath);

}

其中前面代码ApplicationConfiguration.OnApplicationStart()是调用Duwamish7.SystemFramework.ApplicaitonConfiguration的OnApplicationStart()方法,用来初始化application root和读取web.config中的配置信息(将在Duwamish代码分析篇》中进行具体分析)。

18:00  |  固定链接 | 引用通告 (0) | 记录它 | Duwamish
Duwamish架构分析篇

Duwamish是Microsoft提供一个企业级的分布式系统架构,如果开发企业级的分布式系统,可以模仿这种架构,如果是开发一些简单的系统,则完全可以简化。

 

以前也学习过Duwamish范例,只是发现不同时间,不同经历,有不同的体会。正如卢彦所说的一样:通过研究Duwamish示例,高手能够领悟到.Net应用架构的设计思想,低手能够学习到.Net的编程技巧,实在是老少皆宜。

 

因此,这里再次学习并体验一次Duwamish范例。

 

1Duwamish 7.0 结构分为四个逻辑层(FROM MSDN):

Web 层 - Presentation

Web 层为客户端提供对应用程序的访问。这一层是作为 Duwamish.sln 解决方案文件中的 Web 项目实现的。Web 层由 ASP.NET Web 窗体和代码隐藏文件组成。Web 窗体只是用 HTML 提供用户操作,而代码隐藏文件实现各种控件的事件处理。

业务外观层 - Business Facade

业务外观层为 Web 层提供处理帐户、类别浏览和购书的界面。这一层是作为 Duwamish.sln 解决方案文件中的 BusinessFacade 项目实现的。业务外观层用作隔离层,它将用户界面与各种业务功能的实现隔离开来。除了低级系统和支持功能之外,对数据库服务器的所有调用都是通过此程序集进行的。

业务规则层 - Business Rules

业务规则层是作为 Duwamish.sln 解决方案文件中的 BusinessRules 项目实现的,它包含各种业务规则和逻辑的实现。业务规则完成如客户帐户和书籍订单的验证这样的任务。

数据访问层 - Data Access

数据访问层为业务规则层提供数据服务。这一层是作为 Duwamish.sln 解决方案文件中的 DataAccess 项目实现的。

 

除了上述四个逻辑层外,Duwamish 7.0 还包含封装在 Duwamish.sln 解决方案文件中的 Common 项目内的共享函数。“通用”(Common) 层包含用于在各层间传递信息的数据集。Common 项目还包含 Duwamish.sln 解决方案文件中的 SystemFramework 项目内的应用程序配置和跟踪类。

 

2,各个逻辑层之间的关系图(FROM MSDN)及其调用Sequeance图示例:
img_40ada63a5a091b22c39d3e677f634bb2.gif

下面是Categories.aspx web页面获取Category的Description的整个调用过程。

(1)实例化ProductSystem对象

(2)调用ProductSystem的GetCategories()方法

(3)检测参数的合法性

(4)创建Categories::DataAccess对象实例

(5)返回上述对象

(6)调用Categories::DataAccess对象的GetCategories()方法

(7)创建CategoryData::Common对象实例

(8)返回上述对象

(9)返回CategoryData::Common对象实例,该实例中已经包含了需要的数据

(10)返回CategoryData::Common对象实例给web/Client端

(11)检测数据的合法性

(12)读取并显示结果:Category的Description


img_5c388dd46ac98b2ebdf12a17ef2deda6.gif

SystemFramework项目包含一些application需要的配置参数,ApplicationLog日志类和ApplicationAssert参数校验类。SystemFramework项目为所有其他的项目所引用。

 

Common项目包含了用于在各层间传递信息的数据集,如上述的CategoryData继承System.Data.DataSet,既不是所谓的typed DataSet,也不是一般的DataSet,不过简单实用,这是基于.Net Remoting开发分布式系统用来tier与tier之间交互数据的一种方法。Common项目也被其他的项目引用,SystemFramework项目除外。

 

BusinessFacade项目中所有的Classes继承MarshalByRefObject class,显然是让准备将BusinessFacade tier部署为Remote Objects。不过,实际上默认这里并没有将其部署为Remote Objects,Web层仍然调用本地对象(《Duwamish部署方案篇》将分析这个问题)。

 

3Summary

 

在开发基于.Net Framework企业级分布式系统时,上述架构值得推荐,但也并非完美无暇,实际上存在一些值得改进的地方。显然,不可能一个范例适合所有的实际情况么,要求太苛刻了。其实,Enterprise Samples中的另外一个范例Fitch and Mather 7.0,其架构和Duwamish就有些不同了。

 

如果是开发本地的系统,就不要模仿Duwamish架构(看看上面获取Category的Description调用过程就知道了,太费劲。),如Business Facade和Business Rules中Classes应采用fine-grained interface设计,层与层之间的交互参数也不必全部采用DataSet,适当的时候采用setter/getter就可以了,这样不仅可以提高开发效率,而且有助于提高performance, maintainability and reusability。

目录
相关文章
|
5月前
|
数据可视化 IDE BI
如何实现软件的快速交付与部署?
如何实现软件的快速交付与部署?
|
6月前
|
缓存 负载均衡 监控
聊聊深入挖掘业务需求,可0-1设计高可用、高并发、高伸缩的分布式项目架构,环境搭建、自动化部署、服务器环境线上排查、性能评估
聊聊深入挖掘业务需求,可0-1设计高可用、高并发、高伸缩的分布式项目架构,环境搭建、自动化部署、服务器环境线上排查、性能评估
|
开发工具 Android开发
Android推送集成方案总结
刚做完推送集成方案,记录下坑。 这里记录的特性和使用时针对写blog时采用的sdk的,具体使用流程和限制还请参考官方给出的sdk. #### 1、推送规则 小米手机用小米推送; 华为手机用华为推送; 其他手机用友盟推送。
|
SQL 前端开发 JavaScript
6款 Retool 最佳替代方案
本篇文章的目的通过低代码平台使用者的视角引出细节,了解他们为什么使用低代码平台以及会选择哪个低代码平台来加速内部系统的开发。
700 0
6款 Retool 最佳替代方案
|
消息中间件 运维 监控
业务开发转基础开发,这三种「高可用」架构你会么?
业务开发转基础开发,这三种「高可用」架构你会么?
|
监控
部署平台环境可用性使用指南
部署平台环境可用性使用指南
213 0
部署平台环境可用性使用指南
|
安全 应用服务中间件 PHP
云上部署的便利性和方案
低门槛上云的可选部署方案
248 0
云上部署的便利性和方案
|
存储 弹性计算 Devops
【新功能】快照服务提供跨Region复制能力,助力企业应用快速部署
全新升级的快照服务,提供”跨Region复制能力“。一方面可实现云上异地容灾能力;另一方面借助于快照跨Region复制能力,可实现在新Region快速部署应用程序,以实现更好的可用性以及最大限度地降低部署成本。
10270 0
【新功能】快照服务提供跨Region复制能力,助力企业应用快速部署
|
关系型数据库 RDS 网络协议
业务系统同城双区部署方案
业务系统同城双区分为以下3个阶段: 1.同城双活 基于阿里云基础设施,在阿里云的华东2区内跨可用区部署应用,SLB 采用多可用区主备部署,在主 SLB 异常时,备 SLB 会自动升级为主 SLB 提供服务;RDS 采用多可用区主从实例,应用通过域名访问 RDS 实例,主实例提供读写服务,从实例提供读服务,在主实例响应异常时,从实例升级为主实例,主从切换对应用无感知。
1547 0