在树莓派上借助Mono + Jexus 布署 .Net 4.0 WebForm应用

简介: 介绍树莓派树莓派是一种微型电脑,不到300元的成本就可以拥有一个4核1G的低功耗Linux环境,并且自带了40针IO,HDMI,WIFI,USB,100M网卡,SPI显示屏接口。

介绍

树莓派

树莓派是一种微型电脑,不到300元的成本就可以拥有一个4核1G的低功耗Linux环境,并且自带了40针IO,HDMI,WIFI,USB,100M网卡,SPI显示屏接口。

img_08ace006e713c7d79bcc8419f66a109d.png
树莓派

Mono

Mono是一个由Xamarin公司所主持的自由开放源代码项目。 该项目的目标是创建一系列匹配ECMA标准(Ecma-334和Ecma-335)的.NET工具,包括C#编译器和通用语言架构。

与微软的.NET Framework(共通语言运行平台)不同,Mono项目不仅可以运行于Windows系统上,还可以运行于Linux,FreeBSD,Unix,OS X和Solaris等系统上。

所以,我们要想在树莓派上运行WebForm应用,主要就得靠它了。

Jexus

Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,以支持ASP.NET、ASP.NET CORE、PHP为特色,同时具备反向代理、入侵检测等重要功能。可以这样说,Jexus是.NET、.NET CORE跨平台的最优秀的宿主服务器,如果我们认为它是Linux平台的IIS,这并不为过,因为,Jexus不但非常快,而且拥有IIS和其它Web服务器所不具备的高度的安全性,这是政府机构和重要企业对web服务器最必要也是最重要的品质需求。

Jexus既是免费软件,也是自由软件,你可以自由发布、自由集成、自由分发,你拥用完整的使用权。

实验材料

实验过程

安装Mono

确认Raspbian版本,我的是8.0

lsb_release -a
##################################
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:    8.0
Codename:   jessie

进入MONO官网,按相关指引操作进行安装。

9.x

sudo apt install apt-transport-https dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian stable-raspbianstretch main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

8.x

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
sudo apt install apt-transport-https
echo "deb https://download.mono-project.com/repo/debian stable-raspbianjessie main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

执行安装

sudo apt install mono-devel

验证安装
1、创建/home/test目录,并进入目录
2、创建/home/test/Program.cs文件,写入以下代码

using System;
 
public class HelloWorld
{
    static public void Main ()
    {
        Console.WriteLine ("Hello Mono World");
    }
}

3、编译csc Program.csmcs Program.cs
4、执行mono Program.exe

img_03d6fae0180869734188b7feb9a1dac9.png
测试

安装Jexus

