dotnet 下开发 COM+ 组件

dotnet 下开发 COM+ 组件,第1张

一 问题的提出

最终用户的每次请求 都将读取Mapping文件——可以通过缓存解决

xxx子系统需要不断的写入Mapping文件——也可以先写入内存然后批量写入文件解决

二 分析解决问题

由于分别有 个或更多子系统需要对同一文件进行读写 *** 作 而客户端又有很大的并发性 所以极可能出现读写冲突或错误 也必将影响系统的性能

通过调用共同的进程外组件的方式来读写文件 而这个共同的进程外组件只有在自身启动的时候把文件内容load到内存 当文件有变化时更新内存

三 +组件介绍

早在window 发布时就已经产生了+ 并集成在 *** 作系统中 在运行的时候是以服务的形式存在的 +增加了一系列的MTS(一种系统服务 用于管理数据库中的持久性数据 也处理在事务中的持久性消息队列和文件系统)服务

事务服务 它确保了在分布式系统中的数据完整性

安全服务 它的安全模型提供了处理安全性而不用编写任何代码的方法

同步服务 提供了有管理地解决组件中并发问题的方法 但却不用编写代码

资源管理 (包括资源管理器和资源分配器)管理数据库连接 网络连接和内存等

JIT激活 即(Just In Time)是从MTS继承下来的一项服务 当客户调用时才将该对象的一个实例保持为活跃状态并缓存在服务器内存中 使用完对象后 会通知MTS环境可以释放该对象所占用的资源了 如数据库连接

对象池 提供一个线程池来存放现成的对象 以供下次再用 是系统的一项自动服务 当有应用程序访问+组件时 即为应用程序创建该组件的一个实例并存放在对象池中 应用程序关闭后即销毁实例 可以自由配置组件使它的实例在池中的状态 实现了实例的重用性 提高应用程序的性能和伸缩性

基于角色的安全 这个容易理解 即验证角色 给予安全许可 给不同的用户予不同的权限

队列组件(MSMQ) 提供异步消息队列 可以自动按其形式将数据转换成数据包

共享属性管理器(SPM) 用来管理存储在内存中的对象状态信息 在一个服务器进程内可以用来共享多个对象间的状态 并提供并发处理

补偿资源管理器(CRM) 用于在处理事务期间生成日志文件并可处理系统崩溃 包括CRM工作器(是CRM的主要部分 通过CRM的基础设施提供的接口将事务的相关信息写入日志 并在需要时检索日志文件)和CRM补偿器(用于在事务完成后 将事务和生成的日志文件提交给执行事务的用户)

并发 即允许一个应用程序中的多个进程同时运行 进程被分成各组上下文(有相同需求的对象集合)包含在单元(一个进程内的一组上下文)中 一个进程可包含多个上下文 都涉及到不同的需求的对象而且每个上下文都有一个唯一的对象来提供+事务处理和JIT激活等服务 利用+提供的工具可以创建执行交易的多层应用程序 还可以处理线程分配的问题 OK 介绍完+的功能下面再介绍+的类型

+有几种不同用途的类型

1 应用程序代理 包含应用程序注册信息的文件 即当有客户访问远程计算机的服务器程序时 运行在客户端的应用程序代理就会将服务器应用程序的信息写入客户端器计算机中

2 服务器应用程序 即在+应用程序本身的进程内执行+应用程序 同时使用并发性来处理组件

3 库应用程序 是在客户应用程序的进程内执行的 装载在客户应用程序进程内的 使用基于任务的安全性 缺点是不支持远程访问和队列组件

4 +预安装应用程序 到管理工具中的组件服务中的+应用程序文件夹中查看就明白什么是+预安装应用程序了 它是在+安装过程中自动安装进组件服务的应用程序 不能修改也不能删除

同时涉及到一个叫 程序集(Assembly ) 的概念 它是CLR所有类型和其它资源(如位图文件等)的集合 可通过管理工具下的 配置 NET框架 来查看 包括有私有和共享的程序集 私有程序集 它只能被放在与该程序集相同路径的应用程序访问 默认为私有 必须放在使用它的应用程序的文件夹中 共享程序集 指添加在GAC(Global Assembly Cache)中的程序集 GAC是专门用来存放程序集中 使应用程序可以共享这些程序集 有一点必须注意 就是存放在GAC中的程序集必须有一个唯一的名字 可以通过在 NET命令执行窗口中打入sn k assemblyname snk 来生成一个唯一的名称 叫做强名称 生成强名称后 会有一个公钥附加在此程序集上 用于阻止名字相似而被代替的危险

