JBTALKS.CC

标题: 会写3-tier program 请进来帮忙! [打印本页]

作者: KYCITY    时间: 2009-8-20 11:12 PM
标题: 会写3-tier program 请进来帮忙!
最近老师忽然要我写3-tier program ,但本人只学过vb ,asp.net 但都不懂 3-tier program要怎麽写。所以希望在这边的朋友可以帮忙我
!或提供些3 tier的网站教学法!谢谢
作者: 宅男-兜着走    时间: 2009-8-21 01:10 AM
标题: 回复 #1 KYCITY 的帖子
-The workstation or presentation interface
-The business logic
-The database and programming related to managing it

抽象的东西。
符合3个条件 :
操作者界面 > 商业逻辑层  > 后台程序资料库等等。

然而使用 aspx.cs 已经能够处理,开发出个 3 tier的application了。

参考网:
about and what is / definition
http://searchsoftwarequality.techtarget.com/sDefinition/0,,sid92_gci211500,00.html

3-tier 的例子, transaction management system.

我是不懂 VB 能不能== 因为我没学到那么深,也不会分到那么清楚。就是乱写一通。
作者: goodday    时间: 2009-8-21 09:35 AM

路过  本人写着6tier 的
user interface layer
data access layer(data entity)
business logic layer (oop 真正的layer)
ajax communicate layer server side (WCF,json,text)
ajax communicate layer client side (XMLHttpRequest,jquery)
javascripts process layer (client side datagrid,extjs)
作者: goodhermit95    时间: 2009-8-21 11:08 AM
tier 多个东西的意思?
作者: goodday    时间: 2009-8-21 12:15 PM
http://www.asp.net/learn/data-access/#intro

自己看咯
作者: zechs    时间: 2009-8-21 07:04 PM
原帖由 goodhermit95 于 2009-8-21 11:08 AM 发表
tier 多个东西的意思?


算“层”的意思吧。
作者: 毛毛小子    时间: 2009-8-23 09:20 PM
这个吧??
http://en.wikipedia.org/wiki/Multitier_architecture

Programming的tier跟networking tier不一样....我想了很久才相通><
作者: goodday    时间: 2009-8-23 11:29 PM
很博大精深的 课题

3 tier 也很多的 pattern 的

毛毛小子 你进步拉
作者: 毛毛小子    时间: 2009-8-24 09:01 AM
还得多多温习
多亏番茄一番谈吐,让我想到很多东西
作者: jacketmaniac    时间: 2010-3-11 11:30 AM
原帖由 goodday 于 2009-8-21 09:35 AM 发表

路过  本人写着6tier 的
user interface layer
data access layer(data entity)
business logic layer (oop 真正的layer)
ajax communicate layer server side (WCF,json,text)
ajax communicate lay ...


user interface layer
ajax communicate layer server side (WCF,json,text)
ajax communicate layer client side (XMLHttpRequest,jquery)
javascripts process layer (client side datagrid,extjs)

这全都是属于 FRONTEND TIER 吧? 就是说属于一个TIER。MVC(MODEL,VIEW,CONTROLLER) 里面的V(VIEW)

[ 本帖最后由 jacketmaniac 于 2010-3-11 11:31 AM 编辑 ]
作者: ~Zero    时间: 2010-3-11 11:40 AM
基本上一个 vb 的 windows form application 已经有两层了, design 是一层, code 是一层.
你只要写到有用到 database 的软件, 就可以说是满足 3-tier 的条件了.
作者: jacketmaniac    时间: 2010-3-11 11:49 AM
所谓的3-TIER 其实是一种结构。也是所谓的
MVC(MODEL,VIEW,CONTROLLER)
VIEW - 是你的界面/和界面沟通的BACKEND (HTML,JSP,ASP,JS,JQUERY,EXTJS,STRUTS,AJAX,ETC)

CONTROLLER - 就是放BUSINESS LOGIC 的地方。通常都以"SERVICE/MANAGER"来命名

