asp.net HC架构
Posted laotian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net HC架构相关的知识,希望对你有一定的参考价值。
.net Core已经发布了 整体改变了webform和mvc开发者的习惯,最近有时间想写一套架构,几经询问无人愿写,那只好自己写写了。干了10多年的代码就算给这一行业做点贡献
前台页面(叫Page也好 叫Razor也罢)既然整个项目页面都是html不如就取名为H 意味HTML
后台如果叫Controller有点冲突,既然用C#来开发 就取名为C
HC架构主要用于前台后台交互用 不参与数据库读取部分 因为网上.net架构比较多 IBatis Mapping IOC,ORM等类的框架是在太多,所以没必要创造一套那东西
先记录一下思想和架构(以后慢慢加)
分布式asp.net HC架构
主要:IIS基本配置 web.config和Global.asax和hc.config
页面配置 在Config文件夹下hc.config中配置路径 例如D:\publish\
静态文件访问地址配置,网站域名配置,cookie,加密模式,安全字符自动过滤,集群配置,在Config文件夹下的 init.config文件夹下
1.请求类
请求分为get(查),post(增),put(改),delete(删)基于html1.0标准
2.整体架构前后台交互及分离
.net HC模型 分为H、C 前台html 代码后台c#控制基类(HCBase)
H->C get post put delete 方法直接调用类
C->H 1.直接输出固定给变量 2.Response.Write()
C->Data 自行选择 EF、ado等
html前段人员和c#开发人员分离开发 分离部署到IIS中 hc.config 关联
3.Global于web.config
文件在Global中做application_start 读所有文件夹内的目录及页面内容存入到 static List<Page>中,
Page包含页面名称,页面位置,html 三部分(因为static 所以每次发布都需要回收应用程序池)
请求入服务器配置端口 -> iis ->Global.asax -> http_begin方法中 进行Invoke找到与之相关的类入口点 带有特性[Main]的方法
4.静态资源其他站点 引入即可 HCBase处理分发集群和域名配置
5.HCBase
6.HC模型
H:即Html
<form name="form1">
单值表单标签
<input name="userName" id="userName" value="{$UserName}"/> 表示c#中有一个变量为UserName
<input name="userName" id="userName" value="{$class:UserInfo.UserName}"/>表示c#中有一个类类型的实体名为UserInfo的类 其中有UserName这个字段
多选或单选
<input type="checkbox" id="favorite" name="favorite" value="{$Favorite}"/>
<input type="checkbox" id="favorite" name="favorite" value="{$Favorite}"/>
<input type="checkbox" id="favorite" name="favorite" value="{$Favorite}"/>
上面可用<input type="checkbox" id="favorite" name="favorite" bind="{$enum:FavoriteEnum}"/>绑定内部枚举 以此类推
<input type="radio" id="sex" name="sex" value="{$sex}"/>
<input type="radio" id="sex" name="sex" value="{$sex}"/>
下拉
<select name="City" bind="{$enum:PublicEnum.CityEnum}" />//PublicEnum为命名空间 CityEnum为外部枚举类型
循环
<table>
<tr><td>Name</td><td>Age</td><td>City</td><td>Sex</td><td>IsUsed</td></tr>
{$foreach:<tr><td>{$Name}</td><td>{$Age}</td><td>{$City}</td><td>{$Sex}</td><td>{$IsUsed}</td></tr>}//循环
</table>
</form>
实际前端代码为:
<form name="form1">
<input name="userName" id="userName">
<input type="checkbox" id="favorite" name="favorite">
<input type="radio" id="sex" name="sex" >
<select name="City">
<table><tr><td>Name</td><td>Age</td><td>City</td><td>Sex</td><td>IsUsed</td></tr></table>
</form>
待开发:无刷新分页,分布式上传,文本编辑器
C:即CSharp人员开发代码
namespace 项目名称.文件目录多级
{
public class GetUserList:HCBase//页面名称GetUserList 继承HC基类
{
public string UserName;
public UserModel UserInfo;//前台绑定的公共变量 这些变量被绑定在后台代码一目了然
public string Favorite;//可以看出前台用到了用户信息实体、喜好和用户名
[Main]//页面入口特性
public void GetData(){// 页面加载函数
}
[Post]//接收Post请求
public void PostData(UserInfo userInfo){
}
[Get]//接收Get请求
public void GetSingleUserData(string userName){
}
[Put]//接收Put请求
public void GetSingleUserData(UserInfo userInfo,string userName){
}
[Delete]//接收Delete请求
public void GetSingleUserData(int userId){
Write(string);{string 输出页面字符串}
Redirect(string);
}
}
}
namespace PublicEnum
{
public enum CityEnum{
Beijing:0x0001>>1,
Shanghai:0X0001>>2
}
}
一点半了 睡觉....五一快乐
以上是关于asp.net HC架构的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 5/ASP.NET Core 1 中的关注点分离和 n 层架构
NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)
.NET/ASP.NET Routing路由(深入解析路由系统架构原理)