仓酷云

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

[学习教程] ASP.NET网页设计Oleg Shilo:基于CS-Script的Notepad++的插件仓酷云

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

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

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

x
那做企业软件是不是最好用J2EE?假如只是想写几句实验代码,VisualStudio显得有点牛鼎烹鸡。因而一些开辟者会选择轻量级的编纂器,如Notepad++,来满意编写剧本的必要。OlegShilo向我们先容了他的项目,一个优异的基于CS-Script的Notepad++的插件。
InfoQ:CS-Script是甚么?它与一般的C#有甚么区分?
Oleg:复杂来讲,CS-Script是一个基于CLR的运转时情况,能够实行用C#编写的剧本。值得注重的是,CS-Script并非一个注释器,而是封装了微软或MonoC#编译器的shell。因而它与一般的C#没有甚么分歧。实践上,它的剧本引擎面向的也是ECMA兼容的“纯真功效”的C#,与用VisualStudio或MonoDevelop编译成程序集的C#没有甚么区分。
形貌CS-Script最复杂的体例是:我们能够用C#编写算法,编译成程序集,然后间接实行该程序集,或在宿主使用程序中加载并实行。但CS-Script能够跳过编译阶段,而当即加载并实行代码,将C#代码当作剧本来处置。换句话说,运转时的C#剧本就是一个静态编译的程序集。
固然,实践情形要比这庞大很多,并且CS-Script供应了浩瀚吸引眼球的特征:自界说JIT编译、省略类的语法、主动定名空间到程序集的映照、接口对齐等。
CS-Script如今已9岁了,而且有一批用户。MediaPortal或FlashDevelop就是基于CS-Script构建的。它还被用于AutoCAD插件、主动化和呆板人、游戏和划定规矩引擎。
CS-Script遭到了Python的启示和影响。只管它们面临的是完整分歧的运转时范式,但CS-Script仍是从Python自创了很多有效的设法,如多剧本实行、预编译等等。
InfoQ:为何会为Notepad++创立一个插件?
Oleg:缘故原由有良多。在Windows上开辟的程序员很少有没传闻过Notepad++的。对良多人来讲,它是“必备”的源代码编纂器。可以获此殊荣,Notepad++是当之无愧的,由于它具有优异的架构和近乎完善的完成。但除这些赞誉,它另有必定的上升空间。
我以为Notepad++的“主动补全”功效另有点大略,还不敷以成为智能的代码帮助工具。它只是按文件范例分组的一些“高频词”罢了。
我深信如许一个很牛的编纂器应当变得更好。因而我决意为Notepad++完成一个C#的智能感知办理计划。
我想让Notepad++能具有与VisualStudio同种级其余智能感知。同时还包含“转到界说”、“查找援用”、“显现办法信息”、“增加短少的‘using’”和代码格局化。这就是这个插件出生的启事。智能感知相干的功效基于NRefactory,但插件的中心是CS-Script。而且因为插件利用了剧本引擎,因而能够在Notepad++中间接实行C#代码。
当完成完成后,我又催生了其他一些设法。因而又公布了另外一个Notepad++插件(NppScript)。它利用C#剧本对Notepad++自己举行主动化。实践上每一个如许的剧本本身,加上一些相干的插件特征(工具条图标、快速键、菜单项),都能够当作是一个插件。上面的截图展现了这一设法。
(点击图象缩小)
另外一个缘故原由是由于CS-Script。只管有了VisualStudio扩大和WindowsExplorerShell扩大,我仍是以为CS-Script不敷美满,没有一个专门的富编纂器。我固然晓得VisualStudio供应了无与伦比的“编纂才能”,但它也不是“银弹”。我想让C#和CS-Script用户具有一个壮大且轻量级的编纂器,不必要思索任何部署和license的成绩。
3年前我乃至仔细地实验着开辟如许一款编纂器。我花了大批工夫对SharpDevelop做反向工程,而且几近完成了一个为C#量身定做的编纂器(代码名为UltraSharp)。它是一个基于编纂器的自界说的WinForm,包装了NRefactory5预览版。但其功能和编纂功效都不克不及让人中意。因而我保持了这个项目,转而专注于在VisualStudio中集成CS-Script。我固然获得了乐成,但仍然心仪永世收费、功能出色、轻量级的Notepad++。
关于这个插件,我另有一个不太分明但却激烈的念头。我们一样平常事情云云庞大。框架、工场、形式、计划准绳……我们几近健忘了编程的兴趣。我不止一次地在文章中看到先容批量重定名工具、下载器、目次同步工具或仅仅是又一个MP3文件标签构造工具。这些工具经常是为了引出全功效的使用程序开辟(或部署计划),但在良多情形下,一样的工具能够仅用几行代码完成:
  1. foreach(stringfileinDirectory.GetFiles(".","*.mp3")){varmp3=TagLib.File.Create(file);stringdir=Path.GetDirectoryName(file);stringfileName=string.Format("{00}.{1}.mp3",mp3.Tag.Track,mp3.Tag.Title);File.Move(file,Path.Combine(dir,fileName));}
