掏宝店

yihui.huang

asp.net , c# , jsp

2008年9月19日 #

MVP模式 -- 解决了实际项目的重用问题

最近我们的项目中有个winform的应用,是有关一些长任务操作,所以需要在用户UI上做些提示,这块部署成客户端的形式共用户使用。之前没考虑的太多,摘录一小段代码:

public partial class Flat : UserControl
{

public void Main()

{

BeginEdit();

}

      public void BeginEdit()
      {

              AppendText("正在获取数据...");
              dts = DateTime.Now;
              HtmlOnSale = ChangePage(i);
              BaseHelper.SaveGoodInfo(UserName);

      }

 public void AppendText(string text)
        {
            txtResult.Text += text + "\r\n";

            txtResult.Refresh();
            txtResult.SelectionStart = txtResult.Text.Length;
            txtResult.ScrollToCaret();
            txtResult.Focus();
        }

}

大概代码长成这样,先不要关注里面代码的完好,因为只复制了一部分,里面带有红色标记的接下来会遇到麻烦。

当时代码虽然丑点,但还是可以满足需求的。最近加了个需求,需要在服务器端也部署一套这样的应用程序,但里面具体的业务操作是一摸一样的,但在UI上不需要操作显示状态;当然业务一摸一样,肯定是要重用的,所以就需要对这段代码重构,因为操作里面确实夹杂着很多的AppendText这样的调用,那把整块操作都搬到另外的类去是不行的,而且这个还是继承UserControl的,所以要满足这样的需求想到了MVP模式,赞不知道还有没有其他能用的上的,应该有,只是暂时没想到。

改成这样:多一个工程项目,再多个FlatPresenter类, 然后把这些操作搬到Presenter去,但Presenter怎么调用Flat的AppendText方法呢,再多一个IFlatView接口,AppendText作为接口的一个方法,然后Flat也继承IFlatView,  public partial class Flat : UserControl,IFlatView{},这样子另外的这个程序就可以让他也继承IFlatView,改写AppendText不让他在UI上做操作就可以了,MVP除了提高测试率外,改进代码的可重用性也是很不错的。

改完的代码大概长这样:

 public interface IFlatView
    {

 void AppendText(string text);

}

 

public partial class Flat : UserControl,IFlatView
{

FlatPresenter m_presenter = new FlatPresenter (this);

public void Main()

{

m_presenter.BeginEdit();

}

     public void AppendText(string text)
        {
            txtResult.Text += text + "\r\n";

            txtResult.Refresh();
            txtResult.SelectionStart = txtResult.Text.Length;
            txtResult.ScrollToCaret();
            txtResult.Focus();
        }

}

public class FlatPresenter

{

  public FlatPresenter(IFlatView view)
        {
            m_View = view;
        }

  public void BeginEdit()
      {

              m_View.AppendText("正在获取数据...");
              dts = DateTime.Now;
              HtmlOnSale = ChangePage(i);
              BaseHelper.SaveGoodInfo(UserName);

      }

}

大概是这样的,问题总算解决了。呵呵,看大伙有没有更好的建议。

posted @ 2008-09-19 18:22 yihui.huang 阅读(1926) 评论(12) 编辑

2008年9月11日 #

J2ee 环境搭建(tomcat 5.5.26 + eclipse 3.2.2 + myeclipse 5.5.1 + jdk1.5.0_06+Mysql 5.0)

看j2ee瞒不错的,就搭个环境起来玩玩,

 java这应用服务器,IDE,runtime 很多版本,没选好还真运行不起来,就这样的组合吧,行的通

tomcat 5.5.26 + eclipse 3.2.2 + myeclipse 5.5.1 + jdk1.5.0_06 + Mysql 5.0

1. 安装jdk1.5.0_06,这个不用说了,去sun下一个安装就好了

加个环境变量 java_home ,值: F:\Program Files\Java\jdk1.5.0_06

2. 安装tomcat,也去http://tomcat.apache.org/   下5.5版本的,解压,进入bin,运行startup.bat 就可以启动tomcat了,看看http://localhost:8080/这个能不能访问,能访问就对了

3.安装eclipse 3.2.2,下载解压就好了,简单,记得设置workspace

4.安装myeclipse5.5.1 也是下载安装下,记得现在要让tomcat能在myeclipse中跑起来,看图吧

 

能start起来就对了。

5.数据库就搞mysql玩玩,下载安装后,还得来个mysql IDE,我用的是SQLyog Enterprise.慢好的;

也可以直接在myeclipse 的database explorer打开,connstr:jdbc:mysql://localhost:3306/test,需要mysql.jar包

好了配好了 ,玩吧,我这只是一些大概的,供以后忘记时看的,不要介意

 

posted @ 2008-09-11 13:11 yihui.huang 阅读(1922) 评论(0) 编辑

2007年6月11日 #

Page Flow in Wcsf

续上次的那篇wcsf, 这次就说说pageflow。
上次show 完后发现还有些不足,所以迟迟没写。现在总算明白pageflow到底能做些什么东西,比workflow好在哪了。

大家都知道现在工作流,都是用workflow, 也许你们有的已经用过这玩艺,.net 3.0中的 WWF。