MODEL - 就是从数据库拿资料的地方。这里不应该有任何的BUSINESS LOGIC。应该只有SQL或任何拿资料的方法而已。不应有任何LOGIC存在。因为要尽早完成然后离开以防DB CONNECTION被霸占太久。通常都以"DAO"来命名
作者: 宅男-兜着走    时间: 2010-3-11 12:42 PM
标题: 回复 #12 jacketmaniac 的帖子
MVC 跟 3-tier 类似,但是是完全不同的东西。

3-tier 分 data access tier, logic tier , presentation tier. (Client 不能直接 Access Data Access)
课文只说道 3-tier, 但是在这里已经听到有人多过 3 tier. (版主)


MVC分
Model , View, Controller ,
Controller 我觉得用在控制
View, 跟Model之间的切换跟引用(App logic)。Model 用来存Business logic 比较好吧。 Controller 如果也存放Logic 感觉上很混乱, Controller 比较适合放 Application Logic。
MVC 好处就是 scafolding 可以偷懒。
作者: qweasdzxc    时间: 2010-3-11 12:50 PM
标题: 回复 #3 goodday 的帖子
ajax communicate layer server side (WCF,json,text)
ajax communicate layer client side (XMLHttpRequest,jquery)
javascripts process layer (client side datagrid,extjs)

以上的应该是表现层。(present layer, UI layer )   
作者: qweasdzxc    时间: 2010-3-11 12:53 PM
原帖由 宅男-兜着走 于 2010-3-11 12:42 PM 发表
MVC 跟 3-tier 类似,但是是完全不同的东西。

3-tier 分 data access tier, logic tier , presentation tier. (Client 不能直接 Access Data Access)
课文只说道 3-tier, 但是在这里已经听到有人多过 3 ...






MVC is presentation tier 的其中一种。
作者: 宅男-兜着走    时间: 2010-3-11 12:54 PM
标题: 回复 #14 qweasdzxc 的帖子
点解??

interaction->resentation -> ajaxCommunication(json/data) -> bll -> data -> database


还是根本没个定义?
作者: 宅男-兜着走    时间: 2010-3-11 01:02 PM
标题: 回复 #15 qweasdzxc 的帖子
http://en.wikipedia.org/wiki/Model-view-controller

对不起老大。 我想听你的说法。

MVC 是个架构, n-tier 也是, 但是他们的架构图 and 概念完全都不同。

怎么说是 (MVC is presentation tier 的其中一种?)

如果是一样的东西, 人家为什么要compare, 跟考虑使用哪种架构呢?
作者: jacketmaniac    时间: 2010-3-11 02:15 PM
可以说3-TIER 是比较笼统的说法也环盖比较大的范围。也是说他的结构不只是在于软件。有时也包括了硬件好像middleware等等。而MVC比较倾向与WEB APPLICATION。他的结构比较顷于CLIENT和SERVER的资料交换。不过他的结构就和3-TIER相似。
是吗?
作者: 宅男-兜着走    时间: 2010-3-11 05:25 PM
标题: 回复 #18 jacketmaniac 的帖子
那么请问你, (MVC is presentation tier 的其中一种。) 的意思是什么??
我网上找没相关的资料。

有也是 MSDN 看到。不过不明白。
作者: jacketmaniac    时间: 2010-3-11 06:00 PM
那不是我说的。我也不明白为什么是 presentation tier的一种
我也想知道,为有等qweasdzxc 兄指教指教了
作者: zechs    时间: 2010-3-11 06:17 PM
原帖由 ~Zero 于 2010-3-11 11:40 AM 发表
基本上一个 vb 的 windows form application 已经有两层了, design 是一层, code 是一层.
你只要写到有用到 database 的软件, 就可以说是满足 3-tier 的条件了.


他copy你的等下可能会给老师打死=.=。。。
作者: zechs    时间: 2010-3-11 06:28 PM
MVC我没有写过,不过有读过一点,我说出我懂的(可能不对):从我看到的例子,他确实是presentation tier,不过他的架构比较灵活,可以使一些本来要写n-tier的不用去写n-tier也可以很方便的应用coding。