复制代码
在Notepad++中可使用CS-Script.Npp插件来实行上述代码。它乃至能够筹办一些剧本,可以在没有安装Notepad++的PC上运转。
我以为Notepad++和CS_Script让我们无机会只存眷代码,而不必忧虑代码的基本布局,不必思索在那里保留项目文件或寻觅方才编译的可实行文件。乐在码中。
InfoQ:创立一个Notepad++插件都包括哪些内容?
Oleg:传统的Notepad++插件开辟请求用C++编写代码。只管我用C++没成绩,但我仍是更喜好C#。因而我用NppPlugin.NET作为插件容器。必要出格指出的是,这个插件宿主计划能够文雅地应对互操纵的应战。它只是一个特别的VS项目模板,包括一些伶俐的预编译举动,能够注进特别的导出标记。因而,非托管的宿主使用程序(如Notepad++)能够在不借助任何包装器的情形下,间接承载一个一般的程序集。该项目模板还供应了一个接口(布局、常量),供应在其他插件中存在的一切Notepad++功效。
我利用了另外一个第三方办理计划是ICSharpCode.NRefactory(属于SharpDevelopIDE)。它是最成熟的剖析C#代码和构建语法树的开源办理计划。别的,它还完成了代码主动补全。但实践上它几仍是有点庞大。
NRefactory没有文档。只管作者供应了充实的代码示例,这貌似是一个更好的选择。但一切示例都是SharpDevelp独有的,假如不利用SharpDevelopUI控件套件的话,它们没法供应任何匡助。我花了大批工夫和精神对API举行反向工程,并终极乐成将其集成到Notepad++插件中。
另有一个应战是完成代码格局化。我做出了一个困难的决意,完成本人的格局化办理计划,而不是利用NRefactory内置的格局化。这是由于NRefactory的格局化其实不完整(最少我利用的版本是如许),并且关于非尺度的语法(如没有类的C#剧本)不敷天真。
在触及到用户交互时,我复制了VisualStudio的一切次要用户体验:办理计划扫瞄器、输入面板,CodeMap等等。
InfoQ:假定某公司创立了一个小型的DSL供外部利用。您以为让一个开辟者创立他们本人的Notepad++插件是不是可行?这是不是必要全部团队的勉力?
[quote]Oleg:这固然取决于开辟的范围。办理计划由以下几个逻辑部分构成:插件基本、语法高亮、语法剖析和用户交互撑持。
插件基本能够说是最复杂的部分。NppPlugin.NET能承当年夜部合作作。因而完整能够由单个开辟者弄定。假如开辟需求不重,乃至可使用NppScripts(Notepad++主动化插件)。全部基本布局不到100行代码。NppScripts公布时自带了一个剧本示例,能够完成自界说的主动补全——同意特定高低文补全倡议的主动补全功效。
语法高亮在年夜多半情形下能够经由过程定制内嵌的Notepad++款式来完成。某些高亮义务没法由定制完成,那末就必要本人开辟完全的Lexar(一般用C++开辟)。但也只必要一个开辟者便可。
语法剖析器的事情量与语法的庞大度成反比。因而像DOS指令如许复杂的语法只必要一团体。但像C#如许庞大的语法就一定必要一个团队了。只管CS-SCript.Npp是一团体完成的,不外幸亏我没有任何刻日。
为DSL撑持用户交互也非常复杂。年夜多半情形下只必要主动补全的弹出框和一些设置把持台。一样也是一团体的事情量。固然,除非DSL的庞大性请求在运转时举行麋集的用户交互。
在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-20 18:21:33 | 只看该作者
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
再现理想 该用户已被删除
板凳
发表于 2015-1-21 20:49:28 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
只想知道 该用户已被删除
地板
发表于 2015-1-28 23:27:57 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
小妖女 该用户已被删除
5#
发表于 2015-2-2 13:06:17 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
第二个灵魂 该用户已被删除
6#
发表于 2015-2-5 11:06:54 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
再见西城 该用户已被删除
7#
发表于 2015-2-5 11:29:46 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
若相依 该用户已被删除
8#
发表于 2015-2-5 22:37:11 | 只看该作者
那么,ASP.Net有哪些改进呢?
飘飘悠悠 该用户已被删除
9#
发表于 2015-2-8 23:50:57 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
飘灵儿 该用户已被删除
10#
发表于 2015-2-9 19:04:32 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
活着的死人 该用户已被删除
11#
发表于 2015-2-11 06:29:11 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
深爱那片海 该用户已被删除
12#
发表于 2015-2-20 02:20:16 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
小魔女 该用户已被删除
13#
发表于 2015-2-20 15:36:41 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
爱飞 该用户已被删除
14#
发表于 2015-2-26 10:05:29 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
admin 该用户已被删除
15#
发表于 2015-3-8 13:23:21 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
莫相离 该用户已被删除
16#
发表于 2015-3-13 01:07:10 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
乐观 该用户已被删除
17#
发表于 2015-3-20 07:50:45 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-17 15:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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