在2005年的时候,我也曾基于.NET 2003拓荒了一个小的组件,这个组件的见解是为了处罚模块化拓荒和模块复用的问题。我将该组件定名为Common Form Framework,它的见解是允许每一个拓荒东说念主员孤苦的拓荒我方的模块且不错凯旋专注于业务模块,然后通过设立不错快速将总共拓荒东说念主员拓荒的业务逻辑窗体集成到这个组件中。
该组件的念念路如下图所示。该组件提供了一个如“2”标志的空的窗体,每一个拓荒东说念主员通过编写一个如“1”的XML设立文献即可将一个模块的功能附加到空窗体,最终组合成一个如“3”所示的软件居品。
这个组件得胜的应用在一个由9个东说念主相助拓荒,历时1年的应用系统拓荒中。它的想法和Microsoft Composite Application Block有一些同样,不外莫得CAB那么强劲了。
小程序开发在参考了CAB和履历更多应用系统之后,我发现该组件有不少迤逦,比如:模块化界说不够规范、界面元素无法彭胀、模块交互超越复杂、功能复用低、不可应用于Web或者其它应用环境等。为此,我参考了CAB和SCSF的一些功能,并在2007假想了一个Commom UI Platform规范,旨在假想一个更为强劲粗拙的模块化快速拓荒平台。
上期奖号和值为97,最近十期和值分别为116 105 118 106 100 103 84 137 64 97,最近十期和值分布在64-137之间。综合分析本期预计红球和值出现在123左右。
不外在2008年的时候,我有了更多的想法,提倡了一个UIShell居品构念念。UIShell是英文User Interface Shell的缩写,汉文译为“用户界面外壳”。它是由一个软件模板框架。它由框架层、奇迹层、Shell层和系统模块层组成,提供了基于UIShell的软件假想和拓荒规范。 Shell汉文译为“外壳”,它是应用系统的主界面,由可彭胀的界面元素(如菜单、器具栏)和可替换的界面(如表露区)元素组成,如下图所示。
这个居品面向的用户有2种:(1)拓荒东说念主员——该居品能够为拓荒东说念主员提供一个模块化假想规范、通用的界面框架和通用的奇迹,从而使得拓荒东说念主员不错凯旋假想业务模块,不需要讲理软件的界面、用户体验等;(2)最终用户——最终用户不需要去购买任何软件,不错通过基于该平台的软件超市中下载到所需的界面框架和应用模块,然后我方拼装成最终的软件。
在我当今看来,其时的想法如实有点纵容,因为我想的太粗拙太雄壮了(不外,有时候还真需要纵容才略干点什么,:)),不外我那会小数皆没突出志到这点。我其时组了一个UIShellDev Team。我很高傲的告诉团队,“一朝咱们完毕了UIShell,咱们好像能够为软件行业开辟一个新的标的,为其孝顺点什么”。
于是咱们便发轫了UIShell居品之路,咱们纵容的学习了Enterprise Library、SCSF、SharpDevelop、Egeye Addin、MAF、MEF等,分析了SCSF的源代码、SD源代码,学习了Framework Design Guideline,关注每一个新出现的居品并分析竞争上风与劣势(如Google App Engine、Sina App Engine、MEF等,咱们不可拓荒一个对拓荒东说念主员来讲莫得用且过期的居品,因此需要时刻保捏警惕),制定了居品拓荒规范——“用户场景假想规范、需求规范、假想规范、质料保证体系等”…… 这个居品假想方针以“易用性”为首要方针,这意味着咱们作念任何功能皆应该先猜测用户,并模拟用户的看成习尚来赓续的优化居品的假想。但是这条路并莫得像我意象的那么容易,我原本认为这个居品早该在2009年底就发布了。假想的历程中,问题一个接一个,且由于咱们团队是兼职的,程度比我意象的慢了许多。更为紧要的是,其时想法是基于SCSF来作念的,SCSF太过于复杂,并不可够得志咱们的需求。在一个未必的契机,我斗争了OSGi规范,并哄骗业余时辰将OSGi规范翻译了。看了OSGi后,我咫尺一亮,我意志到了这便是我想要的。但是OSGi是基于Java的规范,由于.NET平台和Java平台的各别,咱们需要假想一个顺应.NET平台的规范。于是,咱们便动手我方假想了OSGi.NET规范,在假想这个规范时,咱们借用了OSGi规范但蜕变了它的方针,即OSGi.NET的定位是一个得志.NET不同应用环境的通用模块化运行时,它完毕了OSGi的模块化与插件化、面向奇迹、模块彭胀和安全性的功能。
OSGi.NET规范及接口假想在2008年底假想完成,我记适其时完成假想的时候,我正在好意思国的Dublin,通过Email把假想的图纸和规范发送给UIShellDev Team。这是该规范的初稿。在接下来的日子里,咱们赓续的对假想进行重构,最终在2009年8月份完毕了内核原型,在2009年10月份完成了OSGi.NET假想最终稿。诚然,做一个app得多少钱在重构的历程中,团队其他成员仍是发轫动手假想了。在这里咱们假想了一个能够通用于各式.NET运行环境的模块化运行时,它完毕了UIShell居品总共功能,况兼易用性依然保捏。咱们自行假想了模块化规范、模块运行时类加载规范、SOA规范和彭胀规范、拓荒与调试规范。不外,中间有一个决策比拟贫瘠,因为ASP.NET不同于WinForm、WPF和Console,它必须宿主在Web Server。那么,咱们的争论就在于——是IIS宿主模块运行时如故模块运行时宿主IIS呢?要是模块运行时宿主IIS,那么它就有实足的范围权,不够运行于IIS的模块与模块运行时的其它模块间的通信就艰苦了,因为这是跨进程通信。要是IIS宿主模块运行时,那么模块运行时就比拟被迫了。最终有蓄意的效果是遴选第二种有蓄意,因为这种有蓄意性能高、粗拙。在完成最终稿假想时,居品假想的总共问题便处罚了。咱们便过问总共的元气心灵去完毕。
目前UIShell居品假想与完毕仍是进入尾声,这也意味着软件超市的基础平台仍是基本构建完成。咱们完毕的OSGi.NET内核仍是能够得胜的宿主在.NET各式不同环境,况兼各式环境的假想念念路、拓荒念念路实足一致。软件超市以后将会有不同环境的Shell模块、通用奇迹和应用模块,这么,用户和拓荒东说念主员皆不错去下载和拼装软件,况兼也不错去孝顺我方拓荒的东西。
还需要提到的是,UIShell居品在完毕的历程中,对于质料保证体系的构建。事实上,居品假想的运行阶段,我是很但愿总共的东西皆能够超越的完善,包括质料保证体系,我其时是一个完好主义者。不外,咱们并莫得豪阔的资源来支捏“完好”。在这一历程中,我学会了协调、学会了“软件中和”,咱们只可把有限的资源过问到最需要的场合,况且每一个阶段的方针还不同。诚然了,咱们当今仍是构建了一个粗拙且灵验的质料保证体系,它基于“Subversion/TotoiseSVN/AnkhSVN + CruiseControl.NET/NAnt + BugTracker.NET”完毕。Subversion提供了同样ClearCase的设立不停功能,是一个开源免费的居品,它提供了强劲的Branch/Tag不停,Branch/Tag是我其时遴选设立不停器具的首要条目,这是居品线不停的必备功能。CruiseControl.NET/Nant用于捏续集成,在每一个代码更新时,它皆会自动Build,咱们不错看到居品线是否健康,此外,还有一个很紧邀功能,咱们不错随时构建一个新的用于测试的装配包。BugTracker.NET亦然一个开源的颓势不停器具,咱们不错随时创建Bug。它在每次Bug更新时,皆会向团队发送邮件。它提供了强劲的颓势统计不停,在Bug Fixing阶段,咱们不错粗拙的安排居品不同阶段需要Fix的总共Bug,也不错用于统计每一个东说念主的责任量。诚然了,咱们还把柄需要对BugTracker.NET进行了革新,主要有2个:(1)现代码提交时,Bug景色自动变为Check in并发送邮件;(2)加入代码审计功能,不错粗拙的为每一个Bug生成代码审计包,从而使得咱们不错粗拙稽察每一个Bug所作念的篡改。以下是一个BugTracker.NET Email奉晓喻例。
目前UIShell内核居品由装配包工程、VS插件工程、Remote Console工程、OSGi.NET工程、SaaS工程、Web Extension工程、Shell工程、测试工程和Help工程组成。唯一在不同环境中遴选如下模样宿主模块运行时,这个环境便具有了OSGi.NET的总共特点。当今经过测试的环境有范围台、WinForm和ASP.NET,接下来咱们在完善了文档、Sample之后将发布第一个版块,并鄙人个版块中完毕对更多环境的集成测试,完善居品,并构建软件超市网站。
此外,咱们还将构建一个SaaS商店,不外这是另一个居品了,我将会在以后先容咱们SaaS商店居品了。终末我要感谢UIShellDev Team的总共成员,他们为居品的构建付出了很大的致力于,提倡了许多有建筑趣味的想法,这个居品是一个团队的结晶。在居品研发历程中,咱们体验了团队1+1>2的力量。莫得他们的付出,UIShell居品是不可能完毕的,更别提其它宏伟的想法了。每次想起与团队拓荒历程中的细节做一个app得多少钱,我皆超越的高傲和感动,这些东说念主真nice!