所以MVC vs ASP.NET会有直接的比较。一个application也可以MVC+n-tier来写。
作者: duo8668    时间: 2010-3-11 07:13 PM
其实我也搞不太清楚Multi-tier 的定义在哪。

我有科叫做 Multi-tier Application Development 的,assignment 是如此 :

Database Server = 1 tier
Web Application = 1 tier
Web Service Server = 1 tier

Web Content Management Server + Windows Client Application = 1 tier

所以。。。到底是怎么回事????
作者: 宅男-兜着走    时间: 2010-3-11 07:24 PM
原帖由 zechs 于 2010-3-11 06:28 PM 发表
MVC我没有写过,不过有读过一点,我说出我懂的(可能不对):从我看到的例子,他确实是presentation tier,不过他的架构比较灵活,可以使一些本来要写n-tier的不用去写n-tier也可以很方便的应用coding。

所以 ...


  
有意思,你提到我的疑点了,怎样哦? 在 Presentation Layer 上再架 MVC ? MSDN 的网站上看到。 但是很长。 所以懒惰去看完。
那么Presentation 上的话, Presentation 上的MVC 又要如何用? 这个时候更难分了==
(我连MVC 的分类都已经很乱了, 虽然课本说的简单, 实际分类 起来可是很难的事情)
作者: zechs    时间: 2010-3-11 07:59 PM
原帖由 宅男-兜着走 于 2010-3-11 07:24 PM 发表


  
有意思,你提到我的疑点了,怎样哦? 在 Presentation Layer 上再架 MVC ? MSDN 的网站上看到。 但是很长。 所以懒惰去看完。
那么Presentation 上的话, Presentation 上的MVC 又要如何用? 这个 ...


http://en.wikipedia.org/wiki/Mod ... %E2%80%93controller
看看wiki对MVC的VIEW讲解。

http://en.wikipedia.org/wiki/N-tier
再看这个。
作者: goodday    时间: 2010-3-12 02:37 AM
原帖由 goodday 于 2009-8-21 09:35 AM 发表

路过  本人写着6tier 的
user interface layer
data access layer(data entity)
business logic layer (oop 真正的layer)
ajax communicate layer server side (WCF,json,text)
ajax communicate layer client side (XMLHttpRequest,jquery)
javascripts process layer (client side datagrid,extjs)


第一天, 我写了一个 html 的东西 然后 就排版 很开心的 完成了 给顾客 顾客看了 也很满意哦
很开心 就过了一天 (user interface layer)

第二天, 顾客就要我多个 feeback form 就是从里头的东西填了资料  按button 顾客就能收到 email 咯
我的做法 在 code behind 的加一个 method 就能完成咯 快乐的过了 一个上午

到了中午 顾客又打电话来 要加过 7 个 会send mail 的 功能 在不同的page  
我就 copy & paste 给7个form 咯 很快的 又一个中午咯

到了下午 顾客又 打电话来 加多 7 个 send mail 的 功能 在不同的page  
和 mail server 的 ip 不对咯 要改 下次换 ip 的机率 很高

总不能 cut and paste 吧
刚换一个 mail server 的 ip  要开 7 个 files 来改
现在 又加7 个 总共 14 个
下次 如果 100 个我不是 完蛋

好 开一个 BLL (busniess logic layer) 吧

把 他写成 一个 method 改一个 全部都 不用一个一个改 能翻用 而少bug  省时

耶 不止 email 的 method 能翻用 连 string process ,  get country list, captcha image, url rewrite  
如 ecommerce 的 shopping cart, payment method, shipping charge 的计算 都能放在这个 layer

第三天, 顾客又有新的 pattern 咯  要资料库的储存
现在没钱 用mssql express 先 但原有的资料是在 mysql  
等到 有钱要换 oracle , db2  

哇那么多 要求 你以为我是神咩~~~

要做一个 support 4 个不同的资料库的 DAL (data accss layer)
怎么样做??

我看 factory pattern 的方式来完成吧

用一个interface 来定义 最基本的 base type
如 IConnection, ICommand, IResult

每种database 都需要先 connect database 然后发 command (select * from table) 和得到的结果 IResult 能是 datatable dataset datareader

