成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解在Mono中如何創(chuàng)建ASP.NET程序

開(kāi)發(fā) 后端
本文將討論的是Mono中如何創(chuàng)建ASP.NET程序,希望通過(guò)本文能讓大家對(duì)理解這個(gè)開(kāi)源的.NET框架有所幫助。

我們?cè)P(guān)注過(guò).NET開(kāi)源項(xiàng)目Mono,這只上躥下跳的可愛(ài)猴子,有時(shí)也不太招人待見(jiàn)。已經(jīng)有人大聲疾呼要封殺這只猴子,本文還是從純技術(shù)的角度,為大家分析Mono中如何創(chuàng)建ASP.NET程序,希望對(duì)大家有所幫助。

一只可愛(ài)的猴子:

#T#

一次偶然的機(jī)會(huì)碰到這只猴子,并在工作中也用到它了。現(xiàn)將自己的使用經(jīng)驗(yàn)分享與此(以O(shè)penSUSE為例介紹)。

對(duì)于不熟悉Mono的朋友來(lái)說(shuō),Mono就是.Net在Linux和其它操作系統(tǒng)上的實(shí)現(xiàn)(Unix、Mac、iphone、Windows...)。Mono的官方網(wǎng)站是:http://www.mono-project.com

嚴(yán)格來(lái)講,Mono是一個(gè)開(kāi)源的、跨平臺(tái)的C#語(yǔ)言和其CLR的實(shí)現(xiàn),并與微軟的.NET二進(jìn)制兼容。很繞口吧,這是Mono官方網(wǎng)站寫(xiě)的:An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET。

Mono最新的版本是Mono 2.6, MonoDevelop最新的版本是MonoDevelop 2.2

說(shuō)到Mono,不能不提Miguel De Icaza,這位大牛是Mono項(xiàng)目的發(fā)起者,此人也是GNome的創(chuàng)始人之一,并創(chuàng)建了Ximian公司,此公司連同Mono后被Novell公司收購(gòu),并擔(dān)任Novell公司開(kāi)發(fā)者平臺(tái)副總裁,這是這位大牛的博客http://tirania.org/blog/ 。Novell公司是Mono的贊助者和主推者,并在其桌面版Linux OpenSUSE將Mono作為默認(rèn)配置,更要命的是,Novell也將Mono作為其服務(wù)器版Linux Enterprise的默認(rèn)配置,由此可見(jiàn)Novell的雄心勃勃。

只談Mono似乎是不夠的,和.NET一樣,Mono也有與Visual Studio一樣強(qiáng)大的集成開(kāi)發(fā)環(huán)境IDE

MonoDevelop。MonoDevelop大大的提升了開(kāi)發(fā)效率,這也是選擇Mono的主要原因。

根據(jù)我的想法,現(xiàn)在總結(jié)一下Mono的使用場(chǎng)合:

1. 與其它語(yǔ)言相比更熟悉.NET或熱愛(ài).NET,且需要在Linux做開(kāi)發(fā)(我就是屬于這種情況^_^)

2. 節(jié)省開(kāi)發(fā)成本,因?yàn)楣釼isual Studio就比Windows賣(mài)的還貴,而且價(jià)格還要受License限制,當(dāng)然,盜版猖獗的中國(guó)大陸,開(kāi)發(fā)似乎是零成本,可以說(shuō)沒(méi)幾個(gè)公司用的是正版的Visual Studio開(kāi)發(fā)。這也是Mono在中國(guó)不被看重的原因,大家都只是因?yàn)樾缕娑鴮?duì)Mono閑聊一番。

3. 移植Windows上的.NET程序到Linux上

也許有人擔(dān)心Mono的穩(wěn)定性,其實(shí)國(guó)外已有很多Mono開(kāi)發(fā)的應(yīng)用,具體可以參考http://www.mono-project.com/Companies_Using_Mono,這里不僅有小的桌面工具,也有服務(wù)器級(jí)的應(yīng)用。

