微软开发技术

netgod博客
posts(16) comments(193) trackbacks(1)
  • 博客园
  • 联系
  • 订阅 订阅
  • 管理

News

 

与我联系

  • 发短消息

搜索

 

常用链接

  • 我的参与
  • 我的新闻
  • 最新评论
  • 我的标签

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

我参加的小组

  • Ext 2.0
  • MTO

我参与的团队

  • MVP(微软最有价值专家)团队(0/0)

我的标签

  • Microsoft silverlight visualstudio sdk(1)
  • Microsoft silverlight sdk visualstudio(1)
  • extjs dotnet spring.net nhibernate dao service(1)
  • EXTJS 学习 交流 教程 示例(1)
  • EXT AJAX(1)
  • windows server 2008(1)
  • 激活(1)
  • 正版(1)
  • 升级(1)
  • 开源校园行(1)
  • 更多

随笔分类

  • dotnet开发技术(3)
  • WindowsServer应用(1)
  • 不朽的C语言
  • 技术视野(8)
  • 开发工具(2)
  • 开源演义(1)
  • 框架编程指南
  • 四十三章经(2)

随笔档案

  • 2009年7月 (1)
  • 2009年6月 (1)
  • 2009年3月 (1)
  • 2009年1月 (1)
  • 2008年12月 (2)
  • 2008年10月 (1)
  • 2008年9月 (2)
  • 2008年7月 (3)
  • 2008年4月 (4)

新闻档案

  • 2008年9月 (1)
  • 2008年8月 (1)
  • 2008年7月 (1)

netgod官方站

  • netgod博客
  • netgod博客
  • netgod官方站
  • 开源人网站

最新评论

  • 1. re: 微软2009年7月最有价值专家(MVP)名单
  • MVP就是帮MS买广告,只需给几个自以为自己很棒的人一顶帽子就行,远比花N个亿去投电视广告费.不得不佩服MS的销售策略,因为现在还有很多人想做MVP
  • --佩服MS
  • 2. re: 微软2009年7月最有价值专家(MVP)名单
  • 我喜欢李建忠
  • --艺林
  • 3. re: 微软2009年7月最有价值专家(MVP)名单
  • 支持博客园自己弄一个CNMVP,咱们自己评,微软那个园子里的人不是不认可吗,dudu可以考虑下这件事。
  • --蛙蛙池塘
  • 4. re: 微软2009年7月最有价值专家(MVP)名单
  • supper3000 这一年来 都有啥贡献呢?
    没看出来
  • --asheng
  • 5. re: 微软2009年7月最有价值专家(MVP)名单
  • --引用--------------------------------------------------注册用户: --引用------------------------------------...
  • --Cat Chen

阅读排行榜

  • 1. 微软2009年7月最有价值专家(MVP)名单(4191)
  • 2. Microsoft Windows 7 32Bit Build 6801 DVD镜像下载(3894)
  • 3. 基于.Net平台的extjs单用户Blog系统发布(2726)
  • 4. 微软IE最新XML漏洞利用代码(2617)
  • 5. .Net版的ExtJS单用户Blog系统源码解析(2230)

评论排行榜

  • 1. 微软2009年7月最有价值专家(MVP)名单(75)
  • 2. 基于.Net平台的extjs单用户Blog系统发布(27)
  • 3. Microsoft Windows 7 32Bit Build 6801 DVD镜像下载(25)
  • 4. 微软IE最新XML漏洞利用代码(24)
  • 5. ext/ajax技术交流及学习活动免费门票大放送(博客园人人都有免费获得门票的机会)(11)

View Post

基于.Net平台的extjs单用户Blog系统发布

  这是用.net2.0开发的一个基于ExtSJ技术实现的简单blog系统,演示了ExtJS的综合应用。

  系统后台使用.Net平台,语言为C#,技术构架为NHibernate+Spring.Net+Vifir实现,支持多种数据库,采用三层结构,数据访问层DAO、业务逻辑层及表示层完全分离。DAO层使用的泛型DAO,只需要一个DAO接口即可,不需要写具体的实现。

  系统演示:

  系统下载地址:http://www.vifir.com/download/extblog-net.zip

  下面是系统后台的截图

  

  (登录)

  系统中的一些源码摘要:
域模型:

namespace Vifir.Model.Domain
{
   
public class Topic
    
{
        
private long id;
        
        
private string title;      

        
private string content;
        
        
private string intro;       

        
private TopicCategory category;       

        
private IList<TopicComment> comments = new List<TopicComment>();

       
private DateTime inputTime = DateTime.Now;
       
        
private int readTimes = 0;
       
public virtual long Id
        
{
            
get { return id; }
            
set { id = value; }
        }

       
public virtual string Title
        
{
            
get { return title; }
            
set { title = value; }
        }

       
public virtual string Content
        
{
            
get { return content; }
            
set { content = value; }
        }

       
public virtual string Intro
        
{
            
get { return intro; }
            
set { intro = value; }
        }

       
public virtual TopicCategory Category
        
{
            
get { return category; }
            
set { category = value; }
        }

       
public virtual IList<TopicComment> Comments
        
{
            
get { return comments; }
            
set { comments = value; }
        }

       
public virtual DateTime InputTime
        
{
            
get { return inputTime; }
            
set { inputTime = value; }
        }

       
public virtual int ReadTimes
        
{
            
get { return readTimes; }
            
set { readTimes = value; }
        }

    }

}

DAO接口

namespace Vifir.Model.DAO
{
    
public interface ITopicDAO : GenericDAO
    
{
    }

}

泛型DAO配置 

<object id="TopicDao" parent="abstractDao">    <property name="proxyInterfaces" value="Vifir.Model.DAO.ITopicDAO"/>    <property name="target">      <object parent="baseDAO" type="Vifir.Core.GenericDAOImpl&lt;Vifir.Model.Domain.Topic>,Vifir.Core" />    </property>  </object>

TopicService业务层实现代码

namespace Vifir.Model.Service.Impl
{
    
public class TopicServiceImpl:ITopicService
    
{
            
private ITopicDAO topicDao;

    
public ITopicDAO TopicDao
    
{
      
set { topicDao = value; }
    }

    

    
public long addTopic(Topic topic) {    
        
this.topicDao.Save(topic);
        
return topic.Id;
    }

    
    
public Topic getTopic(long id) {
        Topic topic 
= this.topicDao.Get(id);
        
return topic;
        }

    
    
public bool delTopic(long id) {    
            Topic topic 
= this.getTopic(id);
            
if(topic.Comments.Count>0)throw new LogicException("该文章下还有评论,不能删除!");
            
if (topic != null) {
                
this.topicDao.Remove(id);
                
return true;
            }
            
            
return false;    
    }

    
    
    
public IPageList getTopicBy(IQueryObject queryObject) {    
        
return QueryUtil.query(queryObject, typeof(Topic),this.topicDao);        
    }

    
    
public bool updateTopic(long id, Topic topic) {
        
if (id != default(long))
        
{
            topic.Id
=id;
        }
 else {
            
return false;
        }

        
this.topicDao.Update(topic);
        
return true;
    }
    
    }

}

Web层的添删改查代码:

public partial class manage_Topic : BaseAction
{
    
private ITopicService service;   
    
private ITopicCategoryService categoryService;
    
public ITopicService Service
    
{
        
set { service = value; }
    }

    
public ITopicCategoryService CategoryService
    
{  
        
set { categoryService = value; }
    }


    
public void List()
    
{
        QueryObject qo 
= new QueryObject();
        ToPo(qo);
        
string categoryId = Request.Params["categoryId"];
        
if (categoryId != null && !"".Equals(categoryId))
        
{
            qo.addQuery(
"obj.Category.id", long.Parse(categoryId), "=");
        }

        IPageList pageList 
= service.getTopicBy(qo);
        jsonResult 
= pageList;
    }


    
public void Remove()
    
{
        
long id = long.Parse(Request.Params["id"]);
        service.delTopic(id);
        jsonResult 
= true;
    }


    
public void Save()
    
{
       Topic obj 
= new Topic();
       ToPo(obj);
       
string CategoryId = Request.Params["CategoryId"];
       
if (CategoryId != null && !"".Equals(CategoryId))
       
{
         TopicCategory c 
= this.categoryService.getTopicCategory(long.Parse(CategoryId));
         obj.Category 
= c;
       }

       
if (!HasError())
       service.addTopic(obj);
       extFormResult 
= true;
    }


    
public void Update()
    
{
        
long id = long.Parse(Request.Params["id"]);
        Topic obj 
= service.getTopic(id);
        ToPo(obj);
        
string CategoryId = Request.Params["CategoryId"];
        
if (CategoryId != null && !"".Equals(CategoryId))
        
{
            TopicCategory c 
= this.categoryService.getTopicCategory(long.Parse(CategoryId));
            obj.Category 
= c;
        }

        
if (!HasError())
            service.updateTopic(id, obj);
        extFormResult 
= true;
    }

}


 

 

Tag标签: extjs dotnet spring.net nhibernate dao service

posted on 2008-04-16 16:30 netgodcn 阅读(2726) 评论(27)  编辑 收藏 网摘 所属分类: dotnet开发技术技术视野

View Comments