然后分4 种不同的 database 的 class 都要 inherit 那个 basetype
因为base type 是这个 DAL 的 structure

如果不同的东西是 那个database 的特性 就写在 class 不影响 basetype

剩下的是 sql string 的不同 而已 所有的存取 data 不是问题咯
so 将来 换database 是不是问题了

问你 死未 ~~~

第四天  那个顾客有来扎场 要 AJAX 的视界效果
哇靠!!!  很想打死这个 顾客

ajax 的存取 data 是靠一个page 的 show 什么的字
他就读到什么的

普通的
<html>
<head></head>
<body>abv</body>
</html>


ajax 的
ok


没html的(其实也能有的,某情况)

然后你不能直接dal 丢出你的资料吧
开一个 ajax communicate layer server side 的吧
因为 现在的 java framework 如 jquery,extjs,mootool,prototype, yui
data 都是已  xml 和 JSON(JavaScript Object Notation) 的方式 呈现
JSON 是最快的

如 datatable
------------
A | B | C |
------------
1 | 2 | 3  |
------------
4 | 5 | 6  |
------------

JSON

{[{A:"1"},{B:"2"},{C:"3"}],[{A:"4"},{B:"5"},{C:"6"}]}

需要把 不同的 换成 让 jquery 明白的

============还是server 端的========================          ----------------browse IE firefox Chrome Safari----------------------
DB ==〉DAL ==〉BLL==〉ajax communicate layer server side  ==〉 ajax communicate layer client side (XMLHttpRequest,jquery)

但browser 受到你的 data 还是要经过处理的  
那一定很多 .JS .JS 的
或你自己要的排版格式  排位

或者你 能讲是同2个layer 都是 拿资料的
我就分开了 一个是 server 的直接 DT 的
另一个 就是  for ajax 的 要处理成 JSON,XML

如果我 把这个东西交给下一个 programmer 你硬硬 要说 DAL DAL  你看你的下一手 会乱吗??
一个method 是 Datatable 来的 一个是 JSON

为什么不明白的分开 而让人清楚你的 架构??
好的 program 就是容易 extend 和 handover ma
或者你要你的 source 是世界上你自己一个人能看得明白吧

我们做programmer 就是读 你的客户头上的那朵云啊 
分析是我们其中的一个工作
给顾客玩 也是我们的不幸

还有顾客是不懂 他的内部架构是那么厉害的 也不会给多你的
很喜欢拿我们和那些 3脚猫  来比  会气死的那种

真的是同一个layer 吗?
对! 都是处理data的吧
但我的需求是真的要分成那样的



原帖由 jacketmaniac 于 2010-3-11 11:30 AM 发表


user interface layer
ajax communicate layer server side (WCF,json,text)
ajax communicate layer client side (XMLHttpRequest,jquery)
javascripts process layer (client side datagrid,extjs)
...


原帖由 qweasdzxc 于 2010-3-11 12:50 PM 发表
ajax communicate layer server side (WCF,json,text)
ajax communicate layer client side (XMLHttpRequest,jquery)
javascripts process layer (client side datagrid,extjs)

