不改变中间层,如何玩转 .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 Framework.
- 在 Web 服务器(点击查看单个设备配置方法)上安装 FMStocks7.MSI 或在应用程序集群控制器( Application Center Cluster Controller)上安装 FMStocks7 。
- 打开命令提示符并更改包含 Fitch 和 Mather 示例的目录。默认目录为:\machinename[安装了Visual Studio .NET的驱动盘]:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\FMStocks7。
- 至此,可以在单个服务器或整个应用程序中心集群上安装 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 权限。
- 右击桌面上的IE浏览器图标,在快捷菜单中选择「属性( Properties)」。
- 选择「安全(Security)」标签。
- 将网络共享或映射网络驱动器添加到设备可信站点。
注意:可信站点属于「Zone–Trusted」安全策略组。默认情况下,该策略组具有 Internet 权限而非 FullTrust 权限。 - 打开命令提示符并通过以下命令授予可信站点 FullTrust 权限:caspol -chggroup 1.5 FullTrust
OneAPM 助您轻松锁定 .NET 应用性能瓶颈,通过强大的 Trace 记录逐层分析,直至锁定行级问题代码。以用户角度展示系统响应速度,以地域和浏览器维度统计用户使用情况。想阅读更多技术文章,请访问 OneAPM 官方博客。
不改变中间层,如何玩转 .NET 的远程处理功能?的更多相关文章
- 关于玩QQ消息导入导出功能的感想!
今天玩了一下QQ的导入导出聊天记录的功能,感觉自己有些白痴,因为作为一个软件开发人员对自己平时使用的软件的功能掌握的不够,别说其他的任何东西了就连功能性的操作有些也不知道更别说熟练或精通了,这不是一个 ...
- 荣耀10带来AI版WPS,玩转潮酷新功能
图书馆里,想把喜欢的句子和情节留存, 无奈摘抄需要时间,拍下来又很容易遗忘在相册? 课堂偷偷拍摄的课件, 模糊一片难以辨认? 开会培训收集的PPT照片, 总有那么几页对焦失败? 这些当时起劲,后来就& ...
- 玩转X-CTR100 l USB功能-HOST鼠标键盘
更多塔克创新资讯欢迎登陆[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器具有MicroUSB接口,支持SLAVE和HOST两 ...
- 抠脚大叔如何改变性别,Python实现变声器功能
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 乔柯 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- App裂变活动多种玩法解析
移动互联网时代,流量为王.在App获取流量的过程中,有资金的砸广告,没资金的铺渠道,但是不管你有钱没钱,社交平台都是必须重点争夺的流量阵地. 毕竟,截至2018年底,微信及WeChat的合并月活跃账户 ...
- ASP.NET Core 借助 K8S 玩转容器编排
Production-Grade Container Orchestration - Automated container deployment, scaling, and management. ...
- 【CityHunter】基于LBS的AR体感游戏设计理念
本人目前还不是游戏行业的圈内人士,并不懂得,游戏行业的生态圈,也不懂得,所谓的什么“中国市场环境”.所以不敢发表关于这方面的见解,不过我在这里想要插一句话,就是我认为啊,行业内,人与人之间还是有分层次 ...
- 【BZOJ-4213】贪吃蛇 有上下界的费用流
4213: 贪吃蛇 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 58 Solved: 24[Submit][Status][Discuss] Desc ...
- 总结七条助你成为Linux高手的超棒忠告
起初Linux对于我来说其实是很纠结的,因为很早以前就听说过.也曾见各种技术大牛使用过,但是一直觉得非常高深而没有去正式接触.两年前随着自己工作愈发的乏味,又看到了一篇叫做"虽然我是医生,但 ...
随机推荐
- C#播放音乐,调用程序
一:C# 播放音乐 string sound = Application.StartupPath + "/sound/msg.wav"; //Application.Startup ...
- c# 远程监控(1) 大纲
此篇文章主要讲了如何使用C# Winform程序模拟一个远程监控系统,并使用RTP实时传输协议传输数据. 应用场景:远程监控.局域网视频会议.客户端流式缓冲播放 这方面的资料还是有一些,但是都需要整合 ...
- shell脚本实例(2)
1.传给脚本一个参数:目录,输出该目录中文件最大的,文件名和文件大小 #!/bin/bash if [ $# -ne 1 -o ! -d $1 ];then echo "Args is er ...
- iOS开发——极光推送
1.到极光官网 https://www.jpush.cn/ 下载极光推送SDK. 具体如何集成最好参考官网的文档,以及一些失败的原因.文档非常详细,我也是参考集成的. 2.到极光推送官网注册自己的应用 ...
- iOS 的一点理解(一) 代理delegate
做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...
- Java JDK1.5、1.6、1.7新特性整理(转)
原文链接:http://www.cnblogs.com/tony-yang-flutter/p/3503935.html 一.Java JDK1.5的新特性 1.泛型: List<String& ...
- Unity中使物体自动寻路的方法
在做一个FPS游戏时,需要敌方自动找到玩家方位并向玩家移动,在查找资料(并走了不少坑)后,我试了三个方法,经测试,这三个方法都能实现自动寻路功能. 方法一:使用Mathf.Lerp()方法 代码很简单 ...
- OpenJudge/Poj 1936 All in All
1.链接地址: http://poj.org/problem?id=1936 http://bailian.openjudge.cn/practice/1936 2.题目: All in All Ti ...
- a标签根据js返回值判断页面是否跳转
a标签再跳转之前先判断是否符合条件,符合可以跳转,不符合不可以跳转. 自己遇到的问题是:在js方法中根据条件就return结果,但是不行. 原因是:在js方法中return后不会结束整个js方法(ac ...
- Qt多文档界面应用设计
使用Qt编写多文档界面(MDI)应用相当方便,主要会使用到QMdiArea和QMdiSubWindow两个类.可以查看Qt Asistant中这两个类的说明文档,里面介绍的相当详细.另外,可以搜索例程 ...