.NET Remoting 进阶之二——应用程序域例程

简介:

这个例子可以非常好地说明应用程序域的概念。在学习分布式程序设计时,首先要理解什么是应用程序域,.NET Remoting 就是利用运行库的服务在调用运行在不同的应用程序域中的对象的方法,并共享其数据。

 
构造两个应用程序域:
1 、新建一个控制台应用程序,项目名称为: RemotingTest vs.net 2003  会在  RemotingTest  解决方案下生成一个  RemotingTest 项目。这是我们的一个应用程序域。在这个应用程序内,显示该应用程序域的各种信息,然后,将调用 AppDomain.CreateDomain() 进入另一个应用程序域。
2 、下面,我们来构建另一个应用程序域,该应用程序引用一个简单计算的类库  MathLibrary , 右键单击解决方案,添加——新建项目——类库,数据类库的名字为  MathLibrary ,完成。将 Class1 改名为  SimpelMath ,代码如下:
using System;
 
namespace MathLibrary
{
         /// <summary>
         /// Class1  的摘要说明。
         /// </summary>
         public class SimpleMath
         {
                   public static int Add(int n1,int n2)
                   {
                            return n1 + n2;
                   }
                   public static int Subtract(int n1,int n2)
                   {
                            return n1 - n2;
                   }
         }
}
选择“生成”菜单下面的生成  MathLibrary, 完成了对类库的编译。右键单击解决方案,添加——新建项目——控制台应用程序,命名为  MathClient ,代码如下:
using System;
 
using MathLibrary;
 
namespace MathClient
{
         /// <summary>
         /// MathClient  的摘要说明。
         /// </summary>
         public class MathClient
         {
                   static void Main(string[] args)
                   {
                            Console.WriteLine();
 
                            AppDomain myDomain = AppDomain.CurrentDomain;
                            Console.WriteLine("Info about our current app domain");
                            Console.WriteLine("Hash Code = {0}",myDomain.GetHashCode());
                            Console.WriteLine("Friendly Name = {0}",myDomain.FriendlyName);
                            Console.WriteLine("App Base = {0}",myDomain.BaseDirectory);
                            Console.WriteLine();
 
                            Console.WriteLine(" 5 + 3 = {0} ",SimpleMath.Add(5,3));
                            Console.WriteLine(" 5 - 3 = {0} ",SimpleMath.Subtract(5,3));
 
                            Console.ReadLine();
                   }
         }
}
注意:一定要添加对  MathLibrary  类库的引用,这样,一个使用类库的应用程序域就建立好了。
 
3 、修改 RemotingTest 项目下的  Class1.cs   RemotingTest.cs, 修改后代码如下:
 
using System;
 
namespace RemotingTest
{
         /// <summary>
         /// Class1  的摘要说明。
         /// </summary>
         class RemotingTest
         {
                   /// <summary>
                   ///  应用程序的主入口点。
                   /// </summary>
                   [STAThread]
                   static void Main(string[] args)
                   {
                            AppDomain myDomain = AppDomain.CurrentDomain;
                            Console.WriteLine("Info about our current app domain");
                            Console.WriteLine("Hash Code = {0}",myDomain.GetHashCode());
                            Console.WriteLine("Friendly Name = {0}",myDomain.FriendlyName);
                            Console.WriteLine("App Base = {0}",myDomain.BaseDirectory);
                            Console.WriteLine("Probing paths = {0}",myDomain.RelativeSearchPath);
 
                            AppDomain mathDomain = AppDomain.CreateDomain("MathClient");
                            mathDomain.ExecuteAssembly(@"E:\Csharp\MathClient\bin\Debug\MathClient.exe");
                   }
         }
 
 
}
      注意:一定要注意应用程序域的路径是正确的。


本文转自 august 51CTO博客,原文链接:http://blog.51cto.com/august/6924,如需转载请自行联系原作者
相关文章
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
759 10
|
11月前
|
JSON 数据格式
【Azure Fabric Service】演示使用PowerShell命令部署SF应用程序(.NET)
本文详细介绍了在中国区微软云Azure上使用Service Fabrics服务时,通过PowerShell命令发布.NET应用的全过程。由于Visual Studio 2022无法直接发布应用,需借助PowerShell脚本完成部署。文章分三步讲解:首先在Visual Studio 2022中打包应用部署包,其次连接SF集群并上传部署包,最后注册应用类型、创建实例并启动服务。过程中涉及关键参数如服务器证书指纹和服务端证书指纹的获取,并附带图文说明,便于操作。参考官方文档,帮助用户成功部署并运行服务。
344 73
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
607 23
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
302 5
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
534 2
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
323 9
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
356 2
|
数据采集 JSON API
.NET 3.5 中 HttpWebRequest 的核心用法及应用
【9月更文挑战第7天】在.NET 3.5环境下,HttpWebRequest 类是处理HTTP请求的一个核心组件,它封装了HTTP协议的细节,使得开发者可以方便地发送HTTP请求并接收响应。本文将详细介绍HttpWebRequest的核心用法及其实战应用。
755 6
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
1577 3
|
开发框架 监控 安全
.NET 应用程序安全背后究竟隐藏着多少秘密?从编码到部署全揭秘!
【8月更文挑战第28天】在数字化时代,.NET 应用程序的安全至关重要。从编码阶段到部署,需全面防护以保障系统稳定与用户数据安全。开发者应遵循安全编码规范,实施输入验证、权限管理和加密敏感信息等措施,并利用安全测试发现潜在漏洞。此外,部署时还需选择安全的服务器环境,配置 HTTPS 并实时监控应用状态,确保全方位防护。
197 3