@博文仅供学习研究,所提供的代码希望大家慎用。请大家保护康盛创想公司以及Discuz!NT的知识产权,遵守相关协议。
首先我在这里列出一些相关的参看资料,这也是我在改造的时候参考过的东西。
Live ID
Live ID 的开发者平台
Live ID 的MSDN
http://msdn.microsoft.com/en-us/library/bb463989.aspx
示例的下载
http://www.microsoft.com/downloads/details.aspx?FamilyId=A2466ABF-9629-42D8-B991-1D3FAF2FE872&displaylang=en
刘学老师的 Live ID API的讲座
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032384439&Culture=zh-CN
K_Reverter的Accout的项目
http://www.cnblogs.com/step1/archive/2009/01/11/1373865.html
Live ID API的申请页面
https://msm.live.com/app/default.aspx (这个简洁一些)
http://go.microsoft.com/fwlink/?LinkID=130560
Discuz!NT
DNT的下载页面
http://www.comsenz.com/downloads/install
DNT官方论坛
http://nt.discuz.net/
DNT的资料页面
http://faq.comsenz.com/usersguide/nt
代震军老师的系列博文
http://www.cnblogs.com/daizhj/category/116704.html
Live ID API
1.咱先说一下 Live ID API
Live ID API,其实在很早以前就有过类似的产品,但当时微软还对这项服务还收取费用,随着MSN越来越普及,还有hotmail邮件用户的增多,以及云计算平台概念的提出,微软在去年四月份公布了自己的Live 计划,而在今年,Live又被整合到了微软的Azure云计算平台中。
Live ID API给其他的网站提供了一套身份验证极致,以及微软的联系人列表的访问。
简单地说,Live ID API 就有两个接口,一个是身份验证的login,另外就是访问联系人列表的接口。当然,我很奇怪,都一年多了,还是beta版本,而且两个版本分得特别开。我在后面会详细提到。
通过login的借口,微软的Live Server会给我的站点一个user.id。这个并不是大家想当然的用户的Live ID号。这是个类似密码的东西,他不仅仅对每一个用户是唯一的。如果你申请了Live ID API,同一个用户在你的站点上留下的User.id,和在别的使用Live ID API的网站中留下的user.id都是不同的。
而他也是我们的站点需要保留的,通过它,我们就可以验证这个用户是否权限访问我们的网站了。
2.Live ID API的大致流程
大致的流程是这样的。
1. 用户来动我们的站点,然后通过我们站点提供的地址访问一个登陆页面。
2. 用户登陆了,Live Server给我们的网站一个 user.id号
3. 我们看看,诶,这不是那个老张吗,常客常客,然后打开大门。
4. Live Server把页面返回到我们的页面,然后我们的页面对用户开放了。就这么简单。
我感觉,Live ID更像是看家狗一样。
但是同样问题也就来了。因为login的接口告诉我们的只有这个user.id。其他的呢,sorry,这里你就需要用到联系人列表了。
不知道大家去没去过开心网。在开心网上,大家输入自己的MSN账号,然后开心网就能自动导入你所有的联系人列表。
可能这样的大网站和微软都有协议,所以我们只要输入就可以了。而对于小站点来说,当你需要访问用户的联系人列表时,就需要经过用户的同意,然后Live Server就会把联系人列表返回到这个网站上了。
同样,我们也可以通过这个功能来获取每一个用户的联系信息。
所以联系人列表的接口,就给我们提供了方便。
3.Live ID API的申请,还有一些主要参数的介绍
Application Name 是你的应用的名称
Return URL 返回的地址,就是在成功登陆,或者访问地址本后,要返回的页面 不过这个在后面的实际编码过程中,都可以修改
Domain Name 这个你的应用的,域名域
Secret Key 秘密字符串,也就相当于密码了
不过使用这个API在实际操作中,并没有想象中的便利。在后面的文章我会提到的。
有朋友说,这部分讲的很乱,我承认。身份验证应该是一个很重头的地方,对于一个网站来说。而这次要引入第三方的验证极致,当然会让人比较晕。我一开始也挺糊涂,不过建议大家最好去下两个Live ID API 的sample。代码都很简单,看一遍基本上就都懂了。
Discuz!NT
1.我眼中的Discuz!NT
我想这个应该不用提了吧!虽然大家了解的更多的是她的PHP版本。但是实际上.NET的版本也是非常优秀的(他们说的)。
这里,我想说一些对于这个改造的实现来说的一些重要的内容。
a.怎么说呢!我承认,Discuz!NT的架构设计非常优秀。但是有点固步自封了一些,而且为了实现自己的一些功能,而丧失和很多其他网站兼容的便利。首先就是数据库。如果一个网站要整合Discuz!NT的论坛,除非一开始就使用Discuz!NT的数据库,不然真的做起来着实需要花一些功夫。
b.其次他并没有用很多具有.NET平台特色的东西。比如MasterPage,对于类似我这样的菜鸟,这个东西在初学的是经常要用的。当然,还有很多其他的东西。
我建议大家打开Discuz!NT的源代码,然后打开一个aspx页面。如果以前没看过,你不蒙才怪呢!
我们都知道,.NET的原理是,首先通过.NET framework对我们的aspx页面解析,然后把他们编译成html页面发送到客户端上。而Discuz!NT的可好,直接做一个大的服务器控件,反而把所有的html的内容,嵌入到这个服务器控件中去。所以出来的效果一定可以完整保留html设计的东西。这对于很多使用html技术的站长来说是天大的好事。因为这样可以使用简单地使用HTML来编辑我们的页面。
可是我就是在是搞不懂了,老大,没看到这么多高校中都开了asp.net的课吗?有必要那么吝啬吗?如果用MasterPage对于.NET程序员来说,更容易编辑。(这当然纯属牢骚了,因为后面在改外观的时候费了好大的劲)
我总认为,Discuz!NT是披着一层.NET皮的PHP狼
c.再次是他的整个构架。
我并没有说Discuz!NT不好,我的牢骚更多的处于自己的.NET程序员身份。Discuz!NT为实现一些自己的功能,可谓是煞费苦心。但是也得说,整个架构非常紧凑,如果第一次感觉不理解,多看几遍,就会感觉好很多。
这里特别想说一下Discuz!NT的地址转换。其实博客园也用到了HttpModeul,这在我们一般的开发中并不常见到,刚一开始我很不习惯的。当然现在好了。
关于Discuz!NT的模板系统(就是aspx页面中的那些html)还有这个地址转换,都在代震军老师的博客中有介绍过。大家可以去那里详细学习。
可是这也太过于封闭了。比如我们要进行编辑,总会受到他的一些限制。我在这个过程中,体味颇深,好几次差点放弃了,不过最后还是找到了解决的方法。
d.Discuz!NT开源仍然是犹抱琵琶半遮面。
Discuz!NT开源。我不是很了解开源,但是感觉Discuz!NT的开源就是给你一个毛坯。就那个一个简单的例子,加入我们去下载到Discuz!NT的源码,然后你用VS打开,然后发布Disney.Web项目,你是不可能得到在网上发布的Discuz!NT产品的。
用户的朋友都知道Discuz!NT有一个非常傻瓜的安装系统。可是我至今都没搞明白这个安装系统到底是怎么完成的。
源码我也看了,对HttmModeul的开启,然后数据库的部署,然后写入管理员账户。
我还监听了整个网站根目录文件夹,然后我自己手动来做这些东西,还是不成功。
当然我也在Discuz!NT的官方论坛发了帖子,代老师、戏水老师也发了邮件。结果论坛的帖子石沉大海,代老师基本上没回应,戏水老师一句“你可以看源代码”就直接把我打发了。也不知道是真的不想告诉我,还是瞧不起我。
(这里是在开玩笑的,戏水老师不要当真,等您闲了,那个问题得向您好好讨教讨教)
不过菜鸟也有菜鸟的方法。首先我们可以用一个Discuz!NT产品进行安装。然后我们可以替换掉bin文件夹,这样就可以完成对源码的修改了。如果想改其他的,安装好了以后自己动手就行了,效果一样。
说了这么多Discuz!NT的坏话,戴老师,您别生气啊!
也许你会说,选别的不行啊!不行,就因为这个是Discuz!NT国内最优秀的开源论坛,这样做做出来才有意义,才有挑战,最后完成后,的征服感越强。
好了下一篇来介绍整个系统的一些大致的代码
