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标准

扫描二维码关注公众号,回复: 6112436 查看本文章

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
}
}

一点半了 睡觉....五一快乐

猜你喜欢

转载自www.cnblogs.com/laotian/p/10807294.html