C#里的应用程序域AppDomain是什么求直白的解释
首先,描述一下AppDomain是什么:当一个程序集被执行时,系统就会自动为其创建一个AppDomain,每一个AppDomain属于某个进程,一个进程内可以有多个AppDomain;每个AppDomain创建时都有个默认的名称,该名称就是加载的程序集的名称(带扩展名.exe)。
同一windows 进程内的不同AppDomian之间可以互相共享资源,如:CLR,基本.NET类型,地址空间及线程。
程序集在AppDomain中的调用:在同一进程内,如果不同的AppDomain调用同一Assembly会有以下两种情况:
1、会在每个AppDomain中加载该Assembly并为各AppDomain所调用;
2、会在该进程内,不在任何的AppDomain中单据加载该Assembly,然后同一进程内的所有AppDomain都可以对其进行调用。这种方式加载的程序集(Assembly)称为域无关(Domain Neutral)的。
AppDomain和线程的关系式正交的;n《---》n的关系。
注意当AppDomain加载了某个Assembly后就无法将其单独卸载,不过可以讲AppDomain卸载掉。
卸载AppDomain时CLR会卸载当前在该AppDomain执行的所有线程,如果此时在执行非托管代码就可能产生问题,并且改AppDomain中所有的托管对象也会被垃圾回收器强制回收;
AppDomain的孤立性:
1)、一个AppDomain可以独立于其他的AppDomain被卸载掉;
2)、一个AppDomain不能放问其他AppDomain内的Assembly和对象;
3)、若没有发生跨边界的异常抛出,一个AppDomain拥有自己独立的异常管理策略。这也就意味着同一进程内的某一AppDomain发生异常不会影响到其他的AppDomain。
4)、每个AppDomain可以定义独自的程序集代码访问安全策略;
5)、每个AppDomain可以定义独自的规则,以便在CLR加载前定位程序集的位置
C 控制台应用程序和窗口程序有什么不同
一、指代不同
1、控制台程序:为了兼容DOS程序而设立的,这种程序的执行就好像在一个DOS窗口中执行一样,没有自己的界面。
2、窗口程序:是在用户计算机上运行的客户端应用程序,可显示信息、请求用户输入以及通过网络与远程计算机进行通信。
二、特点不同
1、控制台程序:能够运行在MS-DOS环境中的程序。控制台应用程序通常没有可视化的界面,只是通过字符串来显示或者监控程序。
2、窗口程序:对数据库处理提供全面支持。可以访问数据库中的数据,并在窗体上显示和操作数据。
三、用处不同
1、控制台程序:常常被应用在测试、监控等用途,用户往往只关心数据,不在乎界面。
2、窗口程序:可用于设计窗体和可视控件,以创建丰富的基于Windows的应用程序。
参考资料来源:百度百科-windows窗体应用程序
参考资料来源:百度百科-控制台程序
如何开发小程序
目前主要有两种方法,一种方法是自己开发,另一种则是使用一键生成的小工具进行开发,下面进行详细介绍:
1、申请注册微信小程序账号,注意:注册账号之后会有一个AppID,下载微信开发者工具,新建项目的时候需要填上,否则很多功能用不了,比如不能预览、不能上传代码等问题。
2、新项目创建完毕就可以进入开发者工具进行编辑,其中最难的就是编写代码这部分,其中app.js、app.json、app.wxss这三个文件功能一定要了解清楚,这对微信小程序开发是非常有帮助的,后面有很多样式、功能之类的,都是需要添加的。-什么叫应用程序域
3、收集精美的小组件,比如在github或者微信开放社区上找到想要的组件并巧妙优雅的组装到自己的小程序中,可以大大缩短制作的时间,编辑好点击“提交”,填写小程序相关信息就可以提交审核了,注意:分类最好填写准确,这样才能更快的通过审核。-程序
4、另一种方法则是利用一些一键生成小程序的工具,比如凡科网,登录后,进入选择想要的模板进行相应的修改就可以了。
注意事项:
1、如果你想要做一个能发布的小程序,前提是你必须要以个体户、企业或者组织机构等名义的营业执照注册;
2、小程序开发也不难,只要有代码基础的开发者都可以独立开发。小程序需要做后端也需要做前端,后端主要做上传产品和内容,前端主要负责小程序页面的布局,就是用户一点小程序进去看到的所有画面。
参考资料来源:百度百科-微信小程序