也有人擔(dān)心Mono的版權(quán)問(wèn)題,由于C#已經(jīng)是國(guó)際標(biāo)準(zhǔn),問(wèn)題主要集中在ADO.NET和WinForm上。目前微軟是與Novell在Mono上進(jìn)行著合作,但不能保證將來(lái)微軟的威脅。當(dāng)然,Novell也有自己的措施來(lái)處理。比如,采用GTK#編寫(xiě)GUI程序。但微軟也提出了一項(xiàng)“Community Promise”的專(zhuān)利許可,并與2009年7月6日正式apply(不知道怎么翻譯),其針對(duì)ECMA C# 和 ECMA CLI standards。具體參考http://www.mono-project.com/news/archive/2009/Jul-06-1.html和http://www.microsoft.com/interop/cp/default.mspx

當(dāng)然,Mono也包含ASP.NET,因?yàn)閃indows帶有Web服務(wù)器IIS,Mono也自帶一個(gè)叫XSP輕量級(jí)的Web服務(wù)器,XSP也是用100%純C#實(shí)現(xiàn)的。我認(rèn)為XSP主要用在實(shí)驗(yàn)室或小型網(wǎng)站,其最大的優(yōu)點(diǎn)是能在MonoDevelop中進(jìn)行調(diào)試。若做商用的網(wǎng)站或Web服務(wù),可以考慮Apache+mod_mono方式,mod_mono是為Mono的ASP.NET開(kāi)發(fā)的用于Apache上的模塊,其功能類(lèi)似IIS中的wp_aspnet。

Mono幫助文檔:由于Mono中文資料比較少

對(duì)于Mono開(kāi)發(fā)過(guò)程中遇到問(wèn)題,可以查看Mono的在線(xiàn)文檔http://mono-project.com/Start,或者去Mono Forum發(fā)帖http://go-mono.com/forums/(先google一番,因?yàn)樽约河龅降膯?wèn)題別人已經(jīng)遇到過(guò))

若在Linux中使用Mono,可以采用在本地(Windows)安裝Linux虛擬機(jī)或者使用XManager遠(yuǎn)程到Linux服務(wù)器2中方式。

1-在本地安裝Linux虛擬機(jī):

安裝VmWare WorkStation

下載地址:http://www.vmware.com/cn/

也可以下載含有Mono的虛擬機(jī)鏡像文件http://www.go-mono.com/mono-downloads/download.html,這樣就可以直接安裝免費(fèi)的VM Player就可以了,不用再創(chuàng)建并安裝虛擬機(jī)了。

安裝虛擬機(jī)前,需要進(jìn)入BIOS,設(shè)置VIRTULIZATION 為ENABLED

2-如果Linux服務(wù)器在遠(yuǎn)程的話(huà),需在本地安裝Xmanager 并在遠(yuǎn)程Linux上配置XManager,在Linux上配置Xmanager如下所示:

1)修改運(yùn)行級(jí)別為5,可先運(yùn)行runlevel命令,如果輸出 N 5就不用改了,若不是,修改/etc/inittab,改變r(jià)unlevel為5,例如

 

  1. [root@sys]# cat /etc/inittab  
  2. id:5:initdefault: 

 

2)編輯/etc/X11/xdm/Xaccess,去掉這一行的注釋?zhuān)?/p>

 

  1. # * #any host can get a login window 

改為

 

  1. * #any host can get a login window 

3)編輯/etc/X11/xdm/xdm-config,注釋掉這一行:在displayManager.requestPort:0前面加上一個(gè)!號(hào),結(jié)果如下

DisplayManager.requestPort: 0

改為

!DisplayManager.requestPort: 0

4)編輯/etc/opt/gnome/gdm/gdm.conf,在[xdmcp]部分,修改Enable為true,

 

  1. [xdmcp]  
  2. Enable=0(或false) 

 

改為

 

  1. [xdmcp]  
  2. Enable=1(或true) 

 

取消這一行的注釋?zhuān)?/p>

#Port=177

改為

Port=177

5)編輯/etc/sysconfig/displaymanager,有兩個(gè)相關(guān)變量:DISPLAYMANAGER_REMOTE_ACCESS和DISPLAYMANAGER_ROOT_LOGIN_REMOTE,根據(jù)自己的需要進(jìn)行修改。

