马上在线给分急!!!MS Duwamish中,解决方案下有6个项目,MS怎么将各个项目放置在同意命名空间Duwamish下的?

MiracleAizw 2005-10-29 03:18:23

我按照MS的方案,先建立空白的解决方案Duwamish,再添加各个项目,这样各个项目就不是在同命名空间中的了.我看了我自己的项目,在解决方案Duwamish下就已经是项目了,而MS的各个项目是在Duwamish中.这是怎么回事情?

我应该如何设置,才与MS的一样. 因为我的各个项目独立,反向生成的VISIO文件根本是乱的.
...全文
103 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwjss 2006-05-09
  • 打赏
  • 举报
回复
前言:首先要声明的是:虽然题目后面跟了个“一”,但我不敢保证会有“二”或更多,因为我现在也是在边学边做中,而且我做的项目基本上是由我一个人来完成数据层及业务层的操作,所以我想我根本不需要像duwamish7这样分这么细的层次,也可以比较好的实现面向对象,比较好实现封装继承等。但我还是对分层设计的
设计模式非常感兴趣,于是还是决定好好研究一下duwamish7这个例程。当然不排除会因为工作忙的原因而不去看这个,所以写到哪儿算哪儿。如果真的写不下去,就把一去掉得了:)
其次,我想说明的是:对于.net以及与之相关的一些设计技术,我全部是自学,而且均是走马观花,小桥流水式的,也没有高手指点,所以我不指望我说的东西完全正确或是恰到妙处,相反,除了与大家分享我的学习体会外,我最主要的目的还是希望各位大虾给我指点一些我理解不到位或是没有理解到及理解错误的地方,在下不甚感激!!

开始:初用vs.net不久的人可能会对duwamish7解决方案中的那个根图标不太理解。那是一个企业级的模板,这里选择的是“C#的小型分布式应用程序”这个模板,建立这个模板后,系统分自动把这个解决方案中的模板里分出这样几个项目:Web表示层(WebUI),胖客户端表示层(WinUI),Web服务层(WebServices),业务外观层(BussinessFacade),业务规则层(BussinessRules),数据访问层(DataAccess),以及一个系统层(SystemFramework)。我想,既然是分成单独的项目了,应该是不同的人开发不同的项目的。
duwamish做了一些改动,这些改动至少包括:根据需要去掉了WinUI层,WebService放到Web中了,然后把各个项目做一个改动--编辑其项目属性--把每个项目的程序集和命名空间都加上"Duwamish7."这个块,以表示他们都是这个解决方案中的。另外,把除Web层外的所有项目的输出路径(输出为类库)改为Web层的bin目录下,这样就不用手工添加引用了,即更改输出路径为..\Web\bin。我想duwamish那个项目可能是修改了企业模板做到这些的,但我不会,所以,我是手动一个一个改的^_^。
但我觉得最重要的改动还是duwamish7加了一个新的项目"Common",对于这个层,我的理解是用来存放业务对象的,我想,或者说是叫实体(Entity)吧,存放在Common的Data目录下的实体类中。总共有四个实体,以xxxData来命名,每个实体类均继承DataSet类。对这些实体的理解,我想,它们表示着在整个项目中需要操作的业务对象,我说不清在设计上是先要根据需求抽象出这些业务对象,然后根据这些业务对象来决定数据的设计,还是先对需要建模,得出数据库的设计,然后根据数据库表得出这些业务对象,我倾向于前者(没做过具体的项目,其实我对这些根本不懂)。总之,这些实体并不是和数据库表一一对应的,而是数据库表的另一种抽象,毕竟,数据库设计有它自己的规则和方法,所以可能一个实体中包含了几个数据库表共同作用的一些结果,但我想这两个东西都是为了去抽象现实中的实体。
这些xxxData实体和数据库表的另外区别是,这些业务对象是DataSet架构,注意,是架构,表示的是整个程序操作的一个单位,而数据库表中不仅有架构,还有实实在在的数据。实体类只有在每一层中具体的实例化为实体对象,才相应的会向其中填入数据,并一层一层传到DataAccess,再写入数据库中。这个,我感觉实体类就好比int,它提供一种规格,然后在具体的程序中我们可能会int i = 5;一下,而这个i就是实体类的对象,但这不意味着int就一直是5了,下次再用int的时候,再重新实例化一个。。。。。(int好像是基类型唉,这个比喻真是不好)。
现在我明白了为什么还要搞出个实体类来,我觉得这是各个层(子项目)之间传输的一种数据实体标准,当然,我们可以直接把表示层上的值直接传到数据层来,一个sql语句,照样写进数据库,但那可能就违背了分层的意义了。有了实体类后,在每层之间,除了传递必要的数据外,主要传送的还是实体类对象,也就是实体的数据。比如说吧,在Web层中,当我得到了建立客户所需要的"帐号","密码",“电子邮件”等信息后,不是直接把把这几个值传向下一层,而是把它们填入实体对象(CustomerData myCustomer = new CustomerData())中,把实体对象(myCustomer)传入下一层,下一层是业务层了,会对网页传过来的数值进行业务规则的分析,比如,我会检查电子邮件是否存在,这个操作是不应该在表现层做的。以我们平常所想,检查电子邮件是否存在那就直接从表现层得到电子邮件,然后一个sql查询,得到电子邮件对应的用户id,看有没有抛出异常得了。这太随意了,在分层的设计中,从表现层传过来的不是电子邮件的值,而是一个实体,是myCustomer这个用户实体,然后在业务层,我们会根据这个实体对它进行操作,包括从其中得到电子邮件的值,然后交给业务规则中验证电子邮件是否存在的方法去做。。。。。。
这就是我对实体类的理解,它表示的是各层所操作的基本的数据单位,我们的编程也不在是有什么就传什么的一个过程,而是一个“获取值->封装->传递封装”或者是“获取封装->解封装->处理->传递封装”的过程。这样,每层的出入接口也会比较清晰,只要实体类设计好了,每层的设计可以不必管其它各层怎么设计,我只需要你传给我一个实体对象,我对这个实体对象进行操作,必要时,我在传出操作后的实体对象就是了。不知道我的理解是否恰当?
几个实体类的定义也不是很复杂,一个实体类就是一个DataSet,其构造方法调用BuildDataTables方法以构造一个或多个DataTable,并且填充DataTable架构,也就是添加DataColumn,并且根据需要,设置各个DataColumn的值是自增,还是非空等。另外给每个实体类[SerializableAttribute]的属性(Attribute)以便可以进行remoting操作。实体类的定义好像就没什么了。
Common层我就先讲到这儿吧,另外那个文件不完全懂,也不敢怎么说。
今天就先谈到这里吧,希望对初学者对架构的理解有一定帮助,老手们千万别笑话我,我毕竟是初学者,同时,也希望你们能帮我指点指点,提出我理解不到或不到位的地方。谢谢!
singlepine 2005-10-29
  • 打赏
  • 举报
