|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码称号空间与程序集称号之间有甚么区分?
称号空间是范例的一种逻辑定名计划,个中复杂范例称号(如MyType)后面带有效点分开的条理布局称号。如许的定名计划完整在开辟职员的把持之下。比方,键进MyCompany.FileAccess.A和MyCompany.FileAccess.B在逻辑大将会具有与文件会见相干的功效。.NET框架利用一种条理布局定名计划,用于将范例按相干功效的逻辑种别举行分组,比方,ASP.NET使用程序框架或远程处置功效。计划工具能够使用称号空间使开辟职员更简单在代码中扫瞄和援用范例。称号空间的观点与程序集的观点之间没有任何接洽。一个程序集能够包括其条理布局称号具有分歧称号空间根的范例,而一个逻辑称号空间根能够超过多个程序集。在.NET框架中,称号空间是在计划时举行逻辑定名的便利体例,而程序集在运转时为范例创建称号感化域。
使用程序部署和断绝
部署.NET使用程序时可使用哪些选项?
经由过程使使用程序的无影响安装和XCOPY部署成为大概,.NET框架简化了部署。由于一切的哀求起首在公用使用程序目次中举行剖析,以是只需复杂地将一个使用程序的目次文件复制到磁盘中,便可运转该使用程序,而不必要注册。
此计划关于Web使用程序、Web服务和自力的桌面使用程序出格有吸引力。不外,在有些计划中XCOPY还不敷以承当分发机制。比方,当使用程序具有很少的公用代码,而依附于可用的共享程序集;大概使用程序不是安装在当地(而是按需下载)。关于这些情形,.NET框架供应了扩大的代码下载服务和与WindowsInstaller的集成。.NET框架供应的代码下载撑持经由过程以后平台供应了很多上风,包含增量下载、代码会见平安性(不再有“Authenticode”对话框)和使用程序断绝(为一个使用程序下载的代码不会影响其他使用程序)。WindowsInstaller是.NET使用程序可使用的别的一个壮大的部署机制。在WindowsInstaller1.5中,WindowsInstaller的一切特征(包含刊行、发布和使用程序修补)都能够在.NET使用程序中利用。
假如我已编写了一个程序集,并但愿在多个使用程序中利用它,我应当在那边部署它?
要由多个使用程序利用的程序集(如共享程序集)必要部署到全局程序集缓存中。在预公布版和Beta版中,利用AlinkSDK工具的/i选项可将程序集安装到缓存中:
al/i:myDll.dll
WindowsInstaller的后续版天性够将程序集安装到全局程序集缓存中。
怎样才干看到在全局程序集缓存中安装了哪些程序集?
.NET框架附带了一个Windows外壳扩大,用于检察程序集缓存。在Windows资本办理器中,转至%windir%assembly以激活检察器。
甚么是使用程序域?
使用程序域(一般是AppDomain)是用于断绝使用程序的假造历程。在统一个使用程序感化域中创立的一切工具(换句话说,从该使用程序的出口点入手下手沿着工具激活序列的任何中央)都在统一个使用程序域中创立。多个使用程序域能够存在于一个操纵体系历程中,使它们成为断绝使用程序的烦琐体例。
操纵体系历程经由过程利用各不不异的内存地点空间来供应断绝。只管它是无效的,但也是价值高贵的,而且不克不及到达年夜型Web服务器所必要的数目。与其比拟,大众言语运转时经由过程办理在使用程序域中运转的代码的内存利用来强迫举行使用程序断绝。如许就确保它不会会见使用程序域之外的内存。必要注重的是,只要范例平安的代码才干以这类体例办理(当在使用程序域中加载不平安代码时,运转时不克不及包管断绝)。
渣滓接纳
甚么是渣滓接纳?
渣滓接纳是使盘算性能检测什么时候不再可以会见某个工具的一种机制。它将主动开释由该工具利用的内存(也挪用用户编写的称为“停止者”的清算例程)。一些渣滓接纳器(如由.NET利用的)会紧缩内存,并因而削减程序的事情集。
非断定性渣滓接纳是怎样影响代码的?
关于年夜多半编程职员而言,具有一个渣滓接纳器(而且利用可作为渣滓接纳的工具)意味着永久不必要费心开释内存或援用计数工具,即便您利用了庞大的数据布局。但假如您一般在统一个用于开释工具内存的代码块中开释体系资本(文件句柄、锁定等等),那末在编码款式方面必要做一些修正。利用可作为渣滓接纳的工具时,您应当供应一种办法,来明白开释体系资本(也就是说,由您的程序把持),同时同意渣滓接纳器在紧缩事情集时开释内存。
是不是可以制止利用可作为渣滓接纳的堆?
一切撑持运转时的言语都同意您从可作为渣滓接纳的堆平分配类工具。这在疾速分派方面带来了优点,而且使编程职员无需本人来盘算什么时候应当显式“free”每一个工具。
CLR还供应了ValueTypes工具――它们与类类似,但ValueType工具是在运转时仓库(不是堆)平分配的,因而当您的代码加入界说这些工具的历程时,将主动接纳它们。这就是C#中“struct”的操纵体例。
C++的托管扩大使您能够选择类工具分派的地位。假如利用__gc关头字声明为托管类,它们将从可作为渣滓接纳的堆平分配;假如它们不包括__gc关头字,它们将与一般的C++工具一样从C++堆平分配,而且利用“free”办法显式开释。
有关渣滓接纳的的具体信息,请参阅:
渣滓接纳:Microsoft.NET框架中的主动内存办理(英文)
渣滓接纳-第2部分:Microsoft.NET框架中的主动内存办理(英文)
远程处置
怎样在大众言语运转时中举行历程内和历程间通信?
历程内通信有两种:在单一使用程序域的高低文中,大概跨使用程序域。在统一个使用程序域的高低文中,利用代办署理作为监听机制,而不触及封送处置/序列化。当跨使用程序域时,利用运转时二进制协定来作封送处置/序列化。
历程间通信为每一个特定目标利用一个可拔出通道和格局化程序协定。
假如开辟职员利用soapsuds.exe工具指定闭幕点来天生元数据代办署理,那末默许值是带有SOAP格局化程序的HTTP通道。
假如开辟职员在托管天下中实行显式远程处置,必要明白指定利用的通道和格局化程序。这能够经由过程设置文件用可办理的体例来暗示,大概用API挪用来加载特定通道。选项以下:
带有SOAP格局化程序的HTTP通道(HTTP在Internet上或任何须须经由过程防火墙举行通讯的时分运转优秀)
带有二进制格局化程序的TCP通道(关于局域网,TCP是功能较高的选项)
带有SOAP格局化程序的SMTP通道(仅对跨盘算机成心义)
在托管代码和非托管代码之间举行转换时,COM基本布局(特别是DCOM)用于远程处置。在CLR的两头版本中,这也合用于服务组件(利用COM+服务的组件)。在终极版本中,设置任何远程组件都是大概的。
工具的散布式渣滓接纳由名为“租用保存期”的体系来办理。每一个工具都有一个租用工夫,当到期时,该工具与CLR的远程处置基本布局断开毗连。工具具有一个默许的更新工夫――当客户端乐成地挪用了工具时,租用将被更新。客户端能够显式更新租用。
互操纵性
是不是能够在.NET框架程序中利用COM工具?
是。您如今部署的任何COM组件都能够在托管代码中利用。一般情形下,所需的调剂是完整主动举行的。
出格是,可使用运转时可挪用包装(RCW)从.NET框架会见COM组件。此包装将COM组件供应的COM接口转换为与.NET框架兼容的接口。关于OLE主动化接口,RCW能够从范例库中主动天生;关于非OLE主动化接口,开辟职员能够编写自界说RCW,手动将COM接口供应的范例映照为与.NET框架兼容的范例。
是不是能够在COM程序中利用.NET框架组件?
是。您如今创立的托管范例都能够经由过程COM会见。一般情形下,所需的设置是完整主动举行的。托管开辟情况的某些新特征不克不及在COM中会见。比方,不克不及在COM中利用静态办法和参数化机关函数。一样平常,提早断定给定范例所针对的用户是一种较好的举措。假如范例必要在COM中利用,您将被限定在利用COM可会见的特征。
默许情形下,托管范例多是可见的,也多是不成见的,这由用于编写托管范例的言语决意。
出格是,可使用COM可挪用包装(CCW)从COM会见.NET框架组件。这与RCW(请参阅上一个成绩)类似,但它们的偏向相反。一样,假如.NET框架开辟工具不克不及主动天生包装,大概假如主动体例不是您所必要的,则能够开辟自界说的CCW。
是不是能够在.NET框架程序中利用Win32API?
是。利用P/Invoke,.NET框架程序能够经由过程静态DLL出口点的体例来会见本机代码库。
上面是C#挪用Win32MessageBox函数的示例:
usingSystem;
usingSystem.Runtime.InteropServices;
classMainApp
{
[DllImport("user32.dll",EntryPoint="MessageBox")]
publicstaticexternintMessageBox(inthWnd,StringstrMessage,StringstrCaption,uintuiType);
publicstaticvoidMain()
{
MessageBox(0,"您好,这是PInvoke!",".NET",0);
}
}
平安性
怎样使代码与平安体系和谐事情?
一般,这不成成绩――年夜多半使用程序能平安地运转,不会受歹意打击的搅扰。经由过程复杂地利用尺度类库来会见资本(如文件)或实行受回护的操纵(比方反转范例的公有成员),平安性由这些库来实行。使用程序开辟者必要完成的一项复杂事情是包含权限哀求(一种公然的平安性),将代码大概吸收的权限限定在它所必要的权限局限内。这也确保了假如代码被同意运转,它在运转时将具有所需的一切权限。
仅当开辟职员必要编写供应新型资本的新基类库时,他们才必要间接处置平安体系。在这类情形下,并不是一切的代码都有潜伏的平安性成绩,代码会见平安机制将其限定在替换了平安体系的那部分代码上。
为何在收集共享驱动器中运转代码时会产生平安非常?
默许平安战略仅给来自当地Intranet地区的代码授与无限的权限。这个地区是由InternetExplorer平安设置界说的,它们应当设置为与企业外部的当地收集相婚配。因为由UNC或映照驱动器(比方利用NETUSE命令)定名的文件都必要在当地收集上发送,因而它们也在当地Intranet地区中。
默许值是为不平安的Intranet这类最坏情形而设置的。假如您的Intranet对照平安,您能够修正平安战略(用CASPol工具),给当地Intranet或其一部分(比方特定的盘算机共享名)授与更多的权限。
怎样编写代码,使它在平安体系中断该代码时运转?
今世码试图实行未经受权的操纵时,将产生平安非常。权限是基于代码(特别是其地位)来授与的。比方,从Internet中运转的代码所失掉的权限比在当地盘算机上运转的代码所失掉的权限要少,这是由于履历证实,它的牢靠性要低一些。因而,要运转因为平安非常而失利的代码,您必需增添授与它的权限。一个复杂的办法是将代码移到更受信托的地位(比方当地文件体系)。但这类办法并非在任何情形下都无效(Web使用程序是一个很好的例子,企业收集上的Intranet使用程序是另外一个例子)。因而,不要改动代码地位,而是经由过程变动平安战略给该地位授与更多的权限。请利用代码会见平安战略工具(caspol.exe)或图形化办理工具(在Beta2和更高版本中能够失掉)来实行此操纵。假如您是代码的开辟职员或刊行者,您也能够对它举行数字署名,然后修正平安战略,给带有该数字署名的代码授与更多权限。可是,在实行上述任何操纵时,请记着此代码被授与较少的权限,是由于它不是来自受信托的来历――在将代码移至当地盘算机或变动平安战略之前,您应当确保这些代码不会实行歹意或破坏性的操纵。
怎样办理团体或企业盘算机的平安性?
今朝,CASPol命令行工具是办理平安性的独一办法。平安战略由两个级别构成:按盘算机和按用户。我们企图在.NET框架初版中供应周全的办理工具和企业战略办理撑持。
基于证据的平安性是怎样与Windows2000平安性共同事情的?
基于证据的平安性(基于受权码)能与Windows2000平安性(基于登录身份标识)共同事情。比方,要会见一个文件,托管代码必需具有代码会见平安文件权限,也必需在具有NTFS文件会见权限的登录身份标识下运转。.NET框架中包含的托司库也为基于脚色的平安性供应了类。这些都使使用程序可以与Windows登录身份标识及用户组共同事情。
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊! |
|