6)最后,如果我們的Linux機(jī)器配置有防火墻,為防止防火墻將通過(guò)177端口(即xdmcp服務(wù))的數(shù)據(jù)過(guò)慮,我們必須加上如下的規(guī)則:

iptables -A INPUT -p udp -s 0/0 -d 0/0 --dport 177 -j ACCEPT

7) rcxdm restart

本地xmanager的設(shè)置:

1,運(yùn)行xbrowser。

2,new一個(gè)新的session

3,選擇XDMCP

4,Method中根據(jù)自己與主機(jī)所處網(wǎng)絡(luò)類(lèi)型設(shè)置,比如是否是局域網(wǎng)等等

如果自己與主機(jī)不在同一網(wǎng)段,Method設(shè)置為XDM Query

host中寫(xiě)入linux服務(wù)器的ip地址port默認(rèn)177

5,next->next->finish

如果連接不上,請(qǐng)輸入命令 netstat –ln | grep 177,查看177端口是否處于監(jiān)聽(tīng)狀態(tài)。

安裝Mono

由于OpenSUSE或SUSE Enterprise默認(rèn)安裝了某一版本的Mono,如果想要用最新版本Mono的話(huà),不需卸載以前的版本,直接安裝新版本的Mono即可。

安裝Mono可以采用以下2種方式:

1-用YAST在線(xiàn)升級(jí),這種方式適合電腦連接到Internet上。

打開(kāi)YAST->軟件管理,選擇所有和Mono有關(guān)的安裝包,進(jìn)行安裝。

若采用其它安裝源,則打開(kāi)YAST->安裝源,添加新的安裝源。

安裝源

2-下載rpm包到本地然后升級(jí)

首先到http://ftp.novell.com/pub/mono/download-stable/SLE_11/下載所需要的版本和文件的rpm包到本地目錄mono_full中。

升級(jí)

 

安裝mono_full中的文件,步驟如下:

  1. 打開(kāi)YAST

  2. 打開(kāi)“安裝源”

    打開(kāi)安裝源

     

  1. 點(diǎn)擊“添加”,選擇“包目錄”,瀏覽到mono_full目錄的地址(包括mono_full),若彈出窗口,點(diǎn)擊“繼續(xù)”

    添加

     

  1. 不要選擇“與Zenworks同步更改”,即把“叉”去掉

  2. 點(diǎn)擊“完成”

  3. 打開(kāi)“軟件管理”

  4. 在左上角的“過(guò)濾器”中選擇“安裝源”

  5. 在下面的窗口中選擇剛才創(chuàng)建的安裝源

    窗口中的安裝源

     

  1. 選擇菜單“軟件包”->“此列表中的全部?jī)?nèi)容”->“安裝”

  2. 選擇右下角的“接受”

在彈出的窗口中在各項(xiàng)均選擇“僅在此忽略此需求”

彈出窗口

點(diǎn)擊“確定”,在彈出的窗口中點(diǎn)擊“繼續(xù)”

確定

安裝完成后,可以打開(kāi)MonoDevelop看看成果。^_^

安裝完成

 

Mono的組成文件

下面介紹一下Mono各個(gè)模塊在Linux中的路徑,包括GAC文件夾:

Mono運(yùn)行時(shí)環(huán)境runtime

/usr/lib/mono/1.0

/usr/lib/mono/2.0

/usr/lib/libmono.so

/usr/lib/libmono.so.0.0.0

/usr/lib/libmono.so.0

/usr/bin/mono

/usr/bin/mono32

/usr/bin/mono-find-provides

/usr/bin/mono-find-requires

Mono編譯環(huán)境

/usr/bin/mcs

/usr/bin/gmcs

/usr/lib/mono/1.0/mcs.exe

/usr/lib/mono/1.0/mcs.exe.config

/usr/lib/mono/2.0/gmcs.exe

/usr/lib/mono/2.0/gmcs.exe.config

/usr/share/doc/packages/sensors/chips/bmcsensors