1390761
#1楼   回复  引用  查看    
NHibernate+Spring.Net+Vifir 牛!thx!
2008-04-16 16:37 | Justin      
#2楼   回复  引用    
我看了一下做的非常的棒。。。可以参考。。。做的很牛。。
2008-04-16 16:55 | 楚广明.。[未注册用户]
#3楼   回复  引用  查看    
哦,里面的数据库是什么的啊,好像没有
2008-04-16 17:00 | 黑*马      
#4楼   回复  引用  查看    
似乎只有web项目的代码,楼主能发布其它项目的代码吗?
2008-04-16 17:24 | 狼Robot      
#5楼   回复  引用  查看    
开源的吗
2008-04-16 17:27 | 高海东      
#6楼[楼主]   回复  引用  查看    
由于使用了持久层框架NHIBERNATE,所以支持多种数据库,如果你使用SQL SERVER数据库,只需要建立一个空数据库并在web.config中修改相关配置就可以在第一次运行时自动建表了。
2008-04-16 17:31 | netgodcn      
#7楼[楼主]   回复  引用  查看    
因为许多核心代码正在完善中,暂时只开放WEB项目的代码,Vifir.com VIP会员可以获得Vifir.Model代码,Vifir.Core会提供文档出来的。
2008-04-16 17:34 | netgodcn      
#8楼   回复  引用  查看    
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

未能加载文件或程序集“Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e”或它的某一个依赖项。系统找不到指定的文件。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IO.FileNotFoundException: 未能加载文件或程序集“Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e”或它的某一个依赖项。系统找不到指定的文件。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

程序集加载跟踪: 下列信息有助于确定程序集“Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e”无法加载的原因。


警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。



堆栈跟踪:


[FileNotFoundException: 未能加载文件或程序集“Common.Logging, Version=1.2.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e”或它的某一个依赖项。系统找不到指定的文件。]
Spring.Context.Support.WebSupportModule..cctor() +0

[TypeInitializationException: “Spring.Context.Support.WebSupportModule”的类型初始值设定项引发异常。]

[TargetInvocationException: 调用的目标发生了异常。]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +103
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +261
System.Activator.CreateInstance(Type type, Boolean nonPublic) +66
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1036
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +114
System.Web.Configuration.ModulesEntry.Create() +41
System.Web.Configuration.HttpModulesSection.CreateModules() +203
System.Web.HttpApplication.InitModules() +219
System.Web.HttpApplication.InitInternal(HttpContext context, HttpApplicationState state, MethodInfo[] handlers) +1251
System.Web.HttpApplicationFactory.GetNormalApplicationInstance(HttpContext context) +243
System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +106
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +214




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42


请问怎么回事啊
2008-04-16 21:05 | Sam Lin      
#9楼   回复  引用  查看    
单从界面上看,就知道博主下了一翻工夫的!
先下下来,再仔细研究,
2008-04-16 21:08 | kkun      
#10楼   回复  引用    
广告来的,bs 为你的站做广告的把
2008-04-16 21:11 | bs lz[未注册用户]
#11楼   回复  引用    
恶心的做法,要开源就全部开源,不要在这里呆人家胃口,没什么意义吧

还弄了个VIP,可能真如楼上所说的,是来做广告的
2008-04-16 21:14 | BSU[未注册用户]
#12楼   回复  引用    
看了就想吐,“开源人”和“VIP”这两个真刺眼

要开源就全部开源,不要总想掖着藏着,有什么意思
2008-04-16 21:20 | BSU[未注册用户]
#13楼[楼主]   回复  引用  查看    
8楼的问题解决如下:请将Common.Logging.dll放置到bin目录下即可
2008-04-16 23:06 | netgodcn      
#14楼[楼主]   回复  引用  查看    
10楼、11——12楼的,请问你有开源作品并且是开源人士吗,否则请不要拿这个说事
2008-04-16 23:34 | netgodcn      
#15楼   回复  引用    
--引用--------------------------------------------------
netgodcn: 10楼、11——12楼的,请问你有开源作品并且是开源人士吗,否则请不要拿这个说事
--------------------------------------------------------


国外的开源也没有说,你要是开源人士才能用,你这个就是自欺欺人,打着开源的幌子,搞什么收费的VIP,当了婊子就不要立什么牌坊.国外开源也能挣钱,但是不是VIP收费,是服务收费.真的是玷污了开源两个字
2008-04-17 09:14 | 我不是开源人[未注册用户]
#16楼   回复  引用    
就拿你使用的spring.net,nhibernet,这些也没说你必须是VIP才能让你查看全部的代码,你自己好好读读人家的开源协议吧,还说什么自己是开源人,丢死个人
2008-04-17 09:17 | 我不是开源人[未注册用户]
#17楼   回复  引用    
做广告的没意思
2008-04-17 09:57 | want990[未注册用户]
#18楼   回复  引用    
好一个“开源”
2008-04-17 10:22 | 我不想说[未注册用户]
#19楼   回复  引用  查看    
虽然我不是什么高手 也来说一下
太恶心了 框架我没用 都自己写的 虽然很业余 不是什么好框架
我还是学生 自己写的东西 也开源研究一下 强烈bs你 要不就不发 发了就不要打开源的幌子

