随笔-469  评论-948  文章-3  trackbacks-22

Stella Forum v2.0是一个开放全部源代码的基于.net的论坛。本论坛开发的动力是学习与交流.net技术,其中所使用的.net技术涉及多个著名的开源项目,并有Notus自己的想法在里面。更详细的资料请点击进入察看。而v1.1则是稍早的一个版本,但也是一个很完善的论坛程序了。同2.0不同的是,这个没有使用spl和皮肤更换的设计,所以更适合初学者!最后,翻箱底找到了最初写的论坛Astrophel。我想,通过这三个版本的变化,可以给初学者带来很多开发之外的东西……

下载连接
http://files.cnblogs.com/notus/Astrophel.rar

http://files.cnblogs.com/notus/Stella_v1_1.rar

http://files.cnblogs.com/notus/StellaForum_v_2.rar



经过大概一个月的开发,sf2终于可以和大家见面了

2.0与之前的1.1的不同:
1.设计了更易于扩展的三层架构,以后将以此架构为基础扩展论坛的功能
2.数据层使用了petshop模式,即可以随意更换数据访问组件。2.0随带的是基于o/r mapping技术的数据访问层,使用SPL。
3.采用了可更换主题皮肤的设计。2.0随带两套主题皮肤,分别是经典论坛样式和汐草街论坛样式。
4.日志记录使用了log4net。
5.重新设计的Model类,更加符合面向对象的规范。
6.增加了跟踪帖子修改的功能。
7.增加了所使用的第三方组件的连接,方便下载者的学习。
8.放弃了安装文件的制作。提供了安装说明,下载者需要自己安装。
9.从2.0开始,将提供大量的文档供学习交流

正式版的下载地址:


前几天曾放出一个测试版,请大家重新下载这个最新的版本,和测试版相比,正式版做了很多调整。

关于本论坛的其它信息:

作者
本论坛是由菜鸟四人组发起的一个开放源代码的项目,由组内的Notus负责具体的开发工作。
菜鸟四人组成立于2005年1月,核心成员:懒人一个、迈克老猫、Qifang、Notus

关于
stella froum 开发的动力并不是为大家提供一个可以实际运行的论坛程序,而是学习与交流.net技术。
当然我们会以实际运行为最终目标,但是现在不是。

如果您的目的只是想要获得一个自己使用的论坛程序,那恐怕你要付出很多时间和精力来对本系统进行二次开发。
另外,如果您是初入.net的新手,我想本系统也不太适合您深入的学习。因为会被系统内一大堆过度和糟糕的设计弄得迷失方向,我想,您现在应该做的是,认真的看几本好书,养成登陆msdn和使用google的习惯,试着去看一些英文资料。

本论坛的下载者:

0.熟悉asp.net架构,希望通过对本论坛系统提出建设性意见而帮助广大asp.net初学者的高手 :)
1.已经对.net有一定的了解,用asp.net做过开发,希望学习更多asp.net知识的人。
2.对log4net(日志记录)\opensmtp(邮件发送)\spl(基于o/r mapping的数据持久层)感兴趣但从来没接触过的人。

通过下载并学习本系统您可以得到什么?

1.面向对象分析与设计的认识。
2.基于层模式的asp.net系统架构的认识。
3.基于o/r mapping的数据持久层spl的认识。
4.自定义控件的使用

----------------------------------------------------------------

Open Source] Stella Forum v 1.1 公开 
经过近一个星期的忙碌, stella forum 的bugs排除版v 1.1终于可以公开啦,新版本主要是修正了之前发布的最初版的一些明显的bugs,并在一些功能上做了调整,如果您下载了v1.1,那么希望您可以将您的意见和发现的bugs及时的反馈给我们,以便可以推出更好的下一版。
安装后的内容为:stella  forum v1.1 的所有源文件、帮助文档、类库文档、数据库连接字符串修改工具、sql脚本、bugs提示
所需环境为:IIS5.0以上,.net framework v1.1,SQL Server 2000,若需要编辑源文件,则还需要visual studio .net 2003

Beginning ASP.NET using C# . Let us walk together,so as not lose our way !

当时由于时间紧,所以留下了很多的bug没有处理,我想近几天把bug汇总一下,回学校后就集中收拾一下,算做1.1版推出,希望各位下过并安装了这个论坛的朋友可以帮忙把这个bug列表完善一下,如果您在使用过程中发现了问题,都可以贴到这里来,众人拾柴火焰高,我是希望可以在大家的帮助下把这个小东西慢慢的完善起来 :)

下面是我和朋友发现的一些bug,分类列在下面,如果您发现了新的bug,可以在这里回复

安装程序

1.当目标计算机上装有sql server 2000的多个实例时,数据库连接会失败
详细描述:
2.删除了db.sql
详细描述:1.当数据库安装错误时,不能自主进行安装
3.未提供自主修改连接字符串的功能
详细描述:1.当安装错误或想改变数据库设置时,因为数据库连接字符串是加密的,所以修改起来比较麻烦

vs.net设计时

1.不能顺利的加载除web项目以外的其他项目
详细描述:当加载model等项目时,会提示失败
2.未指明有些项目需要unsafe生成
详细描述:1.utility和custondbaction两个项目因为有加密操作使用了petshop3中的类,该类需要unsafe关键字生成
3.有些代码的注释写的不够详细
详细描述:

