播放器框架A3框架好还是A9框架好

【图文】第四讲
偏好与框架效应_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
偏好与框架效应
上传于||暂无简介
大小:1.66MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢主题帖子积分
新手上路, 积分 46, 距离下一级还需 4 积分
新手上路, 积分 46, 距离下一级还需 4 积分
mark,很不错的样子
站长推荐 /6
about云|新出视频,openstack零基础入门,解决你ping不通外网难题
云计算hadoop视频大全(新增 yarn、flume|storm、hadoop一套视频
视频资料大优惠
大数据零基础由入门到实战
阶段1:hadoop零基础入门基础篇
阶段2:hadoop2入门
阶段3:大数据非hadoop系列课程
阶段4:项目实战篇
阶段5:大数据高级系列应用课程
阶段6:工作实用系列教程
等待验证会员请验证邮箱
新手获取积分方法
Powered by【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(4)对前面的一些问题汇总和总结
来源:博客园
声明:本系列为原创,分享本人现用框架,未经本人同意,禁止转载!
希望大家好好一步一步做,所有的技术和项目,都毫无保留的提供,希望大家能自己跟着做一套,还有,请大家放心,只要大家喜欢,有人需要,绝对不会烂尾,我会坚持写完~
如果你感觉文章有帮助,点一下推荐,让更多的朋友参与进来,也是对本人劳动成果的鼓励,谢谢大家!由于还要工作,所以基本都是牺牲午休时间来写博客的,写博客呢不是简单的Ctrl+C、Ctrl+V,我是要挨着做一遍的,这也是对大家负责,所以有些时候更新不及时,或者问题没有及时解答,希望大家谅解,再次感谢大家!!
因为我引用了许多以前积累的类库,所以有些东西是重复的(后来更新),有些东西是过时的,包括我写的代码,希望大家不要纯粹的复制,取其精华去其糟粕&_&。
在项目最后我会把每个部分、每个阶段的Demo提供下载给大家,其实,如果跟着做完,并且剔除掉了我代码不好的地方,你也不需要这些Demo了,是吧~
索引

简述
今天我们对前3章的问题总个汇总,对一些东西做个简单的总结,相比大家到第3章发现编辑器报了很多错误了,不要担心 那是正常的,因为有很多类库我还没有发布。
项目准备
我们用的工具是:VS 2013 + SqlServer 2012 + IIS7.5
希望大家对ASP.NET MVC有一个初步的理解,理论性的东西我们不做过多解释,有些地方不理解也没关系,会用就行了,用的多了,用的久了,自然就理解了。
项目开始
一、我们首先公布一些第3章用到的类库(无私奉献了~~~)

 
第一个 CryptHelper呢,下面这个类我没有改类名字,其实这里用的是AES加密算法,这个在
里能找到,我在这再贴一下这个加密算法的代码

1 using S
2 using System.Collections.G
3 using System.IO;
4 using System.L
5 using System.Security.C
6 using System.T
8 namespace Common.CryptHelper
9 {
 10
public class DESCrypt
 11
public const string RET_ERROR = "x07x07x07x07x07";
 13
private byte[] _IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
 14
private byte[] _Key = { 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 };
 15
private const string CRYPTO_KEY = "WKMVCYUANGANG";
 16
private int CRYPTO_KEY_LENGTH = 32;
 17
private AesCryptoServiceProvider m_aesCryptoServiceP
 19
private string m_
 20
public string Message
 21
get { return m_ }
 23
set { m_message = }
 24
private bool m_containK
 26
/// &summary&
 27
/// True:密文中包含密钥
 28
/// False:密文中不包含密钥
 29
/// &/summary&
 30
public bool ContainKey
 31
get { return m_containK }
 33
set { m_containKey = }
 34
public DESCrypt()
 36
m_aesCryptoServiceProvider = new AesCryptoServiceProvider();
 38
m_containKey = true;
 39
m_message = string.E
 40
public DESCrypt(bool containKey)
 42
: this()
 43
m_containKey = containK
 45
private string Encrypt(string s_crypto, byte[] key)
 47
string s_encryped = string.E
 49
byte[] crypto,
 50
ICryptoT
 51
try
 53
crypto = string2Byte(s_crypto);
 55
m_aesCryptoServiceProvider.Key =
 56
m_aesCryptoServiceProvider.IV = _IV;
 57
ct = m_aesCryptoServiceProvider.CreateEncryptor();
 58
encrypted = ct.TransformFinalBlock(crypto, 0, crypto.Length);
 59
if (m_containKey)
 60
s_encryped += byte2HexString(key);
 62
s_encryped += byte2HexString(encrypted);
 64
return s_
 65
catch (Exception ex)
 67
m_message = ex.ToString();
 69
return RET_ERROR;
 70
/// &summary&
 73
/// 指定密钥对明文进行AES加密
 74
/// &/summary&
 75
/// &param name="s_crypto"&明文&/param&
 76
/// &param name="s_key"&加密密钥&/param&
 77
/// &returns&&/returns&
 78
public string Encrypt(string s_crypto, string s_key)
 79
byte[] key = new byte[CRYPTO_KEY_LENGTH];
 81
byte[] temp = string2Byte(s_key);
 83
if (temp.Length & key.Length)
 84
m_message = "Key too long,need less than 32 Bytes key.";
 86
return RET_ERROR;
 87
key = string2Byte(s_key.PadRight(key.Length));
 89
return Encrypt(s_crypto, key);
 90
/// &summary&
 92
/// 动态生成密钥,并对明文进行AES加密
 93
/// &/summary&
 94
/// &param name="s_crypto"&明文&/param&
 95
/// &returns&&/returns&
 96
public string Encrypt(string s_crypto)
 97
byte[] key = new byte[CRYPTO_KEY_LENGTH];
 99
m_aesCryptoServiceProvider.GenerateKey();
101
key = m_aesCryptoServiceProvider.K
102
return Encrypt(s_crypto, key);
103
private string Decrypt(string s_encrypted, byte[] key)
106
string s_decrypted = string.E
108
byte[] encrypted,
109
ICryptoT
110
try
112
encrypted = hexString2Byte(s_encrypted);
114
m_aesCryptoServiceProvider.Key =
115
m_aesCryptoServiceProvider.IV = _IV;
116
ct = m_aesCryptoServiceProvider.CreateDecryptor();
117
decrypted = ct.TransformFinalBlock(encrypted, 0, encrypted.Length);
118
s_decrypted += byte2String(decrypted);
119
return s_
120
catch (Exception ex)
122
m_message = ex.ToString();
124
m_message = "Decrypt fail.";
125
return RET_ERROR;
126
/// &summary&
129
/// 从密文中解析出密钥,并对密文进行解密
130
/// &/summary&
131
/// &param name="s_encrypted"&密文&/param&
132
/// &returns&&/returns&
133
public string Decrypt(string s_encrypted)
134
string s_key = string.E
136
byte[] key = new byte[CRYPTO_KEY_LENGTH];
137
if (s_encrypted.Length &= CRYPTO_KEY_LENGTH * 2)
139
m_message = "Encrypted string invalid.";
141
return RET_ERROR;
142
if (m_containKey)
144
s_key = s_encrypted.Substring(0, CRYPTO_KEY_LENGTH * 2);
146
s_encrypted = s_encrypted.Substring(CRYPTO_KEY_LENGTH * 2);
147
key = hexString2Byte(s_key);
149
return Decrypt(s_encrypted, key);
150
/// &summary&
152
/// 指定密钥,并对密文进行解密
153
/// &/summary&
154
/// &param name="s_encrypted"&密文&/param&
155
/// &param name="s_key"&密钥&/param&
156
/// &returns&&/returns&
157
public string Decrypt(string s_encrypted, string s_key)
158
byte[] key = new byte[CRYPTO_KEY_LENGTH];
160
byte[] temp = string2Byte(s_key);
162
if (temp.Length & key.Length)
163
m_message = "Key invalid.too long,need less than 32 Bytes";
165
return RET_ERROR;
166
key = string2Byte(s_key.PadRight(key.Length));
168
if (m_containKey)
169
s_encrypted = s_encrypted.Substring(CRYPTO_KEY_LENGTH * 2);
171
return Decrypt(s_encrypted, key);
173
}
174 
175
#region 私有方法
176
private string byte2HexString(byte[] bytes)
177
StringBuilder sb = new StringBuilder();
179
foreach (byte b in bytes)
180
sb.AppendFormat("{0:X2}", b);
182
return sb.ToString();
184
private byte[] hexString2Byte(string hex)
186
int len = hex.Length / 2;
188
byte[] bytes = new byte[len];
189
for (int i = 0; i & i++)
190
bytes[i] = (byte)(Convert.ToInt32(hex.Substring(i * 2, 2), 16));
192
return
194
private byte[] string2Byte(string str)
196
return Encoding.UTF8.GetBytes(str);
198
private string byte2String(byte[] bytes)
200
return Encoding.UTF8.GetString(bytes);
202
#endregion
204 
205
}
207 }