回复
1.建立空解决方案
2.建数据层,加到解决方案中
3.建业务层,加到解决方案中
4.建web表示层,加到解决方案中
5.建其他层,如公用层,实体层等,都加到解决方案中
7.建立各层之间的关系

建议到书店看一些项目解决方案方面的书,就是那种什么asp.net+sql server实现的办公自动化呀,erp之类的讲实例开发的,书开头都有讲怎么建立开发环境.
ET2004 2005-10-29
  • 打赏
  • 举报
回复
项目的默认命名空间是可以修改的,右键点击指定的项目选择属性看看就明白了。而且,代码中各个类的命名空间也可以修改,手动或在类视图中修改即可。
CheerDesiger 2005-10-29
  • 打赏
  • 举报
回复
很简单啊,你将项目加进来以后,修改命名空间就好了
选择项目,点右键选属性,
修改 程序集名称 和 默认命名空间为你想要的命字就了了
jxufewbt 2005-10-29
  • 打赏
  • 举报
回复
可以啊
先建立空白的解决方案Duwamish,然后再 文件->新建->项目->其他项目->企业级模板项目
->Visual C#生成块,然后再看你要添加哪一层的项目,如果是数据层,就选“数据访问”,如果是业务层就是“业务规则”,如果是表现层,就选“Web用户界面”。
MiracleAizw 2005-10-29
  • 打赏
  • 举报
回复
我在研究,对该问题一直没搞明白.
sousouni 2005-10-29
  • 打赏
  • 举报
回复
你研究这个案例多久了?


共同期待!顶一下!










——————————————————————————————————————
资深C#专业QQ群组11440220 ,汇集800多位C#程序爱好者,欢迎加入,共同交流学习!


许多朋友遇到了被拒绝加入的情况,请一定注意主群组的提示,是不是里面含有要求加入分群的
信息,因为现在群组里面人员增加比较快,已经达到7个群组,包括三个高级群组,总人口达到八九百人口了!

若主群无法加入,请大家谅解及时加入分群!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