oo设计

1.不同角色的会员使用了一个类
详细描述:1.斑竹和会员及管理员是不同的用户类型,应该用不同的类
2.斑竹和论坛版块脱离
详细描述:1.斑竹并没有设成版快的属性,这造成在实际操作时判断斑竹的混乱
3.实现发表、编辑、回复所用的用户控件及相关类的设计混乱
详细描述:
4.为尝试新特性而胡乱的使用多态、单件、计时器等
详细描述:

具体实现

1.过多的使用后绑定显示datagrid的数据
详细描述:在使用datagrid显示数据的时候,过多的依赖itemdatabound事件对数据进行处理
2.未限制用户输入
详细描述:1.密码的输入可以输入任意字符
3.未验证用户输入
详细描述:1.对传到后台的数据没有在表示层进行安全性检查就把数据传到了业务层
4.freetextbox控件的图片上传问题
详细描述:1.好像不能上传图片2.据说ftb有上传漏洞,没有补
5.版块和论坛的资料统计有问题
详细描述:1.使用单件进行数据统计,并且每隔一定时间上传到数据库,会造成数据的丢失
6.未使用论坛设定
详细描述:1.准备了显示论坛信息的类,但没有使用
7.一个会员只能担任一个版快的斑竹
详细描述:1.当把一个斑竹设成另一个版快的斑竹时,该会员就不是原先的版块的斑竹了
8.log文件使用了绝对路径
详细描述:1.错误记录的文件使用了绝对路径来标识位置
9.楼层号的计算未实现
详细描述:1.楼层号只计算了该页的层数,如翻页就会从头开始计算

其他

1.没有规范的文档
详细描述:1.应该做一个规范的三段式文档

 
-------------------------------------------------------------------------

我是.net的初学者,所以这个论坛做的很简单,只有一个版面,而且没有其他的功能,不过以后会慢慢完善的!
体系介绍:
用了一个简单的三层系统来开发,另外还有一个辅助组件。
data主要用来处理和数据库的交互操作,business是带有crud功能的业务实体,而最前面的ui则是具体的页面了,tools装了很多的东西,包括一些论坛设定、自定义的异常类、数据库操作辅助类及其他。
具体分析:
1. 数据库模板的使用
2. 带有crud功能的业务实体的使用
3. tools组件介绍
3.1 config:从web.config获取论坛的设定
3.2 helper:有方便对数据库的操作和对页面操作的一些辅助方法
3.3 redexception:自定义的异常类
3.4 rols:这是一个enum,装在config里面了,用来方便操作用户的角色
4. 和.net提供的forms验证相结合的自定义的验证体系:redprincipal/redidentity
5. 和mssql紧密相连,包括用procedure实现的分页,用view实现的主题详细页面,用trigger实现的关联操作
6.使用了forms验证的verbs选项来控制未登陆者的活动
7.ui的页面部分使用了公共基类redpage,在其中有自定义的异常捕获机制、自动加入页眉和页脚控件的pageload事件和一些方便操作的属性
部署解决方案
我对vs的安装系统还不是很明白,所以各位如果想在本机运行该论坛,只能用下面的笨办法了,或许下一版本推出的时候会有一个安装程序,这样就不用这么麻烦了 -_-o
---项目文件----
1.在e盘新建一aspx文件夹
2.使用iis将aspx其设为虚拟目录
3.使用vs.net在aspx下新建Astrophel空白解决方案
4.在Astrophel下新建UI的web项目,然后将其移除
5.将解压的文件原封不动的复制到Astrophel,将其覆盖!(这么做的目的就是想在把ui设成虚拟目录,因此你也可以直接在iis里设置),这时如果切换回vs.net,会弹出对话框,依次选择“改写”“否”,最后还会弹出sql server的连接设置,取消先。(如没有这些,则可以选择“添加现有项”手动把项目添加进去)
6.现在看你的解决方案,如果没有意外的话,应该有5个项目文件,点开ui项目,应该可以正确的查看里面的文件!(其实我们上面做的这一些,都是为了这个web项目)
---数据库文件----
7.在sql server里新建一个Astrophel的空白数据库,然后在里面添加一个“id:kerry;password:notus;role:db_owner”的用户
8.打开vs.net的服务器资源管理器,新建一个到Astrophel的数据连接,
9.点开AstrophelDB项目--Create ScriptsCreate--Scripts.cmd,运行之(注意可能一开始的时候没有运行选项,这时应先打开一遍,然后再用右键点,就有运行选项了),弹出sql server登录对话框,其中数据库就填刚才的Astrophel,然后使用sa登陆,确定后会弹出运行窗口,完成。
10.如果没有意外的话,现在查看数据库,便会发现诸如table/procedure/view等项都设置好了。
---运行----
11.现在打开ie,键入http://localhost/aspx/Astrophel/ui/Pages/List.aspx,如果上面都运行良好,那就应该可以查看主页面,并进行相应的操作。
经验心得
1.“通过私有构造函数强化不可实例化的能力”
2.“避免重复创建对象”
3.“多考虑重用而不是复制”
4.善于使用用户控件,注意给控件设置易于使用的对外接口
5.forms验证的verbs选项在使用的时候必须成对出现
6.把业务实体需要的特征值放入轻量化的标量数据中