View Code
第二个 Enums是个枚举类 
第三个 JsonHelper 
第四个 ToolsHelper
这个暂时用到了两个类 
PageCollection.cs 我们在上一章已经讲过了,没有看到的朋友移步 
然后是 系统帮助类 Utils

添加上这些类库之后,重新生成一下解决方案,哇哦~是不是一个错误都没有了~~当然类库 不只这些,我会逐步添加完善的~~
 
二、我们对一些网友的问题 做一下汇总和总结
首先我们总结一下:
第(1)章 
我们就是创建了一个MVC项目,然后添加了两个区域,添加的这两个区域是干什么用的,在第(1)章已经解释了,在后面用到的时候大家也会一目了然。那么区域是什么?干什么用的?
MVC框架支持组织一个web应用程序到的区域,以协助你在架构较为大型的项目,让独立性较高的部分功能独立成一个MVC子网站,以降低网站与网站之间的耦合性,也可以通过区域的切割,让多人同时开发同一个项目时候,能够减少互相冲突的机会。这在一个大的项目是非常有用的,如果所有的控制器、视图和模型都在一套MVC文件夹里,会是整个项目变得结构非常不清晰,并且难以管理。每个MVC区域是有自己的文件夹结构,允许您分开管理。这使得它更显而易见哪个项目元素相 互关联应用程序的功能区域,这有助于多个开发人员同事处理项目而没有彼此胡想不干扰。区域是支持主要通过路由机制。而在我们这个项目中,我们新建了两个区域,通俗的来讲 WebPage下的Controllers、Views我们是希望他们运行网站前台用户的,而Areas我们希望是管理后台系统,在简单来说,WebPage下的登录是网站用户用的,Areas下的登录是管理员用的。
第(2)章
这一章,我们主要就是创建了个简单的用户表(管理员表),然后添加了一个ADO.NET实体数据模型。
第(3)章
这一章我们主要是用到接口,因为我们整套系统是面向接口开发的,所以对接口不熟悉的朋友可以去研究一下接口,我们后面会用到很多很多的接口。
这里呢,我把第(3)章中简单一解释接口的那段复制过来,如果还是不够清晰,请大家移步百度(话说百度搜索最近貌似有点问题),或者请比较熟悉的网友互相解释一下。
接口是个规范,是不需要方法体的,说的通俗点,有了接口如果被继承肯定会有实现,这里你只需要写方法就行了,具体的方法是如何实现的我们不管,爱怎么实现怎么实现,我只是告诉你,你要是继承我这个接口,那么我这些方法你必须实现,而且要符合我规范。这就跟领导一条批示:你给我做个上传图片的方法,返回上传成功或失败。领导就是接口,你是实现类,你在这个领导下面干活,就相当于你继承了领导,那么你必须要完成这个图片上传方法并且返回上传结果,至于你是用网上的上传方法呀还是自己写个webservice啊还是用jquery插件啊随你,领导不关心你用什么,他只关心你按照他的要求去实现这个方法。
 
