仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 694|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET编程:dotNET C# Programmer’s Guide to the...

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:50:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。dotNETC#Programmer’sGuidetotheWin32API(Win32API声明C#版)



吝啬的神2001.09.07



噢,对不起我用了这个题目,现实上假如我能做到10%,我就很乐意了。由于我的桌上正放着一本DanAppleman的书,它曾陪伴我很多年,大概你也有一本:1215页,蓝色书皮,机器产业出书社。英文名叫:《DanAppleman’sVisualBasic5.0Programmer’sGuidetotheWin32API》。而我除借用这个相似的名字以外,只是做了一下收拾事情,不外这是一个不小的事情量(haha)



我把KERNEL32.DLL、USER32.DLL、GDI32.DLL、ADVAPI32.DLL、SHELL32.DLL、SPOOLSS.DLL、WINMM.DLL的函数和声明收拾了一下,改用C#的语法从头改写了一遍,收拾出一个C#版本。如许针对dotNET的PlatformInvocationServices(PInVoke),你就能够间接利用这些Win32的API函数了。今朝MS没有发布全部的Win32API有几能够在dotNET中利用,有几不可。有些功效在dotNET中没有对应的完成,那末今朝你大概还必要利用Win32的API函数。



布局和列举声明放在一同,Kernel32.dll、User32.Dll、GDI32.dll分离放在3个cs文件中;剩下的Advapi32.dll、Shell32.dll、Spoolss.dll、Winmm.dll四个DLL的函数放在一个cs文件中,全部的namespace起名叫Win32API.大抵的构架应当象上面如许:

namespaceWin32API{



usingSystem;

usingSystem.Runtime.InteropServices;



先是一切的布局和列举声明

classKernel32{….}

classUser32{….}

classGDI32{….}

classAdvapi32{….}

classShell32{….}

classSpoolss{….}

classWinmm{….}

}



对应的天生上面的C#文件:

Structs.NET.cs

Kernel32.NET.cs

User32.NET.cs

GDI32.NET.cs

OtherFnc.NET.cs



然后编译它们,如许就能够利用它们了,我没有盘算5个文件包含的一切的正确个数,不外应当有百个布局和列举,上千个函数声明吧。完成这些以后,如今最经常使用的MessageBox我能够如许利用了:



usingSystem;

usingWin32API;



publicclassTestWin32API

{

publicstaticvoidMain()

{



intiRet;

iRet=User32.MessageBox(0,"HelloC#Win32API","MyPinvoke",0);

}

}



就在测试这个例子时产生了一件风趣的事,由于刚入手下手我的cs文件都没有加NET的标识如许很天然的就有了Kernel32.cs、User32.cs等等,MessageBox是User32.DLL中的,而我编译的User32.cs默许天生的也叫User32.DLL,当我实行这个测试程序时终究产生毛病,我一向觉得本人的声明有成绩,然后我用FrameworkSDK中的例子也仍是堕落,直到我在别的的目次中运转一般时,我才发明本来本人的DLL名和体系的DLL名完整一样。然后就改成下面的那样,不外很奇异csc/t:exe/r:User32.dllTestWin32API.cs的编译指令竟然没有毛病提醒,真是可爱。提示你不要也象我一样。

噩梦大概还在前面,我还不晓得真实的cs声明中又有几个毛病,归正用到的时分再调试吧。由于太多了以是不成能全都测试,也不敢一个个的测试,只但愿本人这些收拾能起到举一反三的感化,假如今后你有新的版本,不要忘了Mail一份给我。



附带的Zip包中有一切cs的源码,我在FrameworkSDKBeta2下都编译经由过程。

Windows2000ADVServerSP2EN

VisualC#CompilerVersion7.00.9254

CLRversionv1.0.2914

你能够依据你的情形举行编译(要先编译Structs.NET.cs,由于别的的都要/r:Structs.NET.DLL)大概利用二进制的DLL。dotnet的编译手艺很好,5个DLL加起来才100多K。



上面是一下源码的节选:



--------------------------------------------------------------------------------


//WritebyccBoy

//Date:2001.09.07

//csc/t:library/r:System.dllStructs.NET.cs

//csc/t:library/r:Structs.NET.dllKernel32.NET.cs

//Emeditor3.14



namespaceWin32API{



usingSystem;

usingSystem.Runtime.InteropServices;



[StructLayout(LayoutKind.Sequential)]

publicclassABC{

publicintabcA;

publicintabcB;

publicintabcC;

}



[StructLayout(LayoutKind.Sequential)]

publicclassABCFLOAT{

publicfloatabcfA;

publicfloatabcfB;

publicfloatabcfC;

}



publicClassKerne
[img=1border=0style=,1src=]http://www.ckuyun.com/[/img]

无论谁倒了对双方阵营的粉丝们也是有害无益。
活着的死人 该用户已被删除
沙发
发表于 2015-1-19 09:43:49 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-24 12:06:09 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
飘灵儿 该用户已被删除
地板
发表于 2015-2-1 10:07:24 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-7 02:51:43 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
若天明 该用户已被删除
6#
发表于 2015-2-19 22:18:22 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
admin 该用户已被删除
7#
发表于 2015-3-6 15:45:42 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
简单生活 该用户已被删除
8#
发表于 2015-3-20 11:38:57 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 10:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表