不改变中间层,如何玩转 .NET 的远程处理功能?

原文链接
https://msdn.microsoft.com/enus/library/aa289846(v=vs.71).aspx

Visual Studio .NET 2003

该方案展示了传统系统与托管代码的集成方法,以及这些传统系统如何使用核心 .NET 远程服务。具体点说,该方案展示了在不改变中间层应用程序的前提下,如何利用 .NET 的远程处理功能,将 .NET Web 应用与现存 Windows DNA 中间层架构结合起来。

如果你有现成的 Windows DNA 架构,并决定使用 ASP.NET 中的某些特性,但同时想保留在中间层 COM+ 业务和数据对象所做的「投资」,你可以用以下方式部署分布式架构。此外,正如下图中显示,用户服务系统 ASP.NET 代码、用户服务等等)完全独立于中间商业服务网络之外。

该方案的优点是:无需修改中间层代码。你现在可以关闭所有此前用于 Windows DNA 架构方案的 DCOM 端口,同时获得公共语言运行时(CLR)、Web Forms 和 ASP.NET 性能提升等优势。

要实现此方案(下面所描述的安装执行步骤),需要:

  • 在 Web和应用程序服务器上安装 .NET Framework

  • 在应用程序服务器上创建一个 Web 工程

  • 将 remoting.cfg 文件复制到该 Web 工程的根目录中

  • 将调用方程序集(assembly)复制到新建 Web 架构下的 \bin 目录下。

  • 修改 Web服务器(客户端)的 web.config 文件以便使用Http/Binary格式。具体细节请参考 .NET Remoting

注意:对于 TCP/Binary,需要 exe 而非 Web 工程,并且这一点在安装说明中没有涉及。

关键点

Fitch 和 Mather 7.0 示例使用 HTTP/Binary 而非 HTTP/SOAP。之所以使用 HTTP,是因为需要通过80端口防火墙。之所以 Binary 而非 SOAP 是受性能影响。对于大量的数据,Binary 性能优于 SOAP。因此,如果处理大量数据(例如数组、数据集和数据表),使用 Binary 格式。如果处理小块数据,使用 SOAP 或者 Binary 格式并无多大差别。处理整数型数据亦然。如果远程调用是通过80端口从半可信位置发起,建议使用 SSL和 IPSec 以确保通信的安全。

注释: 该案例仅用于演示说明在 Fitch 和 Mather 7.0 环境下,.NET 远程处理与遗留 COM+ 组件的组合使用方法。在实践中,如果通信是横跨整个广域网(WAN),这种方案事实上是一个糟糕的设计。在本例中,分布式服务器仅用于演示 .NET 远程服务。对于 Fitch 和 Mather 7.0,这不是一种可取的分布式方案。此外,在本案例中,.NET Framework 必须安装在应用程序服务器上。

方案: .NET 与传统系统整合

不改变中间层,如何玩转 .NET 的远程处理功能?
不改变中间层,如何玩转 .NET 的远程处理功能?

安装

下面的安装过程展示了上图描述的多主机安装案例。

注意:该方案假设数据库安装在一个独立的服务器上。

执行安装:

  1. 确保所有的设备上都安装了 .NET Framework.
  2. 在 Web 服务器(点击查看单个设备配置方法)上安装 FMStocks7.MSI 或在应用程序集群控制器( Application Center Cluster Controller)上安装 FMStocks7 。
  3. 打开命令提示符并更改包含 Fitch 和 Mather 示例的目录。默认目录为:\machinename[安装了Visual Studio .NET的驱动盘]:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\FMStocks7。
  4. 至此,可以在单个服务器或整个应用程序中心集群上安装 BLL:

单个服务器

  • 在命令提示符上输入:
fms.exe deploy RemoteMachine=MachineX Path=c:\FMStocks7_GAM Components=GAM

注意:更改参数以便其适合你的配置环境。输入 fms.exe 且不加参数会出现帮助。该过程会将应用程序的 GAM 安装到独立的远程服务器上。

在输入以上命令后,将会看到以下操作:

Stopping IIS

Creating Directories

Generating Configuration files

...

Starting IIS

Upon completion you should see:

Deployment successful

应用程序中心集群

a. 在命令提示符上输入:

fms.exe deploy RemoteMachine=MachineX Path=c:\FMStocks7_GAM Components=GAM RemoteUser=MachineX\jdoe RemotePassword=password Cluster=nnn.nnn.nnn.nnn

注意:仅当在集群上部署时,才会使用集群参数。MachineX 必须作为集群控制器。该一过程会将应用程序的 GAM 安装到应用程序中心集群上。

b. 请验证应用中心是否在应用管理控制台成功部署。在输入上述命令后,将看到以下操作:

Stopping IIS

Creating Directories

Generating Configuration files

...

Starting IIS

Upon completion you should see:

Deployment successful

或者,你可以添加以下命令行以复制程序中心集群中的 Web 主机,正如前面的图像所示:

fms.exe replicate

提示:在实际情况中,你可能希望通过其他方式自动化 Web 主机复制过程。例如,一个弹出对话框询问是否需要复制,或者使用管理控制台的管理单元。

c. 启动应用程序并查看其版本号页面,验证安装是否成功。版本页面会显示安装了BLL、DAL 和 GAM 的主机名称。其中 GSM 应该安装在 MachineX 上。

安全要求

Fitch 和 Mather 示例必须安装在具有本地安全策略组 FullTrust 权限的的位置。本地驱动属于具有 FullTrust 权限的「Zone-MyComputer」安全策略组,而网络共享和映射网络驱动器则属于具有 LocalIntranet 权限的「Zone – Intranet」安全策略组。因此,如果你将示例安装到网络共享或者网络驱动器下,就必须给相应位置授予 FullTrust 权限。

  1. 右击桌面上的IE浏览器图标,在快捷菜单中选择「属性( Properties)」。
  2. 选择「安全(Security)」标签。
  3. 将网络共享或映射网络驱动器添加到设备可信站点。
    注意:可信站点属于「Zone–Trusted」安全策略组。默认情况下,该策略组具有 Internet 权限而非 FullTrust 权限。
  4. 打开命令提示符并通过以下命令授予可信站点 FullTrust 权限:caspol -chggroup 1.5 FullTrust

OneAPM 助您轻松锁定 .NET 应用性能瓶颈,通过强大的 Trace 记录逐层分析,直至锁定行级问题代码。以用户角度展示系统响应速度,以地域和浏览器维度统计用户使用情况。想阅读更多技术文章,请访问 OneAPM 官方博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,009评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,808评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,891评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,283评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,285评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,409评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,809评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,487评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,680评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,499评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,548评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,268评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,815评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,872评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,102评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,683评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,253评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,573评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,334评论 25 707
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,549评论 18 399
  • 秋天的美,不同于其他三个季节。没有春的暖心,没有夏的热情,没有冬的冷酷。金黄是属于它的独有的标...
    梓陌高阅读 218评论 5 1
  • 大家好,欢迎来到新一期的欣然品书画栏目,今天栏目组邀请的是知名书法家梁健灿(中国书法家协会会员)先生来谈谈字写不好...
    艺术视界阅读 347评论 0 0