最后的话
在论坛将要完成的时候,我接触到了petshop3和〈effective java〉。
〈effective java〉这本书我是今天才从图书馆发现并借出来的,我只看了前面的几页,但是立刻就产生了作用,我把论坛里数据操作的部分从basedata拿出来,放到了helper里面,并且认真的做了在使用返回类的属性时的检查,果然,语言不是主要的,思想才是王道!推荐和我一样水平(刚刚对.net有了全面的认识,急待进一步的提高)的人都去读读这本书
毫无疑问,petshop3给我的震撼是巨大的,在这里就不多说了,但是希望大家都可以接触到petshop3。

路漫漫其修远兮,吾将上下而求索……

posted on 2005-05-25 11:17 Notus|南色的风 阅读(11071) 评论(91)  编辑 收藏 所属分类: Stella Forum开发计划Stella Forum知识库

评论:
#1楼  2005-05-25 11:25 | chuanzai [未注册用户]
希望能看到介绍论坛实现技术的文章。期待。。。
  回复  引用    
#2楼 [楼主] 2005-05-25 11:31 | Notus@下雨吧~~      
您好,我这个目前还是一个功能有限的论坛,我已经写了不少和该论坛实现相关的文章,以后会有更多,我现在需要的是大家的反馈,因为我不知道大家都需要什么样的资料 :)
  回复  引用  查看    
#3楼  2005-05-25 11:55 | Na57      
鼓励!支持!
  回复  引用  查看    
#4楼  2005-05-25 12:04 | try [未注册用户]
想看些这个论坛的架构的文章。为什么要这样的架构,这样架构的优点等等
  回复  引用    
#5楼  2005-05-25 13:23 | 磊子 [未注册用户]
支持!
代码放在哪?
有cvs吗?
  回复  引用    
#6楼  2005-05-25 14:15 | itspice      
期待!!!学习学习
  回复  引用  查看    
#7楼 [楼主] 2005-05-25 14:38 | Notus@下雨吧~~      
是的,包括全部的源代码,解决方案等,甚至于together文件也没有删除……
  回复  引用  查看    
#8楼  2005-05-25 14:40 | milestone      
强烈支持!
我下载了一个,不过没看见关于数据库数据和表
  回复  引用  查看    
#9楼  2005-05-25 15:30 | blueroute [未注册用户]
请问如何还原你的数据库呀?

我用企业管理器新建一个stella2,然后选择还原数据库,但是提示错误。

请指点一下!
  回复  引用    
#10楼 [楼主] 2005-05-25 16:00 | Notus@下雨吧~~      
还原数据库?
右键点数据库节点,然后选所有任务,然后选还原数据库
在打开的对话框中
还原为数据库:这里填stella2
还原: 从设备
选择设备: 点击后,出现对话框,点"添加" ,弹出对话框,然后点击"..."找到需要的备份,我的是stella2.bak,点确定,点确定,最后回到 还原数据库 对话框,如果你之前数据库中有名字是stella2的数据库,就点上面的“选项”,然后选“在现有数据库上强制还原”
最后确定如果一切顺利,应该就可以完成。
  回复  引用  查看    
#11楼  2005-05-25 17:13 | jhtchina      
学习,慢慢的学习这些代码,希望能得到提高
  回复  引用  查看    
#12楼  2005-05-26 19:41 | 小生 [未注册用户]

非常谢谢...


我看了一下源码,对你们的分层模式十分感兴趣。但是想问一下notes,你们在对model层的类设计时对这个类的明细资料设置成为属性是一个有什么原则没有?
例如Topic类,它应该有Arts明细,可是在Topic类中没有设计这个属性。而像Art,它却包括了UpdateRecords这个明细属性。
还有其它的类也是有的把明细加入了类中(Theme的ManagerList属性),有的没有(Theme就没有把Topics变成一个属性)?


  回复  引用    
#13楼 [楼主] 2005-05-26 20:45 | Notus@下雨吧~~      
因为我是Oo的初学者,所以在这里的考虑可能有问题。
当时设计的时候更多的是从实现的角度考虑了,比如这个Theme就没有把Topics变成一个属性,是因为我觉得显示主题列表的时候根本就不需要再从Theme那里调,而Theme的ManagerList属性则是因为在首页显示的时候要取斑竹列表就需要Theme
而如果真要规范的话,是需要按照您的说法来做的,是吧?
  回复  引用  查看    
#14楼  2005-05-27 21:39 | 小生 [未注册用户]

虽然从事net企业开发有2年了,但是OO上面还是菜鸟,汗……

特别欣赏你那一段登录代码中的OO机制,我们以前一直都是使用
static bool user.Login(string userno,string pwd)来实现的。还以为自己会面向对象了,谁知...

:)






  回复  引用    
#15楼  2005-05-29 17:27 | 杜晖 [未注册用户]
由于使用SPL,而不是使用操作存储过程,性能会不会有影响?
  回复  引用    