下载ARM版,解压并安装(注意:云服务器或PC装请下载对应的其它版本,不要安装ARM版

cd /home
wget https://www.linuxdot.net/down/jexus-5.8.3-arm.tar.gz
tar xzvf jexus-5.8.3-arm.tar.gz
cd jexus-5.8.3-arm
./install

安装完成

root@mc-server:/home/jexus-5.8.3-arm# ./install
Installed /usr/jexus/jxAspx.dll into the gac (/usr/lib/mono/gac)
Installed /usr/jexus/jxHost.dll into the gac (/usr/lib/mono/gac)
OK, Jexus web server has been installed to '/usr/jexus'.

默认的配置在/usr/jexus/siteconf下,是一个指向/var/www/default/目录的网站。我们在此目录下编写一个测试页面default.aspx,输出当时的日期与时间。

<%@ Page Language="C#" %>
<%=DateTime.Now%>

在树莓派上运行/usr/jexus/jws start

root@mc-server:/home# /usr/jexus/jws start
Starting ... OK

查看一下本机的 IP地址

root@mc-server:/usr/jexus# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.89  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::dba:92f0:f625:2fc9  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:a3:15:86  txqueuelen 1000  (Ethernet)
        RX packets 2082  bytes 513167 (501.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 773  bytes 94248 (92.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在浏览器输入http://192.168.10.89,观察效果

img_12fdad3ca5d35aab4f5f3a9479e7cc4a.png
image.png

延伸阅读:在树莓派上使Jexus以服务运行、开机自启

附录

mono安装的其它选择

mono-devel should be installed to compile code.

编译开发环境安装,可以在linux下编写、编译.net 应用程序

mono-complete should be installed to install everything - this should cover most cases of "assembly not found" errors.

完整安装,可以解决某些情况下出现“未找到程序集”的错误 。

mono-dbg should be installed to get debugging symbols for framework libraries - allowing you to get line numbers in stack traces.

调试符号,安装后,在错误信息的StackTrace中可以显示行号。

referenceassemblies-pcl should be installed for PCL compilation support - this will resolve most cases of "Framework not installed: .NETPortable" errors during software compilation.

可以解决某些情况下出现“Framework not installed: .NETPortable”的错误 。
ca-certificates-mono should be installed to get SSL certificates for HTTPS connections. Install this package if you run into trouble making HTTPS connections.

mono-xsp4 should be installed for running ASP.NET applications.

支持Asp.net的安装

相关文章
|
2月前
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
116 10
|
13天前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
|
2月前
|
数据采集 JSON API
.NET 3.5 中 HttpWebRequest 的核心用法及应用
【9月更文挑战第7天】在.NET 3.5环境下,HttpWebRequest 类是处理HTTP请求的一个核心组件,它封装了HTTP协议的细节,使得开发者可以方便地发送HTTP请求并接收响应。本文将详细介绍HttpWebRequest的核心用法及其实战应用。
117 6
|
3月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
152 3
|
3月前
|
前端开发 JavaScript 开发工具
跨域联姻:React.NET——.NET应用与React的完美融合,解锁前后端高效协作新姿势。
【8月更文挑战第28天】探索React.NET,这是将热门前端框架React与强大的.NET后端无缝集成的创新方案。React以其组件化和虚拟DOM技术著称,能构建高性能、可维护的用户界面;.NET则擅长企业级应用开发。React.NET作为桥梁,使.NET应用轻松采用React构建前端,并优化开发流程与性能。通过直接托管React组件,.NET应用简化了部署流程,同时支持服务器端渲染(SSR),提升首屏加载速度与SEO优化。
58 1
|
3月前
|
存储 缓存 安全
.NET 在金融行业的应用:高并发交易系统的构建与优化之路
【8月更文挑战第28天】在金融行业,交易系统需具备高并发处理、低延迟及高稳定性和安全性。利用.NET构建此类系统时,可采用异步编程提升并发能力,优化数据库访问以降低延迟,使用缓存减少数据库访问频率,借助分布式事务确保数据一致性,并加强安全性措施。通过综合优化,满足金融行业的严苛要求。
48 1
|
3月前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
52 0
|
3月前
|
开发者 API Windows
从怀旧到革新:看WinForms如何在保持向后兼容性的前提下,借助.NET新平台的力量实现自我进化与应用现代化,让经典桌面应用焕发第二春——我们的WinForms应用转型之路深度剖析
【8月更文挑战第31天】在Windows桌面应用开发中,Windows Forms(WinForms)依然是许多开发者的首选。尽管.NET Framework已演进至.NET 5 及更高版本,WinForms 仍作为核心组件保留,支持现有代码库的同时引入新特性。开发者可将项目迁移至.NET Core,享受性能提升和跨平台能力。迁移时需注意API变更,确保应用平稳过渡。通过自定义样式或第三方控件库,还可增强视觉效果。结合.NET新功能,WinForms 应用不仅能延续既有投资,还能焕发新生。 示例代码展示了如何在.NET Core中创建包含按钮和标签的基本窗口,实现简单的用户交互。
66 0
|
3月前
|
Java Spring 自然语言处理
Spring 框架里竟藏着神秘魔法?国际化与本地化的奇妙之旅等你来揭开谜底!
【8月更文挑战第31天】在软件开发中,国际化(I18N)与本地化(L10N)对于满足不同地区用户需求至关重要。Spring框架提供了强大支持,利用资源文件和`MessageSource`实现多语言文本管理。通过配置日期格式和货币符号,进一步完善本地化功能。合理应用这些特性,可显著提升应用的多地区适应性和用户体验。
40 0
|
3月前
|
开发者 C# Android开发
Xamarin 与 .NET:解锁现代化移动应用开发的超级武器——深入探讨C#与.NET框架如何赋能跨平台应用,实现高效编码与卓越性能
【8月更文挑战第31天】Xamarin 与 .NET 的结合为开发者提供了强大的平台,用于构建现代化移动应用。通过 C# 和 .NET 框架,Xamarin 可以实现一次编写、多平台运行,覆盖 iOS、Android 和 Windows。这种方式不仅节省了开发时间和成本,还保证了应用的一致性和高质量。Xamarin 是一个开源框架,专为跨平台移动应用开发设计,允许使用 C# 语言和 .NET 核心库构建原生应用,并访问各平台特定功能。微软维护的 Xamarin 是 Visual Studio 生态系统的一部分,极大地提高了开发效率。
80 0
下一篇
无影云桌面