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代码分析篇》中进行具体分析)。
public CategoryData GetCategories(int categoryId) { if ( dsCommand == null ) { throw new System.ObjectDisposedException( GetType().FullName ); } return FillCategoryData("GetCategories", "@CategoryId", categoryId); }
public void AddOrder() { ApplicationAssert.CheckCondition(cartOrderData != null, "Order requires data", ApplicationAssert.LineNumber); ApplicationLog.WriteTrace("Duwamish7.Web.Cart.AddOrder:/r/nCustomerId: " + cartOrderData.Tables[OrderData.CUSTOMER_TABLE].Rows[0][OrderData.PKID_FIELD].ToString()); cartOrderData = (new OrderSystem()).AddOrder(cartOrderData); }
public OrderData AddOrder(OrderData order) { ApplicationAssert.CheckCondition(order != null, "Order is required", ApplicationAssert.LineNumber); (new BusinessRules.Order()).InsertOrder(order); return order; }
public bool InsertOrder(OrderData order) { //此处省略复杂的处理逻辑 if ( isValid ) { using (DataAccess.Orders ordersDataAccess = new DataAccess.Orders()) { return (ordersDataAccess.InsertOrderDetail(order)) > 0; } } else return false; }
凡在本网站发表的文章,作者必须保证是原创文章;如果不是原创文章,由此带来的版权纠纷由作者自己承担。微软有义务对本站点发表的文章进行审核,但您需要考虑这些文章的使用风险。本站点仅提供一个用户相互交换技术信息和学习的园地,并不对来自社区用户的技术文章承担任何风险。
Duwamish深入剖析-结构篇 | |||
作者: 卢彦 www.ASPCool.com 时间:2003-4-6 16:10:55 阅读次数:10195 | |||
摘要: |