设为首页 收藏本站
查看: 976|回复: 0

[经验分享] 可以在mono下运行的一个ajax web小程序,使用PostgreSQL作为数据库(期待MonoDevelop 2.0)

[复制链接]

尚未签到

发表于 2016-11-21 11:11:07 | 显示全部楼层 |阅读模式
  MonoDevelop 2.0 beta2终于发布了,虽然依然有BUG,翻译也很差劲,我还是决定用它做点事情,MonoDevelop 2.0 很让人期待,还记得asp.net上关于ajax的视频吧,我觉得还不错,所以我决定生产一个mono版本的的ToDo List, 或者说改造更合适一点,在这个用脑过度的时代,能省还是多省点力气吧。
    Mono 2.0 应该已经支持ajax了吧,也许是Mono 2.2, 所以问题不在于 mono 是否支持 ajax,关键在于选择什么数据源来存储数据,刚开始的时候,我想自己实现一个ObjectDataSource, 弄了半天,感觉挺复杂的。后来我觉得尽量靠近原始的实现应该更容易编写吧,我看了一下原来的 DataSet 定义 和 DataAdapter 实现,考虑自己只用实现部分就能完成任务,感觉这个主意不错,正编写的时候,我突然想:也许Visual Studio 能帮助我们实现代码,看了一下TaskDataSet的原始定义,感觉挺简洁,并且不没有强制使用Sql Server, 只是根据工厂提供者采用通用编程的方式实现代码, 我记得 Npgsql 实现了DatabaseProviderFactory, 决定让visual studio 帮助我生成代码。
    Mono 自己代的 xsd.exe 工具只能生成数据集定义,不能声称适配器类(要么是我的方法不妥当),我在 machine.config 中的System.Data配置节添加了Npgsql的数据提供者工厂说明,并且将Npgsql.dll 和 Mono.security.dll (应该是吧) 添加到全局程序集中(仅仅添加到引用中不能用,在程序的System.Data配置节中增加说明也不能被Microsoft工具感知),然后运行自定义工具,就生成了我们需要的。cs文件,保存文件,复制到Mono项目中就好。
    转到Linux平台,使用MonoDevelop创建Asp.Net工程,增加相关的引用和文件,然后运行就好了。
附加说明:
    关于数据库:数据库使用PostgreSQL,较新的版本应该都行,大部分Linux发行版应该都能安装。数据库使用pgadmin管理,大部分 Linux发行版应该都有打包的,从系统安装源应该就能下载 PostgreSQL 和 Pgadmin, 个人建议从你所使用的linux发行版的安装源处安装这些软件(光盘或者网上的安装源),从PostgreSQL官方下载可能会遇到不必要的安装麻烦。
    关于数据库访问组件(Npgsql):如果安装了Mono以及开发工具的话,你应该已经有Npgsql了,如果没有安装,可以安装mono-data套件(mono平台的一部分,各种数据库访问接口都有)或者直接去Npgsql官方下载。
    关于数据库创建:在SQL Server中使用[]限定一个标识符,意味着在访问是也必须严格按照定义来匹配,在PostgreSQL, ""的作用和[]类似,通常不要过分区分大小写能带来开发上的方便。特别地,我们希望自己强调大小写,但是不希望数据库系统过分拘谨于标识符的大小写,这样特别容易出错。很不幸(也许是万幸),如果你使用pgadmin创建数据库对象,默认它会自己加上强制限定符"", 我们可以在查询窗口中手动创建这些对象,华丽的工具在浏览和修改数据时还行,创建的时候,没有什么理由不使用代码完成。
     一个小程序,希望你能喜欢Mono, 一片沙漠,等你来开垦,等mono 2.0 final 发布的时候,我会给Mono Asp.Net 爱好者一份大礼,哈哈:)
     文件说明:images/* 一些图片,MasterPage.master 母板页,Default.aspx 唯一的页面,StyleSheet.css 样式表,TaskDataSet.Designer.cs 数据集和适配器定义,web.config 配置文件(其中包含针对Npgsql的System.Data配置节,应该没有用,放在machine.config供工具使用才好), App_Data/* 数据库脚本。
     表说明:tasks表,包含三个字段,taskid serial 类型,name char varing 类型,complete bool 类型。
     代码下载地址:http://files.cnblogs.com/mathphoenix/AspNetTestForBeta2.zip
  注意,程序运行环境:linux+mono+postgresql
  Have a lot of fun...

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303416-1-1.html 上篇帖子: 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库 下篇帖子: 对PostgreSQL中bufmgr.c 中 bufs_to_lap的初步理解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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