当workflow 是处理状态跳转的,那状态跳来跳去,呈现给user的是什么,是 page, 还得整天去考虑当前状态保存的问题,真麻烦,现在来了page flow ,好了,事情解决了,很简单,现在每个state 相当于page,每个跳转相当于page transition. 看了,那数据库保存的信息,status column ,真棒啊,搞乱了这column,看不见里面是什么,也没办法改了,刚好,避免那些手痒的小伙子无事改DB的坏习惯。

很多在pageflow 那文档已经说的很清楚了,
就这些 Scenarios

Page navigation --页面跳转,就是 page state 的 transition
Back button -- page button 跟 page state 里的 event driven activity 的关系
Data-driven navigation -- condition branches 的trigger data
Page flow composition -- 复杂的pageflow, 几个pageflow的互相操作
Suspend and resume -- pageflow 的状态,暂停和重起
Abandonment -- option 放弃保存状态
Constraining a page flow -- option 是否强制约束current page. if you are in current page , you can not transfer to another page.


我在这重点讲一个关键点。

quickstart 里面有个叫 pageflowshopingcart的demo, 相对应数据表有两张:

pageFlow_InstanceStore --pageflow CorrelationToken and running status

InstanceState -- pageflow status and time

仔细瞧了瞧,这个CorrelationToken字段,想了很久发现这字段它是存user的,针对这个user的pageflow status,但现
实中有很多这样的场景,一个User request 了一张form, 需要manager  approved,或manager approved 后还需要他的manager  approved 等等之类的场景,那应该怎么去处理好呢?

后来才想到如果在这个 CorrelationToken 写的是formID ,那事情就解决了嘛,其他人进来,看看是不是需要自己approved,是的话在trigger 这form status 跳转,不是就算了,status 还一样,果真,试了个demo, ok了。大家先瞧瞧,demo改天传,或留个mail,整理下传你们

posted @ 2007-06-11 21:06 yihui.huang 阅读(2595) 评论(5) 编辑

LoadTest for Backend service


明天要去跟BOSS show 这东东,先拿出来跟大家聊聊。

大家都知道做一个产品的loadTest,是比较麻烦也是比较困难的事,
对于一个系统我们所需要关注的指标有哪些?

无非就这几个问题?
 

How many orders the system can process within fixed time?
How much time the system processed one order?
What is the biggest Capability of the system?
Where is the bottle-neck of system?

而现在哪个系统能很准确的回答这几个问题的,我看很少。
但我们在即将发布的一个backend service  中,很清晰的回答了这几个问题.

我们是怎么做到的呢?

一般来说,一个backend service 可以分为三部分 Application,Input, Output. 我们在做loadtest的时候是把application看成是个box,或者几个小box组合起来的big box.所以我们所需要做的就是三方面的事。

当然即使把applicatiion当成是个box,但在loadtest前,先把这个box拆开来瞧瞧,里面是个什么东西,到底需要些什么样的input,还有output。

input 这部分工作量是很大的,想想在整个系统集成测试完后,整个项目的function算是比较完善的了,刚好,input 这些数据可以拿集成测试的数据,因为这些数据都是production上的数据,虽然可以这样稍微偷懒下,但这些数据要能覆盖所有use case,也没那么简单的哦,还有要自动产生一大把的sequence ordernum,然后根据production 的场景把这些数据模拟出来,

放到实际中去,这些工作量是在很早前就要整理出来的,不然别想测完。
output这部分那也很复杂,怎么样做才能真实的获取business counter来说话,还有硬件的使用情况。 还有硬件使用情况vsts loadtest可以帮你,但business counter怎么办,得清楚系统的output是什么后,有两种方法可以帮你收集:
batch scripts
performance counter

记住在收集数据尽量减少loadtest跟production的碰撞,不然怎么知道你收集的有包括多少是因为run loadtest 导致的,那不就没意义了。

两边都准备好了,这个black box 可以关了吧,可以啦,关之前可能还得把这big box 拆成 small box 再关起来吧, 因为这big box 里面一些数据可能会分成好几个service  跑,哪个service 有瓶颈你不知道。

好了, loadtest可以跑了吧,万事具备,什么风也不欠了,

整个loadtest run 起来是很费时的,跑吧,跑吧,自动跑吧,跑完收集数据,turning些thread ,再继续,再turning,
瞧瞧哪些小孩跑的慢,抓出来教训教训,用那个vsts 下code profiler测试下 代码性能,往往抓到的都是那个db index没建的。

posted @ 2007-06-11 20:17 yihui.huang 阅读(1889) 评论(6) 编辑

2007年5月4日 #

Web Client SoftWare Factory


发现从第一次写那篇控件 以来都有一年多了。手痒了, 来凑几笔。
最近关注微软 P&P SoftWare Factory 很久了,Wcsf 1.0 也发布有几个月了,那天在公司里Share Wcsf Overview 的内容, 就在这PPt了,当然更精彩的会在以后三期中发给大家,以后三期安排: Page  flow; Composize web client application block; mvp + templates.

attact the link for your download : http://files.cnblogs.com/hyh11/Web%20Client%20Software%20Factory.zip 

posted @ 2007-05-04 09:40 yihui.huang 阅读(2768) 评论(5) 编辑

2005年9月27日 #

刚做了个验证码控件

posted @ 2005-09-27 16:38 yihui.huang 阅读(660) 评论(6) 编辑

仅列出标题  

导航

统计信息

News