仓酷云

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

[学习教程] ASP.NET教程之经由实践考证的C#挪用Haskell的办法仓酷云

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

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

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

x
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。【体系情况】
WindowsServer2008R2,HaskellPlatform2013.2.0.0,ghc7.6.3,cabal1.16.0
【操纵步骤】
1.安装Windows版HaskellPlatform(不撑持WindowsServer2012),HaskellPlatform集成了cabal(相称于.NET中的msbuild+nuget),ghc(GlasgowHaskellCompiler,Haskell编译器)
2.编写Haskell代码保留于.hs文件中,代码中加上foreignexportccall,示例代码以下:

3.编写C代码保留于.c文件中,代码以下:
  1. #include<windows.h>#include<Rts.h>externvoid__stginit_LibPandoc(void);BOOLSTDCALLDllMain(HANDLEhModule,DWORDreason,void*reserved){staticchar*args[]={"libpandoc",NULL};if(reason==DLL_PROCESS_ATTACH){startupHaskell(1,args,__stginit_LibPandoc);}returnTRUE;}
复制代码

4.编写cabal设置文件保留于.cabal文件中,好比:
  1. Name:libpandocVersion:0.5Cabal-Version:>=1.2Build-Type:SimpleExecutablelibpandoc.dllIfos(windows)CPP-Options:-DWIN32Extensions:ForeignFunctionInterfaceHs-Source-Dirs:srcInclude-Dirs:srcC-Sources:src/pandoc.cInstall-Includes:pandoc.hMain-Is:LibPandoc.hsGhc-Options:-no-hs-main-optl-shared-optl-s
复制代码

5.在Haskell项目地点的文件夹运转命令cabalbuild举行编译,编译乐成后会天生头文件,好比buildlibpandoc.dlllibpandoc.dll-tmpLibPandoc_stub.h
  1. #include"HsFFI.h"#ifdef__cplusplusextern"C"{#endifexternHsPtrmarkdownToHtml(HsPtra1);#ifdef__cplusplus}#endif
复制代码

6.创立用于挪用Haskell的C#项目
7.将编译出来的dll文件(好比libpandoc.dll)复制到C#项目标bin文件夹中
8.在C#中经由过程DllImport援用Haskell编译出来的dll文件
  1. classNative{[DllImport("libpandoc",CallingConvention=CallingConvention.Cdecl,CharSet=CharSet.Unicode)]publicstaticexternIntPtrmarkdownToHtml(byte[]markdown);}
复制代码
9.在C#中挪用Haskell经由过程foreignexportccall表露出来的函数,示例代码以下:
  1. publicclassProcessor{publicstringProcess(stringtext){varintPtr=Native.markdownToHtml(Encoding.UTF8.GetBytes(text));varhtml=Marshal.PtrToStringAnsi(intPtr);returnhtml;}}
复制代码

可怜的程序员,还是逃不出移植的命运!
admin 该用户已被删除
沙发
发表于 2015-1-19 15:43:42 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
深爱那片海 该用户已被删除
板凳
发表于 2015-1-20 17:52:43 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
柔情似水 该用户已被删除
地板
发表于 2015-1-29 13:44:53 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
老尸 该用户已被删除
5#
发表于 2015-2-1 10:22:50 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
分手快乐 该用户已被删除
6#
发表于 2015-2-5 06:47:45 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
海妖 该用户已被删除
7#
发表于 2015-2-8 01:56:48 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
简单生活 该用户已被删除
8#
发表于 2015-2-8 15:40:51 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
小女巫 该用户已被删除
9#
发表于 2015-2-15 21:41:30 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-5 03:43:56 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
活着的死人 该用户已被删除
11#
发表于 2015-3-10 16:01:43 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
只想知道 该用户已被删除
12#
发表于 2015-3-24 02:50:35 | 只看该作者
那么,ASP.Net有哪些改进呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-18 06:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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