将 Reporting Starter Kit 转换为使用 Mono/MySQL






3.69/5 (9投票s)
2005 年 10 月 1 日
3分钟阅读

28978

411
将 ASP.NET 报表入门套件移植到在 Linux 系统上使用 Mono、MySQL 和 Apache。
使用的工具
- MySqlConnector 3.51
- MySQL 5.0.13
- mono 1.1.9.1
- mod_mono 1.1.9.1
- apache 2.0.54
- xsp 1.1.9.1
- php 5.0.5 (可选)
- phpmyadmin 2.6.4-pl1 (可选)
系统设置
我最初使用 RedHat Linux Fedora Core 4 作为我的操作系统,并选择了安装所有组件。在遇到一些安装问题后,我最终删除了我需要的所有软件包,以便我可以从源代码安装它们。具体来说,我删除了 MySQL、Apache (HTTPD) 和 PHP (以及所有依赖项)。接下来,我按照以下顺序安装:
- MySQL
- PHP
- Apache
- Libgdiplus
- Mono
- XSP
- mod_mono
(请参阅您的系统上每个安装的说明。) 别忘了修改您的 httpd.conf 以使用 mod_mono。
LoadModule mono_module modules/mod_mono.so
AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd
数据转换
感谢一个很棒的工具 MSSQL2MySql,我能够相当轻松地将所有表和数据转换为 MySQL 风格。剩下的就是存储过程了。
现在,这正是我选择 MySQL 5.0 的原因。即使它处于 beta 阶段,它现在也支持存储过程。但有一点需要注意的是,目前,mysqldump 不会转储过程,尽管他们计划在未来这样做。存储过程的转换过程并不困难。通过 MySQL 网站上的广泛文档,只需查阅哪个函数转换为什么函数即可。我遇到的主要变化是没有 DatePart
函数可用。相反,我不得不使用 Extract
。
此外,如上所述,phpmyadmin 是一个有用的工具;它是一个 PHP 网站,为您提供 MySQL 数据库的前端。它对于运行脚本、修改表等非常有用。我用它来导入 MSSQL2MySql 创建的数据文件。
代码转换
我承认我在代码移植方面作弊了。MySQL 不支持参数 Disconvery,所以我用一个简单的 switch
语句替换了该代码,该语句将过程名称转换为参数名称。此外,我在这里使用了 MySqlConnector,并将所有对 System.Data.SqlClient
的引用更改为 MySql.Data.MySqlClient
。就这些!
ASPX 转换
现在这很痛苦。图像、文件名等都不一致。所以我基本上重命名了每个出现问题的人,以便它使用小写字母。就像我之前说的,这并不难,但花了一些时间。
安装
就安装此应用程序而言,您应该按照以下步骤操作
- 将文件解压缩到您选择的目录。(例如:/var/www/aspnet/reports)
- 修改您的 httpd.conf 并添加报告应用程序
LoadModule mono_module modules/mod_mono.so MonoApplications /reports:/var/www/aspnet/reports <Location /reports> SetHandler mono </Location> AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd
- 启动/重新启动您的 Apache 服务器 (/etc/init.d/httpd restart)。
考虑到 Linux 的性质,以及它的许多风味和安装风格,我认为我无法开始详细列出安装或设置它的每一种可能的方式。但是欢迎提出任何问题,我会尽快回复您。上面给出的所有站点都有出色的文档。(这就是我弄清楚的方式!)
问题
我遇到的最大问题只是设置系统。一旦完成,最大的问题是文件名大小写的不一致,以及手动编写存储过程。但我认为,如果有人编写一个应用程序使其可移植,使用 mono 会很容易。他们确实在开发方面做得很好。