#16楼 [楼主] 2005-05-29 17:38 | Notus@下雨吧~~      
to :小生
其实oo不oo 关键还是看实际开发,是吧,我现在写的这个也是我没有接触实际开发而作出来的东西,说不定,两个月后,我的想法就不一样了
但是使用oo确实在某些方面比较有优势
推荐您看的一本书《UML和模式应用(原书第2版)》

to: 杜晖
这个是有一些影响的,请看这贴“Stella 知识库--SPL的使用”回复里的讨论

  回复  引用  查看    
#17楼  2005-05-30 14:04 | S.Sams      
还是通过附加数据库吧.这样会好点吗?
  回复  引用  查看    
#18楼  2005-05-30 14:30 | 小生 [未注册用户]
to notus:
我們在做項目時﹐經常為了趕時間﹐沒有采用OO技朮﹐而是直接通過簡單的把几個關聯的方法直接加入到一個類中來完成(如User類的新增﹐刪除﹐修改﹐查詢方法都放到user類中﹐而如果要以純OO來看則是沒有一點道理的﹐user本身怎么可以新增自己?就像你這個論壇的源碼就是把CreateUser方法放到Forum類中)
其實新增一個用戶不管是放到User類還是Forum類﹐它本質上都是一樣的﹐都可以看作一個靜態方法﹐都是一個與類實例關聯不是很緊的(好像有個朮語叫無狀態﹐不知是不是這個意思)﹐但是我們把它放到User類中有几個考慮﹕一是自己偷懶﹐不去想這個方法應該由哪個類去調用﹐另一個就是與調用人員溝通方便﹐它們如果想新增一個user﹐直接找User類就好了﹐不要去其它地方看。

不過如果有可能的話﹐我覺得還是OO設計思想比較好﹐畢竟與現實生活關聯緊密
下個項目決定試試這個 ﹕)

鄙人愚見﹐歡迎指正


to S.Sams
因为我的数据库文件是装在D盘的,你的还原数据库是C盘,所以数据还原不了,个人观点.
----------------------------------------

在"還原資料庫"對話框中的"選項"中直接把c改成d盤即可
  回复  引用    
#19楼 [楼主] 2005-05-30 16:57 | Notus@下雨吧~~      
to: S.Sams
制作安装程序太麻烦了,而且容易出错,所以这次的2.0才放弃那个而是直接给了一个数据库备份

to:小生

对啊,正是因为我没有实际工作的经验,所以才会做出这么个东西来,完全按照自己的想法,现在我的设计肯定存在很多问题,只是现在我看不出来,等以后工作了,或许会好些吧
  回复  引用  查看    
#20楼  2005-05-30 22:03 | S.Sams      
呵,谢谢,搞定了.
  回复  引用  查看    
#21楼  2005-06-02 14:54 | blueroute [未注册用户]
请问你的页面中如何放一个Container控件?
  回复  引用    
#22楼  2005-06-02 16:22 | blueroute [未注册用户]
我拖放Container.ascx到页面中自动生成了下面代码:

<%@ Register TagPrefix="uc1" TagName="Container" Src="Theme/Blueidea/skins/Container.ascx" %>

<uc1:Container id="Container1" runat="server"></uc1:Container>

如何实现你的页面效果呢?


还有如何往Container.ascx中再加其他控件呢?


  回复  引用    
#23楼 [楼主] 2005-06-02 19:13 | Notus@下雨吧~~      
首先要说一点,论坛的页面里的控件都是自定义控件,而不是用户控件

这个 Container.ascx 是当时开发时用过,后来又不用了的……

你看我的页面上的那个Container其实是Stella2.WebComponents.Container ,这是一个支持模版的自定义控件,不是一般的用户控件
如果要直接在Container中加其他的控件,可以改写它的CreateChildControls,把你自己的控件加进去,或者给它写更多的模版
我的页面要加其他的控件都是直接写在页面的,比如这个default.aspx
<stella2:Container runat="server" id="index">
<Item>
<stella2:InfoSum runat="server" ID="i1"/>
<stella2:ForumIndex runat="server" ID="Forumindex1"/>
<stella2:Links runat="server" ID="l1"/>
</Item>
</stella2:Container>
在item里面,加了三个控件

关于自定义控件的知识,如果你有不明白的,可以到我的主页上去看,那里有不少当时我写的笔记
  回复  引用  查看    
#24楼 [楼主] 2005-06-02 19:16 | Notus@下雨吧~~      
Stella 知识库--使用控件
这个文章看了吗?如果有不明白的就写在那里吧 :)
  回复  引用  查看    
#25楼  2005-07-11 13:46 | geonado [未注册用户]
值得学习的经典代码^_^,谢谢斑竹
  回复  引用    
#26楼  2005-07-22 21:33 | 红马天下      
因为我现在的项目计划需要使用SPL,所以打算从楼主的这个开源项目里面学习一下。但是在看了以后,我认为楼主的结构设计还是不错的,不过有几个地方我觉得不妥。楼主使用了SPL这个orm组件,但是我不知道楼主用这个做什么?难道只是使用它那个方便的代码生成器生成entity?或者使用entity中方便的CUID吗?或者就是为了使用orm而使用orm么?而且楼主除了使用我上面说的SPL的几种最基本的功能,没有使用任何高级的功能吧?总而言之,我认为楼主没有正确的使用orm。