/usr/share/man/man1/mcs.1.gz

/usr/share/vim/vim64/print/dec-mcs.ps

Mono配置文件

/etc/mono/1.0/machine.config

/etc/mono/2.0/machine.config

Mono GAC文件

/usr/lib/mono/gac/

MonoDevelop安裝路徑

/usr/lib/monodevelop/

安裝apache2和mod_mono

與安裝Mono一樣,將apache2和apache2-mod_mono安裝上。

開(kāi)發(fā)ASP.NET或Web Serives程序

打開(kāi)MonoDevelop,新建一個(gè)ASP.NET程序,并報(bào)存在/home/mazhi/cmd目錄下

新建ASP.NET程序

 

配置apache2

打開(kāi)apache2的config文件:/etc/apache2/httpd.conf,在里面加上以下行:

Include /etc/apache2/mod_mono.conf

并添加以下行:

 

  1. Alias /website /home/mazhi/cmd  
  2. MonoApplicationsConfigFile website /home/mazhi/cmd/website.webapp  
  3. MonoServerPath website "/usr/local/bin/mod-mono-server2"  
  4. <Location /website> 
  5. Allow from all  
  6. Order allow,deny  
  7. SetHandler mono  
  8. MonoSetServerAlias website  
  9. </Location> 

 

具體配置請(qǐng)參考http://www.mono-project.com/Mod_mono

啟動(dòng)Apache服務(wù)

sudo /sbin/service apache2 restart

注意:在apache部署asp.net程序時(shí),asp.net程序的所有層次的文件夾和文件的other權(quán)限都必須配置Execute權(quán)限,例如將/home/mazhi/cmd所有層次的文件夾和文件的other權(quán)限都配置Execute權(quán)限

另外,如果在程序中使用log4net的時(shí)候,將包含log文件的所有層次的文件夾的other權(quán)限配置write權(quán)限

訪(fǎng)問(wèn)Oracle數(shù)據(jù)庫(kù)的問(wèn)題

如果ASP.NET程序訪(fǎng)問(wèn)Oracle數(shù)據(jù)庫(kù),存在以下2種可能的情況,1是ASP.NET與Oracle安裝在同一臺(tái)機(jī)器上,2是ASP.NET與Oracle安裝在不同的機(jī)器上。如果是第2種情況,則需要安裝 instantclient的Oracle數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件。在Oracle的官方網(wǎng)站下載basic-11.1.0.70-linux-x86_64.zip或oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm進(jìn)行安裝。例如安裝在/opt/oracle/目錄中。

添加Oracle數(shù)據(jù)連接庫(kù)文件

安裝后,/opt/oracle/oradb/home/lib 存放Basic和sqlplus的各種庫(kù)文件,在/etc/ld.so.conf文件中添加路徑/opt/oracle/oradb/home/lib,還有就是在此目錄下為libclntsh.so.11.1庫(kù)文件建個(gè)軟連接

ln -s libclntsh.so.11.1 libclntsh.so

讓代碼連接動(dòng)態(tài)庫(kù)的時(shí)候能找到庫(kù)文件。再執(zhí)行l(wèi)dconfig命令

配置Oracle數(shù)據(jù)庫(kù)環(huán)境變量

系統(tǒng)級(jí)配置在/etc/profile文件中

用戶(hù)級(jí)配置在/root/.bash_profile或/home/someuser/.bash_profile文件中

根據(jù)需要,在以上2個(gè)文件中的1個(gè)文件中添加以下行:

 

  1. ORACLE_BASE=/opt/oracle/oradb; export ORACLE_BASE  
  2. ORACLE_HOME=$ORACLE_BASE/home;export ORACLE_HOME  
  3. ORACLE_SID=imapdb;export ORACLE_SID  
  4. NLS_LANG=American_america.zhs16gbk;export NLS_LANG  
  5. PATH=$ORACLE_HOME/bin:$PATH;export PATH  
  6. TMP=/opt/oracle/tmp  
  7. TMPDIR=/opt/oracle/tmp  
  8. export TMP TMPDIR  
  9. umask 022 

 