NET中对程序集的安全性提供了两种机制 一种是前面提到的强名称 一种是使用Signcode(可理解为数字签名) Signcode exe用来标记一个程序集 同时嵌入一个数字签名到程序集中 可以让用户识别创建此程序集的开发者

(注 在GAC中不能有两个相同名称的强名称 否则就不叫强名称了 但可以存储一个程序集的多个拷贝而且在GAC中的程序集只能被拥有一定权限的用户删除)

关于程序集的版本号 每一个版本都有一个 位的版本号 表示为四部分 Major(为主版本号 项目有变化时即改变) Minor(添加一个功能到项目时改变) Build Revision(后两个是自动更新的) 这些版本信息可以通过在应用程序中的AssemblyInfo cs文件来查看

又是一堆的理论 下面介绍+的应用 在 NET中使用+服务的组件就叫做 NET服务组件 跟一般的组件不同 区别在于前者使用了+服务 使用 NET服务组件的目的也就是为了可以访问+服务的一些基类如ServicedComponent和自动事务处理 JIT 对象池和安全性方面等

在使用 NET服务组件之前都必须注册服务组件 有三种方式

1 手动注册 通过RegSvcs exe命令行工具来注册 如 Regsvcs yourponent dll 之后将产生一个yourponent tlb类型库 包含了对象的类型信息(注意在使用该命令前必须先注册一个yourponent的强名称)

2 编程注册 使用RegistrationHelper类 主要是利用在IregistrationHelper接口中的方法

3 动态注册 是指在执行应用程序过程中 检查安装组件的版本 如组件的正确版本没安装 则在运行时自动安装需要的版本 即自动注册 (注 调用自动注册的用户必须是Window Administrative组的一个成员 因为动态注册无法改变+ 目录 否则注册过程失败)

四 实例剖析

首先新建一个类库 (在我的项目里叫XMLOperate)

它会生成两个文件 AssemblyInfo cs和Class cs(我把Class cs改成了Main cs 具体名称可以自己定)

添加引用(System EnterpriseServices )

回到Main cs

using System

using System Reflection

using System Runtime InteropServices

using System EnterpriseServices

namespace XMLOperator

{

/// <summary>

/// OMPmSAXMLOperator 的摘要说明

/// </summary>

[ObjectPooling(MinPoolSize= MaxPoolSize= )]

[JustInTimeActivation(true)]

[ClassInterface(ClassInterfaceType AutoDual)]

public class XMLOperate ServicedComponent

{

protected override void Construct(string constructString)

{

base Construct(null)

}

protected override void Activate(){}

protected override void Deactivate(){}

protected override bool CanBePooled(){return true }

protected override void Dispose(bool disposing)

{

base Dispose(disposing)

}

///

///把我的很多方法都去掉了 写个简单的visit来演示一下就OK了

///

[AutoComplete]

public string visit(string name)

{

return 欢迎 + name

}

}

}

回到AssemblyInfo cs 添加引用using System EnterpriseServices

添加代码

//将组件设置为服务器启动模式

[assembly ApplicationActivation(ActivationOption Server) ]

//制定应用服务器名称

[assembly ApplicationName( XMLOperate )]

接下来 给服务器程序一个强名称(相当于注册) 打开 Visual Studio Net (也许你用的是 )命令提示 找到文件的地址 输入sn k 生成密匙比如我的文件在D盘 work中

D \work\XMLOperate> sn k XMLOperate snk

XMLOperate snk为生成的文件名称 ( 执行完成后 文件里会多出一个文件server snk )

强名称生成完后 回到程序中 在AssemblyInfo cs中最后几排 可以发现[assembly AssemblyKeyFile( )] 把文件路径写进去[assembly AssemblyKeyFile( ……/……/XMLOperate snk )]

生成解决方案 在OBJ \ debug 中会有个XMLOperate dll 回到Visual Studio Net 命令提示 到文件obj\debug目录下 执行regsvcs 命令 注册服务 (完全可以不用手工注册 在步骤 中 客户端调用new的时候的时候如果没有注册该组件服务 则系统会自动注册 详细请见(三)部分最后的注册方式 )

我的项目中是这样的

D \work\XMLOperate\obj\debug > regsvcs XMLOperate dll

这样 服务器就构建完成

打开我的电脑 控制面板 管理工具 组件服务 +应用程序 现在我们可以看到+中多了个 XMLOperate这个就是刚所建的服务器

在XMLOperate上按右键 打开属性 修改安全性 调用身份验证级别为 无 模拟级别为标识 授权下的勾去掉( 这些是根据情况需要更改的 现在仅仅做个本机上的列子) 然后找到激活 远程服务器名称改成你自己机器的IP地址

建立客户端