我就我的理解提几个改进意见:
1、就结构看,楼主的结构和petshop3的结构很类似,猜测可能也是对他的一种仿照吧?如果是这样,楼主可以去掉Factory模块了。就我理解,petshop3之所以设计这个模块,主要是提供可以根据web.config中不同的设置使用不同的数据库访问组件,但是SPL本身已经实现了对多种数据库的兼容,所以这是不需要的。
2、对SPL生成的entity,由于是和数据库表的直接对应,肯定是不符合系统的业务模型的。为了改进entity,系统选择了重新编写一个Model,我不赞同。我认为可以采用两种方式,一种是组合,一种是继承。举个例子,在我写过的一个稿件管理系统中,一篇稿子(Thesis)有n个作者(Author)。对于组合,我可以新建一个ThesisModel类,以组合一个Thesis对象和一个Author数组;对于继承,我也可以新建一个ThesisModel类继承自SPL生成的ThesisEntity,然后添加Author数组等属性和其他的相应操作。
3、对于entity的操作,我也喜欢使用一个单独的action来实现。实现的方式,和上面一样,也可以使用组合和继承,充分利用自动生成的action。这样做的一个好处就是,如果以后的数据库结构更改了,由于采用了组合或者继承,仍然可以使用自动生成的代码,轻易适应这种更改。
4、orm的初衷就是要隔离数据对象的使用和对数据库实际的存储操作,以方便以面向对象的方式使用数据库,所以对数据库的操作最好通过orm内置访问方法进行。只有在orm组件提供的访问方式不能实现所需的操作或者性能不能满足要求的时候,才使用直接的SQl查询语句或存储过程实现。这样做的好处之一就是可以充分利用orm工具对异构数据库的支持的特性,便于移植;另一个好处就是更难出现低级错误,节省时间。这个项目使用了大量的存储过程,我没有仔细看过,不便评论,但还是建议简单的查询使用orm内置的面向对象的查询方式。

我自己也是一个oo的新手,在这里妄加评论,如果有何不妥,还请见谅。
  回复  引用  查看    
#27楼  2005-07-25 15:37 | 命运有自己的梦!      
看到了国人的进步,太好了!
  回复  引用  查看    
#28楼 [楼主] 2005-07-26 16:15 | Notus@天上天下!      
TO:红马天下
您好,首先谢谢您可以花时间来关心stella这个项目
stella发展到现在,经历了1.0 1.1 2.0 这三个版本,其中有些东西是一直继承过来的,在1.1里我使用了sqlclient实现数据访问,而动手做20的时候,恰好看到了这个spl,于是就想用用这个,但是我的想法是不想把spl整个的和stella结合的太紧密,所以就使用了一个factory来隔离,所以后面的model类也是出于这个目的考虑而采用了的,在我当时看来,spl和splentity是作为一个数据操作的整体出现的,这样以后如果换用sqlclient,就不需要改很多

另外,您说的把sqlentity和model整合,这个我的想法是为了保持model的纯洁性,因为我是天秤座的,呵呵
存储过程我用了几个,都是在分页的时候用的

而最近我在改我的论坛,就是直接换了一个数据层,上面的都没有动

我也是oo的初学者,对orm更是一点都不懂,所以以后大家要多多交流啊

祝你考研成功 :)
  回复  引用  查看    
#29楼  2005-08-13 15:59 | 蛙蛙池塘      
支持一下小O,呵呵,还记得偶不?
  回复  引用  查看    
#30楼  2005-09-02 10:56 | walker [未注册用户]
我现在再学习你们的Stella Forum v 2.0 ,但是有地方不明白!可以为我解忧吗??
下面的文件怎样来的呢?他们是位于model下面,
Model.txvpck
Login.txvint
  回复  引用    
#31楼 [楼主] 2005-09-03 11:02 | Notus@光和影的传说      
to 蛙蛙
我怎么会忘了你啊,对了,好像懒人也把你拉到群里了吧,最近我工作太忙(毕业了,555555),所以没时间过去聊天,以后有机会一定要好好聚在一起吹吹牛,哈哈
to walker
那些东西,如果我没记错,应该是together 生成的文件,如果你装了together,就会发现里面很多我当时建模时用的东西

  回复  引用  查看    
#32楼  2005-09-24 02:34 | 冷夜 [未注册用户]
建议做一个安装页面,可以自动创建所需的所有表和初始化数据,当然这个需要花一些时间。
我今天下了一个国外的开源bbs程序,它提供了这种功能,相对来说方便一点。

  回复  引用    
#33楼 [楼主] 2005-09-24 14:56 | Notus@好大的风...      
我也有这个想法,如果可以的话,下一版就来这样的吧
只是,不知道下一版会是什么时候......
  回复  引用  查看    
#34楼  2005-09-28 15:23 | 小草 [未注册用户]
8错8错,支持你一下~ 我也在学习.Net。向你学习。呵
  回复  引用    
#35楼  2005-10-08 16:13 | 烙饼与馒头 [未注册用户]
[不好意思啊,到这边再发一遍。]
老兄,是这样的,我最近在学UML,所以又拿出你论坛2.0源码来看了,我也装了Together Edition(Version 2.0) For VS.NET2003,打开您论坛源码只有Model项目下的能打开,其他项目的没包括在里面,我用包括在项目中后,打开提示“发生未指定的错误”.而且那些.txvpck文件都很小,能告诉我是什么原因吗?能传份完整的给我吗?在此谢谢,工作顺利,如果能发给我的话,请发到邮箱muse_er@163.com
  回复  引用    
