Linux.NET实战手记—自己动手改泥鳅(上)
各位读者大家好,不知各位读者有否阅读在下的前一个系列《Linux.NET 学习手记》,在前一个系列中,我们从Linux中Mono的编译安装开始,到Jexus服务器的介绍,以及如何在Linux中简单的部署自己的WebForm程序和ASP.NET MVC应用程序。如果各位读者有阅读该系列的文章并且成功的实现上面的每一个功能点,那么小弟认为,你对Linux.NET已经入门,剩下的就是各自在Linux.NET中自由发挥,在这另一天地中做自己爱做的事,创出一番更新的新天地来。
为此,在下推出一个新的系列——Linux.NET实战手记,该系列主要用于记录我在使用Linux.NET中的点点滴滴,在记录的同时与各位读者朋友分享。小弟不才,没有办法保证所有的方法都是最科学以及真正可行,如有任何不妥的地方,还望各位读者不吝指正。
先进入本回合,在本回合中,我们会对一个开源的个人博客——小泥鳅 进行改造,以其让它能够在Linux.NET中正常的使用,由于该过程内容较多,因此无法在一篇文章中叙述完成,我们将采用分回合的方式来逐步分解其过程。
在本回合中,我们暂时停留在win下对小泥鳅进行初改造,我们将讨论学习:
1、什么小泥鳅,为什么是小泥鳅
2、对小泥鳅的风险性、成功率的分析,以及促使成功的要素有哪些
3、对MS.NET与Mono使用相同数据库驱动器前提下的数据访问层改造。
本文中的代码已经托管到GitHub(https://github.com/xiaodiejinghong/Loachs4Mono)中,有兴趣的读者可以点击打开下载,当然各位读者也可以点击这里获得包括原始代码包和托管代码的打包。
1、什么是小泥鳅,为什么是小泥鳅
本文中,不想用过多的话语,一句话:小泥鳅,Loachs,是一款开源的个人博客系统,官网:http://www.loachs.com/,原作者:沩水老农。
至于为什么选择小泥鳅,基于以下三个方面:
1、近期内可能需要用到一个个人博客系统。
2、界面非常经典,基本上可以马上上手使用,也挺符合在下的审美观。
3、早前一段时间就通过该系统,并且暂时对网上有哪些开源的个人博客系统不太清楚。
嘿嘿,说了半天还是个人原因,勿拍砖哈。
2、对小泥鳅的风险性、成功率的分析,以及促使成功的要素有哪些
当我们决定去干一件事的时候,我们需要先考虑它的可行性,像“把太阳用弓箭射下来”之类的神话般的事情我们不会做,同样的,如果代码里面遍布WCF或者Entity FrameWork的项目,我们就无谓自我折腾了,即使真的成功了,也是杀敌一千自损八百,相当的不值得。
而对于小泥鳅来说,有几点则是非常关键的:
第一、它的FrameWork版本仅仅为FrameWork 2.0,没错,只是2.0,并没有采用最新版的FrameWork。这点是根本,倘若小泥鳅采用的是FrameWork 4.5或以上,这就麻烦了,要知道,微软“刷版本”的速度极快,早在前两天ASP.NET MVC 5.1和WebAPI 2.1就已经发布,可是我们扪心自问一下,自己或许连MVC 5.0的文档还没有看多几份,VS 2012 还没办法通过独立的安装方式得到MVC 5.0 的模板。同样的,纵使Mono团队的办事效率再高,也很难完美的跟上微软的节奏。因此,一旦小泥鳅使用了Mono还不支持的Framework版本,那么后面的东西都不用玩了。
第二、我们看一下小泥鳅的项目组织机构:

抛开那个不可用且不影响系统的Loachs.Build,小泥鳅系统中包含了:一个包含页面、css、js等与用户直接做交互的Web层,一个包含系统业务逻辑、工具类以及数据访问接口的核心代码区core层,以及一个实现core层中数据访问接口的数据访问层。相当的清晰明了。当我们想要对小泥鳅进行二次开发,修改它支持的数据库的时候,只需增加多一个实现core层数据访问接口的类库,即可完成对其他数据库的支持。
第三、再看看现有的数据访问层“Loachs.Data.Access”,我们需要的SQL语句都在里面,我们在制作其他数据库的访问层的时候,只需要把当前访问层的SQL语句稍微修改,让它在其他数据库中成功的跑起来即可,而由于标准的SQL语句的关系,我们所需要耗费的工作量大大的减少。
第四、由于FrameWork版本的关系,整套系统中没有出现在Linux.NET中知名的坑(如WCF、Entity FrameWork等),同时因为小泥鳅是一个相对独立的系统,没有与操作系统发生严重的关联关系,没有直接的调用到操作系统的API,我们无需对系统发生大规模的改造。
最后、代码中对文件、对类、对URL基本上编码大小写敏感(个别除外),我们无需花更多的时间进行修正(当然,我们也可以在Jexus中设置Mono,让Linux.NET不区分大小写)。
综上所述,对小泥鳅的改造风险较低,成功率较高,值得改造。
3、对MS.NET与Mono使用相同数据库驱动器前提下的数据访问层改造
相信很多的读者会或多或少的把MS的.NET与Mono作关联,把两者之间的动态库进行对等,其实这并不然,虽然对于大部分的库文件来说,两者之间是可以通用的,但是仍然有不少的库是需要加以区别的。在本小节中,我们先从通用的库入手,最大限度的完成初始的工作。

我们先添加一层MYSQL的类库

然后用Nuget安装上我们的驱动。
接着建立我们的Mysql数据库,各位读者可以通过手写、使用工具或者最简单的执行托管代码中“app_data"目录中的脚本进行创建(注意别漏了表的主键和自增)。
然后就是非常低级的拷贝代码、改代码工序,此处就不花费文字来说明了。
只是有几个地方需要注意一下的:
(1)、Linux中有大小写敏感,同样在MySQL中也不例外,小心你的表名和字段名
(2)、在"Loachs.Data.Access"中,表名和字段名都有中括号括起来了,记得要清除一下
(3)、分页功能在MySQL比较简便,不用top,直接使用limit即可
改好了之后,在”Loachs.Core“中”Data/DataAccess.cs“文件的path修改为”Loachs.Data.MYSQL“即可。

然后编译,在vs自带的调试web服务器中发布。

正常运作即可,非常简单,跟在windows中开发一模一样。
至此,本回合到此先告一段落,不知各位读者是否由此感觉:“这跟开发普通的.NET根本没有任何差别”。是的,本就没有太大的差别,只要开发时多加一个心眼,多注意编码的规范,其余的就没什么太大的要求了。Linux.NET并不是什么遥不可及的东西,只要稍加动手,你很快就会沉浸在其中了。
在下回合中,我们将会把我们在Windows中改好的项目发布到Linux中,并对它运行时所出现的问题进行修复,我们将不再依赖于Visual Studio(事实上也无法依赖了),通过一些其他的小技巧来定位以及解决我们的问题。
Linux.NET实战手记—自己动手改泥鳅(上)的更多相关文章
- Linux.NET实战手记—自己动手改泥鳅(下)
在上回合中,我们不痛不痒的把小泥鳅的数据库从只能供在Windows下运行的Access数据库改为支持跨平台的MYSQL数据库,毫无营养的修改,本回合中,我们将把我们修改后得来的项目往Linux中部署. ...
- Linux.NET学习手记(7)
前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在 ...
- Linux.NET学习手记(8)
上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...
- 关于《Linux.NET学习手记(8)》的补充说明
早前的一两天<Linux.NET学习手记(8)>发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统.文中我们还直接学习如何直接操作OW ...
- 嵌入式Linux启动优化手记2 U…
参考一下 原文地址:U-boot优化">嵌入式Linux启动优化手记2 U-boot优化作者:ZhaoJunling 既然不能使用新的U-boot,那就优化一点是一点,慢慢干吧. 1. ...
- LR添加Windows和Linux压力机实战
添加Windows和Linux压力机实战 既然Controller是LoadRunner的“心脏”,那么压力产生也必然是它发起的,通过压力机来对被测系统产生压力.一般压力机分为Windows和Linu ...
- Linux系统实战项目——sudo日志审计
Linux系统实战项目——sudo日志审计 由于企业内部权限管理启用了sudo权限管理,但是还是有一定的风险因素,毕竟运维.开发等各个人员技术水平.操作习惯都不相同,也会因一时失误造成误操作,从而 ...
- Linux+Redis实战教程_day01_Linux介绍与安装
1.Linux介绍(了解) 1.1.Linux和Windows的区别 Linux是一款操作系统.正规开发 服务器项目部署都是放在Linux操作系统上. Windows一款操作系统,民用操作系统.娱乐. ...
- SpringSecurity权限管理系统实战—四、整合SpringSecurity(上)
目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战-三 ...
随机推荐
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...
- 2015 西雅图微软总部MVP峰会记录
2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...
- 如何优雅的使用RabbitMQ
RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具.消息队列的使用场景大概有3种: 1.系统集成,分布式系统的设 ...
- “不给力啊,老湿!”:RSA加密与破解
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 加密和解密是自古就有技术了.经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫 ...
- 玩转spring boot——MVC应用
如何快速搭建一个MCV程序? 参照spring官方例子:https://spring.io/guides/gs/serving-web-content/ 一.spring mvc结合thymeleaf ...
- ASP.NET Core 中文文档 第五章 测试(5.2)集成测试
原文: Integration Testing 作者: Steve Smith 翻译: 王健 校对: 孟帅洋(书缘) 集成测试确保应用程序的组件组装在一起时正常工作. ASP.NET Core支持使用 ...
- HTML5 程序设计 - 使用HTML5 Canvas API
请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...
- windows 7(32/64位)GHO安装指南(系统安装篇)~重点哦!!~~~~
经过了前三篇的铺垫,我们终于来到了最重要的部分~~如果没看过前几篇的小伙伴们,可以出门右转~~用十几分钟回顾一下~~然后在看这篇会感觉不一样的~~~~ 下面让我们来正式开始吧 我们进入大白菜的桌面是酱 ...
- win10电脑优化
Windows10必做的优化 --道心 关闭服务 右键点击"此电脑",选择"管理",进入"计算机管理"窗口. 在左侧的菜单选择"服 ...
- 用javascript写星际飞机大战游戏
在github里看到了个不错的脚本游戏,决定亲自动手来写,效果如下 下面是代码的思路分享 把整个代码理解消化确实不容易,但是如果你坚持看完相信你一定会有收获 如果没兴趣可以直接点击下面的链接 复制代码 ...