以上的应该是表现层。(pre ...


以MVC 来说你们来说对了啦

但很广义叻 

欢迎你们的批评,指教
作者: qweasdzxc    时间: 2010-3-12 02:55 PM









所以 MVC  是 presentation layer 里面其中一种实现方法(implement)。.


那天  顾客 / 你老板  发神经。要用flash la .   winform ya.....    . java applet / swing 去完成 使用者界面呢。

flash , vb , winform , ....... swing . 他们不是都是presentation layer 里面其中一种实现方法吗。 之前asp.net  不是用mvc去implement 的。

作者: jacketmaniac    时间: 2010-3-12 03:02 PM
标题: 回复 #26 goodday 的帖子
绝对没有批评你的意思。不过正常来说不是搜集完客户要的需求才开始做的吗?之后要改就是CR(CHANGE REQUEST)要加钱了吗?

就你的例子我以JAVA来说我会用的结构是:
EXTJS -->STRUTS2 -->BLL(SERVICE LAYER)-->MANAGER(DAL-HIBERNATE)
在看情况是否需要在加一层DAO 在最后

STRUTS2的好处是他可以自动帮你的DATA换去JSON也可以普通的URL REDIRECT。只要在XML设定你那一个FUNCTION要那一种就好了
那你的
ajax communicate layer server side (WCF,json,text)
ajax communicate layer client side (XMLHttpRequest,jquery)
这两层都可以省了。

再来如果用HIBERNATE就可以解决不同的DATABASE了。只要你没用到DATABASE自己的UNIQUE SYNTAX好象SQLSERVER的 ~ 等等。不过如果只是小PROJECT用HIBERNATE好象麻烦了点。

不过你一开始COPY&PASTE7个FORM就太不应该了。那时就应该用SERVICE LAYER啦!别这么懒嘛。你也说了交给下一个 programmer 不应该让他不名不白啊。

纯属个人意见。。


作者: qweasdzxc    时间: 2010-3-12 03:06 PM
jacketmaniac  where you working ya?
作者: jacketmaniac    时间: 2010-3-12 03:10 PM
标题: 回复 #27 qweasdzxc 的帖子
赞成你的说法。谢谢指教
作者: jacketmaniac    时间: 2010-3-12 03:12 PM
标题: 回复 #29 qweasdzxc 的帖子
现在在PJ。不过打算要换工了。你呢?
作者: duo8668    时间: 2010-3-12 03:15 PM
layer 跟 tier 应该有很大的差别。
在做Flash 的时候,多数都是加个 layer 而不是 tier 。
Tier 就像是一整排由多数不同或同个东西组成的。
layer,单纯的由一样的东西组成。

Presentation Layer 跟 Presentation Tier 的差别可定为:

Presentation Layer => Web 而定的话,就是所谓的webpage等等。

而一个系统的 presentation Tier 呢?
Windows Application, MacOs application, web application 等等都可以组成这个Tier。

其实,技术永远比理论来得好的多。
一个战士如果只能在射击测验拿100分实战却一个敌人都杀不到甚至花大量时间在瞄准敌人的话,那么这个战士就是失败作。

希望各位能明白 Tier 跟 layer 的差别。
作者: qweasdzxc    时间: 2010-3-12 03:16 PM
jb . haha.  be touch in msn lah. i send to u in message already.
作者: jacketmaniac    时间: 2010-3-12 03:28 PM
原帖由 duo8668 于 2010-3-12 03:15 PM 发表
其实,技术永远比理论来得好的多。
一个战士如果只能在射击测验拿100分实战却一个敌人都杀不到甚至花大量时间在瞄准敌人的话,那么这个战士就是失败作。


你的比喻实在是太太棒了!!哈哈

当然技术永远比理论好,  有理论没技术也做不到
不过如果要更上一层就要掌握理论了。所以大家要交流交流。

也多谢你的TIER&LAYER的解释
作者: jacketmaniac    时间: 2010-3-12 03:35 PM
标题: 回复 #33 qweasdzxc 的帖子
加你的MSN了
作者: qweasdzxc    时间: 2010-3-12 03:39 PM
原帖由 jacketmaniac 于 2010-3-12 03:35 PM 发表
加你的MSN了


no see u de??????????
作者: 宅男-兜着走    时间: 2010-3-12 04:16 PM
标题: 回复 #32 duo8668 的帖子
我老师说: 没Theory 实战也不会好到哪里去 ==

不过看来你实战 + 理论 都是一流的。
作者: goodday    时间: 2010-3-12 04:28 PM
原帖由 qweasdzxc 于 2010-3-12 02:55 PM 发表









所以 MVC  是 presentation layer 里面其中一种实现方法(implement)。.


那天  顾客 / 你老 ...


瓦靠 讨论 讨论 别激动 别激动

作者: goodday    时间: 2010-3-12 04:43 PM
原帖由 jacketmaniac 于 2010-3-12 03:02 PM 发表
绝对没有批评你的意思。不过正常来说不是搜集完客户要的需求才开始做的吗?之后要改就是CR(CHANGE REQUEST)要加钱了吗?

就你的例子我以JAVA来说我会用的结构是:
EXTJS -->STRUTS2 -->BLL(SERVICE LAYER)-->MANAGER(DAL-HIBERNATE)
在看情况是否需要在加一层DAO 在最后

STRUTS2的好处是他可以自动帮你的DATA换去JSON也可以普通的URL REDIRECT。只要在XML设定你那一个FUNCTION要那一种就好了
那你的
ajax communicate layer server side (WCF,json,text)
ajax communicate layer client side (XMLHttpRequest,jquery)
这两层都可以省了。

再来如果用HIBERNATE就可以解决不同的DATABASE了。只要你没用到DATABASE自己的UNIQUE SYNTAX好象SQLSERVER的 ~ 等等。不过如果只是小PROJECT用HIBERNATE好象麻烦了点。

不过你一开始COPY&PASTE7个FORM就太不应该了。那时就应该用SERVICE LAYER啦!别这么懒嘛。你也说了交给下一个 programmer 不应该让他不名不白啊。

纯属个人意见。。


通常顾客自己都不知道自己要什么的
我常讲 第一个 version 是达不到他们要的
第二个才是有business value 的

STRUTS2 是java 的吧
.net 还要靠 JSON.net 的来转
平台不同

HIBERNATE 也是java 的
.net 也有 nHIBERNATE 但我没学过
都是用官方的 ado.net 多

7 个cut and paste 只是 比喻 oop 的好处
我也是收在自己的 Libarary 中的

你还像和我研究 和 交流
上面的为什么那么大字

作者: 宅男-兜着走    时间: 2010-3-12 05:18 PM
你们谁用过 PHP codeignitor 的 MVC Framework

教我下勒。 我快晕了。

如果AJAX 沟通你们怎放? 开多个新的Controller 叫 ajax control??? 还是什么??

感谢不尽。
作者: goodday    时间: 2010-3-12 05:26 PM
原帖由 qweasdzxc 于 2010-3-12 02:55 PM 发表
flash , vb , winform , ....... swing . 他们不是都是presentation layer 里面其中一种实现方法吗。 之前asp.net  不是用mvc去implement 的。


不是要吵架哦

要问 你用过 VM ware 吗?
他们有 winbase  的 和 webbase 的

我的影像很深是 layout 是接近 90% 一样

layer 是同一个
但code是一样吗???

分两个不同的platform 又叫什么??
一样是layer??
我想知道我的想法和你的是一样吗??

我之前的应该叫tier 不是叫 layer 吧
我也有昆乱你们了吧??

交流哦  别那么大的字哦
我会怕的


[ 本帖最后由 goodday 于 2010-3-12 05:55 PM 编辑 ]
作者: qweasdzxc    时间: 2010-3-12 05:52 PM
原帖由 goodday 于 2010-3-12 05:26 PM 发表


不是要吵架哦

要问 你用过 VM ware 吗?
他们有 winbase  的 和 webbase 的

我的影像很深是 layout 是接近 90% 一样

layer 是同一个
但code是一样吗???

分两个不同的platform 又叫什么? ...



haha , not 吵架 ,  big front just make the point 注意。haha .

that is system layer ya.  is same .and more language  is same .

分两个不同的platform . just change that vm component only ya.
作者: goodday    时间: 2010-3-12 05:56 PM
msn add 我叻

================================================
我找到答案咯
.net 的
http://www.codeproject.com/KB/WPF/PhysicsFun.aspx?display=Print
JAVA 的
http://www.askesis.nl/en/tutorial/docs/J2EE/body.html

还是很乱~~~~
作者: goodday    时间: 2010-3-12 05:59 PM
近来很忙 没时间管这个版
论坛很 清静

这个理论 引起了大家的讨论
好事  好事


作者: kenji0523    时间: 2010-3-16 01:16 PM
Difference between Layers and Tiers

http://geekswithblogs.net/mahesh/archive/2006/10/28/95322.aspx




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5