#36楼 [楼主] 2005-10-09 10:03 | Notus@好大的风...      
只能给你带来不好的消息了,那些together文件我也不知道是好还是坏,当时用together 只是学习性质的 ,所以并没有太在意,而现在我没有用together,所以自然也没办法给你完整的版本,抱歉
  回复  引用  查看    
#37楼  2005-10-18 16:55 | 修普诺斯 [未注册用户]
觉得这个程序不错,很值得学习,所以建了个交流群,希望跟各位志同道合的朋友一起研究下
Stella Forum 交流群
群号:12469026
  回复  引用    
#38楼  2005-11-10 16:11 | 凯渊 [未注册用户]
我在开发一个ASP版的论坛,现在遇到了UBB转换的问题(也就是发贴的时候常用到的那些UBB标签)。NOTES能不能提供些资料帮助?
  回复  引用    
#39楼 [楼主] 2005-11-12 09:24 | Notus@煌めく瞬間に捕われて      
这个我没接触过,相信google一下比较好
不过我见到的一些,大部分是用正则表达式替换的,这个网上应该都有现成的函数吧
  回复  引用  查看    
#40楼  2005-11-12 20:49 | 凯渊 [未注册用户]
那么在你开发的论坛里面是用什么方法?
  回复  引用    
#41楼 [楼主] 2005-11-14 10:40 | Notus@煌めく瞬間に捕われて      
我这个很简单的,根本就没有那么多功能,像你说的这个ubb也没有 :(
不过实现起来应该不难吧,发表的时候用js插入特殊字符串,然后显示帖子的时候把指定的字符串替换成图标
  回复  引用  查看    
#42楼  2005-11-21 15:16 | fhgogo [未注册用户]
谢谢楼主的工作。我从中学会了很多东西。
  回复  引用    
#43楼  2005-12-03 19:31 | AfritXia2005 [未注册用户]
在 Google 上搜索到几个堪称是“三层结构”的开源论坛。

但是,观察其源码后,令我感到并不是非常好,有悖其名……

Stella Forum 论坛,才可堪称分层——

  回复  引用    
#44楼  2005-12-03 19:32 | AfritXia2005 [未注册用户]
在 Google 上搜索到几个堪称是“三层结构”的开源论坛。

但是,观察其源码后,令我感到并不是非常好,有悖其名……

Stella Forum 论坛,才可堪称分层——

  回复  引用    
#45楼 [楼主] 2005-12-06 09:56 | Notus@煌めく瞬間に捕われて      
这是完全为分层而分层,呵呵
  回复  引用  查看    
#46楼  2006-01-10 18:33 | zkxp      
oo是什么啊,楼主程序写的不错啊。推荐基本你学习过程中的书吧。
  回复  引用  查看    
#47楼 [楼主] 2006-01-10 21:10 | Notus@红色      
我的个人主页上有一些推荐的书,你可以去看看
至于oo是什么……
  回复  引用  查看    
#48楼  2006-03-07 12:37 | zkxp      
今天看了下里面的控件方式。
觉得哦。这样做最大的难度就是设计网页的时候摸瞎来的了。觉得不是很爽。
  回复  引用  查看    
#49楼 [楼主] 2006-03-08 10:15 | Notus@红色      
秘密就在于,需要熟练的配合好vs和dw :)
那些控件的html代码,都是从dw直接复制到vs中,呵呵
  回复  引用  查看    
#50楼  2006-05-11 23:41 | 你太帅了 [未注册用户]
帅哥你太帅了,强烈支持开源!!!!!
  回复  引用    
#51楼  2006-05-17 14:49 | 有问题啊 [未注册用户]
“/Stella_v_1_1/web”应用程序中的服务器错误。
--------------------------------------------------------------------------------

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 70: foreach(District dist in forum.Districts)
行 71: {
行 72: foreach(Theme theme in dist.Themes)
行 73: {
行 74: list.Add(theme);


源文件: D:\asp.net\Stella_v_1_1\web\ProcessFlow\CacheController.cs 行: 72

堆栈跟踪:


[NullReferenceException: 未将对象引用设置到对象的实例。]
Stella.Web.ProcessFlow.CacheController.GetCachedThemes() in D:\asp.net\Stella_v_1_1\web\ProcessFlow\CacheController.cs:72
Stella.Web.ProcessFlow.CacheController.GetCachedNewTopics() in D:\asp.net\Stella_v_1_1\web\ProcessFlow\CacheController.cs:156
Stella.Web.Controls.DistArea.themes_ItemDataBound(Object sender, RepeaterItemEventArgs e) in D:\asp.net\Stella_v_1_1\web\Controls\DistArea.ascx.cs:76
System.Web.UI.WebControls.Repeater.OnItemDataBound(RepeaterItemEventArgs e) +110
System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +139
System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) +475
System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +49
System.Web.UI.WebControls.Repeater.DataBind() +23
Stella.Web.Controls.DistArea.set_ThemeData(ArrayList value) in D:\asp.net\Stella_v_1_1\web\Controls\DistArea.ascx.cs:61
Stella.Web.Pages.index.list_ItemDataBound(Object sender, RepeaterItemEventArgs e) in d:\asp.net\stella_v_1_1\web\pages\index.aspx.cs:64
System.Web.UI.WebControls.Repeater.OnItemDataBound(RepeaterItemEventArgs e) +110
System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +139
System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) +475
System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +49
System.Web.UI.WebControls.Repeater.DataBind() +23
Stella.Web.Pages.index.setUp() in d:\asp.net\stella_v_1_1\web\pages\index.aspx.cs:58
Stella.Web.Pages.index.Page_Load(Object sender, EventArgs e) in d:\asp.net\stella_v_1_1\web\pages\index.aspx.cs:28
System.Web.UI.Control.OnLoad(EventArgs e) +67
Stella.Web.Pages.Container.OnLoad(EventArgs e) in D:\asp.net\Stella_v_1_1\web\Pages\Container.cs:77
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731



  回复  引用    