对大家想说的一些话:
评论呢,我基本是挨着看的,不说100%(时间不饶人),基本都给大家回复了,首先呢,我感谢大家这么支持和关注,这是对我的鼓励,也是我的动力。
写这个系列的原因其实好简单,我也是个新手或者说刚刚脱离了新手,我们学习的时候呢,基本都是东拼西凑的,用到什么百度什么,看完这个看那个,也可能找到一些比较乐意分享的朋友的一些案例,但是第一,有些看不懂,第二,看起来很吃力。没有也没人愿意带我们一步一步做个项目,既能接收新的知识,又能对学过的做一些总结和深入。而且,好多人都不太乐意分享“自己感觉很好的技术”,这也不奇怪,谁都不想把劳动成果白白奉献,可是....博主就是这么一个喜欢“装B”的人,既然是“装B”,那么就要付出代价的,代价就是毫无保留的奉献自己的技术。(此处应该有掌声)本人不是什么大神,当然不自谦的说也不是个新手,现在5.1之后有午休时间,就利用午休时间带领大家从0开始做一个项目。收到了很多大家的支持和鼓励,这让我很欣慰,也很骄傲,同时呢,博文被一些网站抓取,有的甚至去掉了博主版权,这让人很愤慨,不过不影响继续对大家的分享,如果大家感觉写的可以,对你有所帮助,希望大家点一下推荐,如果大家感觉就是个水贴,请反对,不要客气,再次对大家表示感谢。
 