http://www.shangducms.cn" target="_new">http://www.shangducms.cn
2008-04-17 13:12 | guojing      
#20楼   回复  引用    
东西好坏不说,先鄙视下此人人品。。。
2008-04-17 23:33 | 马云峰[未注册用户]
#21楼   回复  引用    
这叫什么开源呀,鄙视
2008-04-21 10:50 | 晕1111111[未注册用户]
#22楼[楼主]   回复  引用  查看    
鄙视管用吗,会管用,只能让中国做开源的人减少而已,还能有什么用
2008-04-21 14:36 | netgodcn      
#23楼   回复  引用  查看    
大哥 你不开源,也不要拿这些东西来忽悠我们嘛~
浪费大家的 时间啊!!! 我们都是纳税人啊!!!
2008-04-22 16:31 | 隐姓埋名      
#24楼   回复  引用  查看    
界面太僵化了,专业程度太高,呵呵
2008-04-28 13:03 | Jeason      
#25楼   回复  引用    
23楼的太不厚道了,你是纳税人管人家屁事,税又没纳到人家这里
2008-05-04 12:00 | fetion[未注册用户]
#26楼   回复  引用    
大致看了一下,技术方面也没什么过人之处啊。不明白为什么还这么遮遮掩掩。

你用extjs做的ui,却不开源js代码,这有点说不过去吧。

我也做过一个类似的基于extjs的cms,等交了客户就给大家开源。
2008-06-01 10:39 | sq[未注册用户]
#27楼   回复  引用  查看    
public static string GetJSON(object value)
{
HandleJSON V_0 = new HandleJSON();
return V_0.getJSON(value);
}

private class HandleJSON
{

private IDictionary vars = null;
private IList stack = null;
private IList declars = null;
private int d=0;

public HandleJSON()
{
this.vars = new Hashtable();
this.stack = new ArrayList();
this.declars = new ArrayList();
this.d = 0;
}

public string getJSON(object value)
{
int V_2;
string V_0 = this.generatorJSON(value);
string V_1 = "";
for (V_2 = 0; V_2 < this.declars.Count; V_2++)
{
V_1 = V_1 + this.declars[V_2];
}
for (V_2 = 0; V_2 < this.stack.Count; V_2++)
{
V_1 = V_1 + this.stack[V_2];
}
return (V_1 + "return " + V_0 + ";");
}

public bool IsSimpleType(Type type)
{
return (type.IsPrimitive || type.Equals(typeof(string))) || (type == typeof(DateTime));
}

public string generatorJSON(object value)
{
string V_0 = "";
string V_1 = "v" + d++;
if (value == null)
{
return V_0 + "null";
}
if (IsSimpleType(value.GetType()))
{
if (value is DateTime)
{
DateTime V_2 = (DateTime)value;
return string.Concat(new object[] { "new Date(", V_2.Year, ",", V_2.Month, ",", V_2.Day, ",", V_2.Hour, ",", V_2.Minute, ",", V_2.Second, ")" });
}
if ((value is string) || value.GetType().IsEnum)
{
string V_3 = value.ToString();
V_3 = V_3.Replace("\"", """);
return "\"" + AjaxUtil.convert2unicode(V_3, true) + "\".replace(/"/g, '\"')";
}
if (value is bool)
{
return value.ToString().ToLower();
}
return "" + value;
}
vars.Add(value, V_1);
if (value is IDictionary)
{
V_0 = handlerMap(V_1, value);
}
else if (value is ICollection)
{
V_0 = handlerCollection(V_1, value);
}
else if (value.GetType().IsArray)
{
V_0 = handlerArray(V_1, value);
}
else
{
V_0 = handlerObject(V_1, value);
}
return V_0;
}

核心源码请访问http://www.xiangyu2099.cn" target="_new">http://www.xiangyu2099.cn
2008-12-04 10:05 | rufus      



刷新评论列表  刷新页面  返回页首
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

验证码: 验证码 看不清,换一个

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1156432

链接:切换模板
导航:网站首页 社区 新闻 博问 闪存 网摘 招聘 找找看 Google搜索



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务

相关文章:

最新IT新闻:
竞争日趋激烈 微软欲借 Windows 7 扭转战局
上海电信计划2012年80%用户实现100M带宽
数万名网友签名抗议星际争霸2取消局域网功能
Silverlight打造杰克逊纪念专题
传诺基亚正在开发Android手机

相关链接:
 
Powered by:
博客园
Copyright © netgodcn