#52楼 [楼主] 2006-05-19 10:49 | Notus@Arsenal      
GetCachedThemes()
你看一下这个方法,最好在这里设断点调试一下,跟踪过去,应该可以发现问题

  回复  引用  查看    
#53楼  2006-06-01 14:00 | 疯狂下载狂 [未注册用户]
粗看了一下源代码,提个小建议,对于你的许多的集合类型的类实现,如Arts表示Art的集合,里面用了一个ArrayList实现,觉得不是非常好,可以直接将Arts类继承ArrayList,这样的处理就可以利用ArrayList的具体的属性进行处理,而无需每次进行增删等操作。或者生成一个从ArrayList派生出来的集合处理基类,利用反射对Art和Topic等数据进行处理,这样更清晰。
补充一点个人的看法:
利用SPL等ORM工具进行数据访问封装,本身没有什么问题,但是个人觉得再系统的设计上过多的考虑了数据库方向,而忽略了OO的设计,再代码中感觉OO的设计不太合理,就是因为设计中过多的考虑了所谓的Entity Class,而造成系统设计中的OO考虑不彻底。
再多一句话,看着ORM生成的n个所属的实体类,感觉很不爽,代码冗余太多了,实际上全是重复的代码。这点也是不符合OO原则的。有时间建议读一下Tod Johnson的“J2Ee Development without EJB”,Java中已经有牛人在反思许多问题,我等.Net开发人员也能从中得到许多启示。
  回复  引用    
#54楼 [楼主] 2006-06-01 17:05 | Notus@Arsenal      
十分感谢楼上的回复,实际上,这个时候,我准备整理头绪然后重新投入到编程的世界。
像前年(好像很古老了,呵呵)刚开始学.net一样。最初自己并不知道会走多远,但是自从接触到了petshop后,这一切都变的不可控制,此后的sf系列更是让我深深的迷上了这个世界。
重新开始,我想,我还是会燃烧全部的激情在这上面。
对于stella forum的开发,或许也到了重新开始的时候。
  回复  引用  查看    
#55楼  2006-06-02 12:37 | 疯狂下载狂 [未注册用户]
楼主的回复很快哟。
对于你提到的PetShop,很多.Net开发人员都把其奉为自己开发的固定模式加以应用,个人觉得不是非常可取。从PetShop2到PetShop3,微软一直想尝试在系统开发框架上做一些尝试,而PetShop只是系统实现架构的一种方向,实现了所谓的三层结构,但是由于.Net的本身的开发模型的原因,开发框架受制于微软比较多,所以系统中参考PetShop是没有异议的,但是在实际的系统设计中,不能只按照PetShop的方式,而要根据具体的情况进行具体的系统架构设计。这其中OO的设计实现是最关键的,希望能看到一个设计更加出色的Stella Forum。
  回复  引用    
#56楼  2006-06-02 12:40 | 疯狂下载狂 [未注册用户]
补充一点,从价值的角度来看,微软的Enterprise Liberary更有参考和实用价值,里面的一些观点和思路才是微软在企业应用开发中的一些想法和目标。
  回复  引用    
#57楼 [楼主] 2006-06-05 18:26 | Notus@Arsenal      
我决定做sf这个项目,也是因为petshop。因为我发现,一个好的开源项目对一个初学者来说是多么的重要,所以,我尽自己的所能并在诸位好兄弟的帮助下做了这个sf,为了让大家可以更方便的学习,还自以为是的写了一大堆文章。现在看来,这些东西还是有很多错误在里面,希望不要误人子弟为好。
谢谢 疯狂下载狂 ,我会多多学习不同的思想和方法,然后再把他们转化成为更好的作品。
还是需要您这样的高人多多指教啊
  回复  引用  查看    
#58楼  2006-06-28 11:43 | xmlbaby [未注册用户]
  "stella2.bak"
我下载的文件搜遍了也找不到这个文件
这个BLOG下的

  回复  引用    
#59楼 [楼主] 2006-06-29 09:35 | Notus@qiu木/风      
是StellaForum_v_2吗?如果是都话,一打开文件夹应该就有,和那些文档放一起了
  回复  引用  查看    