解決連接Oracle數(shù)據(jù)庫(kù)出現(xiàn)Could not allocate the Oracle environment錯(cuò)誤

Mono ASPX鏈接Oracle數(shù)據(jù)庫(kù)出錯(cuò)“Could not allocate the Oracle environment“

修改mod-mono-server的腳本文件,用gedit打開(kāi)/usr/bin/mod-mono-server2文件,添加以下行:

 

  1. ORACLE_BASE=/opt/oracle  
  2.  
  3. ORACLE_HOME=$ORACLE_BASE/9.2  
  4.  
  5. NLS_LANG=POLISH_POLAND.EE8MSWIN1250  
  6. LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH  
  7. LIBPATH=$ORACLE_HOME/lib  
  8. LD_LIBRARY_PATH_32=$ORACLE_HOME/lib32  
  9. PATH=$PATH:$ORACLE_HOME/bin  
  10. LD_ASSUME_KERNEL=2.4.19  
  11. LANG=pl_PL.iso88592  
  12. export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH LD_LIBRARY_PATH_32 PATH LD_ASSUME_KERNEL NLS_LANG LIBPATH  
  13. LANG  
  14. before line  
  15. exec /usr/local/bin/mono $MONO_OPTIONS "/usr/local/lib/mono/2.0/mod-mono-server2.exe" "$@" 

 

這樣就可以連接到Oracle數(shù)據(jù)庫(kù)了。

原文標(biāo)題:在Mono中創(chuàng)建ASP.NET程序

鏈接:http://www.cnblogs.com/ibrahim/archive/2010/01/11/asp-net-mono-linux.html

責(zé)任編輯:彭凡 來(lái)源: 博客園
相關(guān)推薦

2009-12-22 09:54:08

ASP.NET

2010-10-09 08:41:40

Mono 2.8

2009-07-29 15:51:29

ASP.NET中執(zhí)行w

2009-07-23 13:26:21

2009-03-13 09:48:33

ASP.NETAjaxJQuery

2009-07-29 16:08:07

ASP和ASP.NET

2009-08-04 13:38:36

ASP.NET用戶(hù)控件

2009-07-23 14:25:03

ASP.NET 2.0

2009-07-22 16:25:41

ASP.NET AJA

2009-07-28 16:57:50

ASP.NET Ses

2009-07-24 10:14:22

ASP.NET開(kāi)發(fā)

2009-08-05 11:14:33

ASP.NET ISA

2009-07-23 13:19:51

2009-08-13 11:44:25

ASP.NET中的多種

2009-07-28 10:31:47

調(diào)試SQL ServeASP.NET程序

2009-07-23 13:09:23

2009-07-29 10:30:53

Web應(yīng)用程序ASP.NET

2009-07-29 13:57:53

創(chuàng)建SlideShowASP.NET

2009-08-19 13:44:00

ASP.NET Lis

2009-07-28 13:39:44

加載ViewStateASP.NET
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产高清视频在线播放 | av一级毛片| 免费观看黄 | 久久伊人久久 | 精品欧美 | 亚洲天堂av网 | 九九热在线视频免费观看 | 色就干| 国产 欧美 日韩 一区 | av一二三四 | 国产一区二区精品在线观看 | 亚洲一区二区不卡在线观看 | 欧美aⅴ在线观看 | 欧美精品1区2区3区 免费黄篇 | 欧美人人 | 欧美free性 | 盗摄精品av一区二区三区 | 亚洲久久 | 91成人在线视频 | 黄视频免费 | 久久久一区二区 | 国产精品一区二区不卡 | 国产精品观看 | 日韩成人免费av | 成人在线视频免费观看 | 精品一级| japanhd成人 | 国产1区| 91精品国产乱码久久久久久久 | 欧洲一区视频 | 九九视频网 | 久久久久国产一区二区 | 四季久久免费一区二区三区四区 | 日本中文在线 | 国产免费一区二区三区免费视频 | 午夜视频在线播放 | 亚洲精品免费在线观看 | 国产成人福利在线观看 | 久久男人 | 国产精品视频一二三区 | 久久久久久久久99 |