建一个winfrom(在我的项目里其实有 个web service和一个window service来调用XMLOperate)

加入引用

using System EnterpriseServices

using XMLOperate

lishixinzhi/Article/program/ASP/201311/21757

QQ好友发了个文件,后缀是EXE,我存在桌面后该文件消失了

EXE是应用程序文件类型,他给你发过来后,你接受文件是要经过杀毒软件扫描的,如果杀毒软件不认可这个程序的安全性,会自动清除的,所以你下载后就找不到了,你可以打开杀毒软件,点击杀毒选项,看看隔离区有没有那个文件,要是有的话,你可以把它转到信任区,就可以恢复了,如果你害怕电脑中毒,就在隔离区把这个文件清理掉就OK,希望我的回答能帮助你!祝你愉快

点开exe之后,该文件就就消失了

肯定是程序设置过期自动销毁了。

我下了个17G的半神,点后缀EXE的文件后,那文件就消失了。是木马吗???

1、系统反映延迟,缓存的问题,清理缓存

2、17G的,只可能内置木马,但也要你安装之后才会出事

3、系统早已经中毒

3的概率较大

电脑里所有后缀为exe的文件中后缀均消失了

双击我的电脑--工具--文件夹选项--查看--隐藏已知文件类型的扩展名这个前面的勾取消掉

将桌面文件发送到U盘后,该文件会在桌面消失吗?

不会,只是相当于复制了一下原文件而已。。。。。

解压文件保存在桌面之后自己消失了

1,你先确认你下的不是病毒,在别人机器好使在你机器不好使。

2,你先把自己电脑杀毒,然后用windows清理助手修复一下,然后在下载你所需要的文件。

3,如果不是病毒,只在你机器不好用,或许是系统的问题,该文件如果重要,重做系统也是有必要的。

桌面上的文件消失了

跟名字没关系,不常见的文件名多数是木马,所以直接杀出即可 ,360杀不了很正常,因为360没什么用,很多都啥不了,所以建议你用 KillBox 20 ——删除顽固垃圾文件的杀手级工具

桌面win7文件夹消失了!

刷新一次就出来了

KDE 桌面文件夹消失了

“添加部件”-“文件夹视图”-点击新添加的文件夹视图边框上的扳手图标-“指定文件夹”-选择家目录下的“桌面”目录或“Desk”目录(看发行版了)。

平常锁定部件,以免误删。

很多文件的后缀名消失了,怎么办

随便打开一个文件夹,菜单的“工具”-“文件夹选项”-“查看”-把“隐藏已知文件类型的扩展名”前的对号打勾就OK了

关机分两种。一:强行直接断电的,应该是电源供电不足,特别是用电高峰期,电压很容易不足,所以建议尽量在这样时期上网;或者是电源衰竭,输出能力减弱!建议更换更强电源!二:还有一种是正常按步骤关机,有关机界面,这样的话,极有可能中病毒,建议全盘杀毒!若还未解决,看是否启用什么自动关机程序。祝你好运!

00- - 真的,

00那个论坛的模块真心垃圾,

00还需要收费,

00推荐来精易论坛学习易语言,

00比他们更稳定的模块, 免费的模块,

00还有更有爱的论坛!

小米手机的安卓系统无法直接关闭完全关机功能,因为安卓系统和手机的硬件结构是相互联系的。但是可以关闭自动重启功能,使得手机在关机状态下也不会自动重启。

下面是关闭小米手机自动重启功能的步骤:

1 打开“设置”应用程序。

2 在设置中,向下滚动到底部,找到“关于手机”选项,单击进入。

3 在“关于手机”页面中,向下滚动到底部,找到“MIUI版本”选项,然后连续轻触它7次。

4 一旦您轻触了“MIUI版本”7次,您将看到一个d出窗口,上面写着“您已成功进入开发者模式”。

5 返回主设置页面,并选择“开发者选项”菜单。

6 滚动到“调试”部分,然后找到“自动重启”选项 。

7 单击以切换该选项,以关闭手机的自动重新启动功能。

通过以上步骤,小米手机自动重启功能将被关闭。当您将手机关机后,手机将保持关闭状态,不会自动重新启动,直到您手动按下电源键启动手机。

注意:关闭小米手机自动重启功能可能会影响一些应用程序和服务的正常功能,请谨慎 *** 作。另外,手动重启手机的方法是按住电源键长按4或5秒钟,然后松开即可。

以上就是关于dotnet 下开发 COM+ 组件全部的内容,包括:dotnet 下开发 COM+ 组件、QQ好友发了个文件,后缀是EXE,我存在桌面后该文件消失了、为什么电脑的后台程序老是自动关闭等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10078042.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存