正事,汇总一下问题:
其实呢,评论不少,但是问题不是很多(因为还没讲多少东西),有些多次重复的问题呢,虽然我挨个回复了,我再统一解释一下。
(1):VS、SQL、IIS版本的问题,可能我用的版本不是很高,可能你觉得像要最新的,不想看过时的东西,这里统一说一下,我用的基本就是主流的,没有用过时的东西,因为这一系列是我现做现发布的,不是拿以前的东西来充数的。
VS(2013)的版本问题: 我考虑过 我咨询了很多技术群的朋友 现在大部分都是2013 也有2008的不过很少 因为是向下兼容的 所以更高的版本我们不考虑,而2012也是没问题的,至于2008我没试过 也不好说SQL(2012)的版本: 这个问题不大 我都是贴出T-SQL 直接执行一下就行了 方便移植的IIS6: 因为我本机是win7我用的IIS6 在服务器上是IIS7.5 也是没问题的
我的错,我用的是IIS7.5,第一篇博客是笔记本写的,笔记本是II6 后面的这段就复制了 再次感谢
菜菜灰
(2):Service类库添加引用找不到EntityFramework和EntityFramework.SqlServer
告诉你个简单的方法吧,具体正常怎么去添加,我就先不解释了 你看你的Domain类库下面 肯定有着两个引用是吧 你直接添加引用 浏览 找到Domain类库的这两个dll引用进来就好了

 
其它,还没发现什么特别的问题,至于第(3)章报错的问题,上面已经发布了需要的类库了
 
在这。。。提一下,在这个项目过程中不提供Demo下载是为了让大家边学边做,拿来主义是没有意义的,不过每一章的Demo我都打过包了,在项目结束后,我会提供各个阶段的Demo下载。
 
原创文章 转载请尊重劳动成果 
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动泡妞技巧中的框架
泡妞秘籍丨约会技巧十万个为什么
collapsItems['collapsCat-34:2'] = '';
collapsItems['collapsCat-46:2'] = '[+]
collapsItems['collapsCat-59:2'] = '';
collapsItems['collapsCat-58:2'] = '[+]
collapsItems['collapsCat-62:2'] = '';
collapsItems['collapsCat-61:2'] = '';
collapsItems['collapsCat-63:2'] = '';
collapsItems['collapsCat-44:2'] = '[+]
collapsItems['collapsCat-123:2'] = '';
collapsItems['collapsCat-64:2'] = '';
collapsItems['collapsCat-65:2'] = '';
collapsItems['collapsCat-68:2'] = '';
collapsItems['collapsCat-66:2'] = '';
collapsItems['collapsCat-67:2'] = '';
collapsItems['collapsCat-69:2'] = '';
collapsItems['collapsCat-17:2'] = '[+]
collapsItems['collapsCat-72:2'] = '';
collapsItems['collapsCat-70:2'] = '';
collapsItems['collapsCat-73:2'] = '';
collapsItems['collapsCat-74:2'] = '';
collapsItems['collapsCat-71:2'] = '';
collapsItems['collapsCat-54:2'] = '[+]
collapsItems['collapsCat-77:2'] = '';
collapsItems['collapsCat-75:2'] = '';
collapsItems['collapsCat-76:2'] = '';
collapsItems['collapsCat-79:2'] = '';
collapsItems['collapsCat-78:2'] = '';
collapsItems['collapsCat-45:2'] = '[+]
collapsItems['collapsCat-81:2'] = '';
collapsItems['collapsCat-82:2'] = '';
collapsItems['collapsCat-80:2'] = '[+]
collapsItems['collapsCat-42:2'] = '';
collapsItems['collapsCat-83:2'] = '';
collapsItems['collapsCat-1:2'] = '';
collapsItems['collapsCat-372:2'] = '';
Collapse Functions, version 2.0
*--------------------------------------------------------------------------*/
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i
&&&&&&&&&&&&&&
亚洲最多人气的把妹达人社区门户。你要的组织,其实一早就在这里。
欢迎来PUA论坛获取第一手的泡妞秘籍、约会技巧资讯、和泡妞技巧相关信息。

我要回帖

更多关于 ios第三方框架播放器 的文章

 

随机推荐