#60楼  2006-08-18 16:33 | dfdfds [未注册用户]
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 64: IDAL.IUser iu=DALFactory.GetUser();
行 65: Model.User u2=iu.GetProfle(0,guest.Name,null);
行 66: u.Pwd=SecurityHelper.EncryptPassword(guest.Pwd,SecurityHelper.GetSalt(u2.Pwd) );
行 67:
行 68: if(SecurityHelper.CompareByteArray(u.Pwd,u2.Pwd))


源文件: F:\wz\bbs\StellaForum_v_2\StellaForum_v_2\Stella2\Business\Forum.cs 行: 66

堆栈跟踪:


[NullReferenceException: 未将对象引用设置到对象的实例。]
Stella2.Business.Forum.Login(Guest guest) in F:\wz\bbs\StellaForum_v_2\StellaForum_v_2\Stella2\Business\Forum.cs:66
Stella2.WebComponents.Login.doLogin() in F:\wz\bbs\StellaForum_v_2\StellaForum_v_2\Stella2\WebComponents\Skin\Login.cs:50
Stella2.WebComponents.Login.goLogin_Click(Object sender, EventArgs e) in F:\wz\bbs\StellaForum_v_2\StellaForum_v_2\Stella2\WebComponents\Skin\Login.cs:40
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277



  回复  引用    
#61楼  2006-09-02 12:01 | heyingwang [未注册用户]
转换到2005时出现N多错误

如何解决
  回复  引用    
#62楼 [楼主] 2006-09-05 18:39 | Notus@再见,红红.我爱你      
2005?抱歉,我也没有试验过
  回复  引用  查看    
#63楼  2006-10-27 17:12 | BaoGoo [未注册用户]
非常好的论坛,但唯一的关键就是后台不行。
  回复  引用    
#64楼  2006-10-29 11:14 | Ronaldo [未注册用户]
安装后浏览正常,点击回复或者发新帖会出现如下错误,不知如何解决?

“/stella2”应用程序中的服务器错误。
--------------------------------------------------------------------------------

安全性异常
说明: 应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。

异常详细信息: System.Security.SecurityException: 对主体权限的请求失败。

源错误:


行 11: public class Reply : BaseSkin
行 12: {
行 13: public Reply()
行 14: {
行 15: this.skinFileName="reply.ascx";


源文件: D:\Stella2\WebComponents\Skin\Reply.cs 行: 13

堆栈跟踪:


[SecurityException: 对主体权限的请求失败。]
System.Security.Permissions.PrincipalPermission.Demand() +474
System.Security.PermissionSet.Demand() +288
Stella2.WebComponents.Reply..ctor() in D:\Stella2\WebComponents\Skin\Reply.cs:13
ASP.Reply_aspx.__BuildControl__control4() in D:\Stella2\web\reply.aspx:21
ASP.Reply_aspx.__BuildControl__control2(Control __ctrl) in D:\Stella2\web\reply.aspx:18
System.Web.UI.CompiledTemplateBuilder.InstantiateIn(Control container) +10
Stella2.WebComponents.Container.CreateChildControls() in D:\Stella2\WebComponents\Container.cs:36
System.Web.UI.Control.EnsureChildControls() +100
System.Web.UI.Control.PreRenderRecursiveInternal() +38
System.Web.UI.Control.PreRenderRecursiveInternal() +125
System.Web.UI.Control.PreRenderRecursiveInternal() +125
System.Web.UI.Page.ProcessRequestMain() +2106
System.Web.UI.Page.ProcessRequest() +217
System.Web.UI.Page.ProcessRequest(HttpContext context) +18
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute() +179
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +87




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
  回复  引用    
#65楼  2006-10-29 11:25 | Ronaldo [未注册用户]
进了后台再出来,问题就解决了,不过提示有很多脚本错误,可能是在线编辑器的问题。
  回复  引用    
#66楼  2006-11-22 16:55 | MS的明天      
希望楼主尽快解决下载的问题,很迫切的想向你学习啊
  回复  引用  查看    
#67楼 [楼主] 2006-11-23 17:18 | Notus@西安      
谢谢支持哈~~~
  回复  引用  查看    
#68楼  2006-11-24 12:28 | row [未注册用户]
好人
  回复  引用    
#69楼  2006-11-24 15:45 | SkyDragon[匿名] [未注册用户]
顶一下
  回复  引用    
#70楼  2006-11-24 20:28 | apan      
能否从设计模式的角度分析一些论坛中比较精彩的设计思想。
  回复  引用  查看    
#71楼  2006-11-25 07:45 | 兰亭      
很早就看楼主的文章了,写得很不错。
  回复  引用  查看    
#72楼  2006-11-25 07:45 | 兰亭      
很早就看楼主的文章了,写得很不错。
  回复  引用  查看    
#73楼  2006-11-25 09:35 | Anders.Zhao      
好人呀,感谢楼主分享
  回复  引用  查看    
#74楼  2006-11-25 09:35 | Anders.Zhao      
好人呀,感谢楼主分享
  回复  引用  查看    
#75楼  2006-12-19 17:11 | 我不是一只鹿      
能够开源
无乱如何都支持
虽然不是很完善
  回复  引用  查看    
#76楼  2006-12-19 17:28 | 我不是一只鹿      
没有演示地址吗?
那些文件是不是正式版?
  回复  引用