博客统计信息

51cto专家博客 51cto博客之星
用户名:朱先忠老师
文章数:168
评论数:49
访问量:114620
无忧币:1412
博客积分:3428
博客等级:7
注册日期:2007-04-29

我最近发表的评论

工作流编程循序.. 回复
问题不大吧,我也是一边学习一边制..

背景音乐

我的音乐

00:00 | 00:00

在本篇中,首先详细分析本地服务有关概念,探讨本地服务在工作流运行时、工作流实例及工作流宿主间的地位及作用。然后,通过一个简单的例子来说明使用本地服务在宿主和工作流之间的具体通信方法。
类别:WWF|阅读(587)|回复(0)|(0)阅读全文>>







工作流编程循序渐进(7:InvokeWorkflowActivity活动)






作者  朱先忠




一、简介




      使用InvokeWorkflowActivity 活动可以从一个工作流中异步方式启动另一个工作流。 在已启动的工作流开始执行且工作流分支中的下一个活动执行之前,InvokeWorkflowActivity 活动即告完成。
注意:
WF不支持递归工作流。如果工作流A能够启动工作流B,则工作流B既不能直接启动工作流A,也不能启动任何直接或间接调用工作流A的工作流。InvokeWorkflowActi..
类别:WWF|阅读(511)|回复(2)|(0)阅读全文>>
本文详细介绍了状态机工作流的概念,特征,并给出一个基本实例。
类别:WWF|阅读(924)|回复(3)|(0)阅读全文>>


工作流编程循序渐进(3:While活动)






作者  朱先忠



一、引言本文中,我们来学习另一个简单活动--While活动。While活动将会持续循环的执行,直至指定判断为假。下面,我们来构建一个简单的示例。本示例的目的是,想主要使用While活动实现显示一个九九乘法表。二、创建控制台顺序工作流示例程序框架
请遵循如下步骤创建一个控制台顺序工作流示例程序:

1. 启动VS2008,单击菜单”文件“|”新建“|”项目“,创建一个名字为WhileActivity的控制台顺序工作流示例程序。
2.之后,系统自动打开..
类别:WWF|阅读(526)|回复(0)|(0)阅读全文>>


工作流编程循序渐进(2:IfElseActivity活动)






作者  朱先忠



一、引言本文中,我们来学习另一个简单活动--IfElseActivity。关于此活动,首先需要说明一下:

借助于IfElseActivity活动,你可以创建工作流中的分支结构,每一个分支对应于一个IfElseBranehActivity分支。
IfElseActivitv活动可以有条件地选择执行多个IfElseBranchActivity分支中的一个。也就是说,对每个IfElseBranchActivity活动的执行,都必须被一个条件所激发。    ..
对于IfElseBranchActivity活动的执..
类别:WWF|阅读(624)|回复(2)|(0)阅读全文>>


工作流编程循序渐进(1:代码活动与时间延迟活动)






作者  朱先忠



创建控制台顺序工作流示例程序框架
请遵循如下步骤创建一个控制台顺序工作流示例程序:

1. 启动VS2008,单击菜单”文件“|”新建“|”项目“,创建一个名字为CodeAndDelay的控制台顺序工作流示例程序,见下图。







2.之后,系统自动打开工作流设计器界面,如图所示。





3. 从工具箱中依次拖动Code,Delay,Code三个活动到图中右侧的汉字提示处,得到如图所示的情形。





此时,图中的三个活动相关参数都没有经过设置,下面将设置有关参数。

为活动创建事件或属性

4.
对于Code活动来说,它相当于普通程序流程图中的一段代码模块。因此,我们可以进入到此活动的ExecuteCode事件中输入相应代码即可。为此,只
要双击图中的图标”codeActivity1“,系统控制转到文件Workflow1.cs中此活动的ExecuteCode事件代码处:

namespace CodeAndDelay

{

    public sealed partial class Workflow1 : SequentialWorkflowActivity

    {

        public Workflow1()

        {

            InitializeComponent();

        }



        private void codeActivity1_ExecuteCode(object sender, EventArgs e)

        {

            //......等待输入你的定制代码

        }

    }



}

创建如下简单代码:

        private void codeActivity1_ExecuteCode(object sender, EventArgs e)

        {

            Console.WriteLine("\n这里是活动一的执行代码,当前时间为{0}。",DateTime.Now );

        }

5. 对于活动codeActivity2,也按上述过程操作,并创建类似于下面的代码:

        private void codeActivity2_ExecuteCode(object sender, EventArgs e)

        {

            Console.WriteLine("\n这里是活动二的执行代码,当前时间为{0}。", DateTime.Now);

        }

6. 切换到工作流设计器界面,然后单击选择延迟活动图标。在属性窗口中设置属性TimeoutDuration的值为00:00:05(”时:分:秒“格式)。
因为延迟活动仅仅实现一段时间延迟功能,所以,这个活动是非常容易理解的。


至此,完成了整个工作流部分的设计工作。非常直观简单!最后,别忘记把上面文件保存一下。

最后,我们来看一下控制台主程序是如何创建工作流实例,并启动工作流执行的。切换到控制台主程序Program.cs。此时,系统已经为我们自动生成了如下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;

namespace CodeAndDelay
{
    class Program
    {
        static void Main(string[] args)
        {
            //......经常在此添加一些初始化代码

            //创建工作流实例,并启动工作流执行。注意:工作流是以异步的独立的工作线程方式执行的
            using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
            {
                AutoResetEvent waitHandle = new AutoResetEvent(false);
                workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {waitHandle.Set();};
                workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
                {
                    Console.WriteLine(e.Exception.Message);
                    waitHandle.Set();
                };

                WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(CodeAndDelay.Workflow1));
                instance.Start();

                waitHandle.WaitOne();
            }

            //......在此经常执行一些工作流执行后的善后工作

        }
    }
}

注意:有关上面代码中AutoResetEvent事件等的详细讨论将在后续文章中介绍。观察运行结果
按F5运行控制台程序,一般顺利的话,将得到如下图所示运行时快照。
类别:C#|阅读(887)|回复(1)|(0)阅读全文>>
针对SQL SERVER 2005示例数据库NORTHWIND备份
本人拙作《开发者突击:精通ASP.NET AJAX网络程序设计》正式出版
2008-04-25 22:36:34
静悄悄的夜
如何使用BHO定制你的Internet Explorer浏览器

原文:微软公司 Dino Esposito
编译:朱先中
原文出处:Browser Helper Objects: The Browser the Way You Want It

一、简介
 
 有时,你可能需要一个定制版本的浏览器。在这种情况下,你可以自由地把一些新颖但又不标准的特征增加到一个浏览器上。结果,你最终有的只是一个新但不标
准的浏览器。Web浏览器控件只是浏览器的分析引擎。这意味着仍然存在若干的与用户接口相关的工作等待你做――增加一个地址栏,工具栏,历史记录,状态
栏,频道栏和收藏夹等。如此,要产生一个定..
软件报的一位读者朋友写给‘软件报’编辑的信与本人的拙答
Matt Berseth提供了一篇不错的使用ASP.NET AJAX 服务器控件实现类似Windows资源管理器的文章,地址是:[url]http://mattberseth.com/blog/2007/07/hwo_to_create_an_aspnet_ajax_s.html[/url]。
尽管此程序实现功能有限,但这种思路是相当不错的。相信,在众多的基于ASP.NET平台的Web 2.0应用中都可以借鉴。
又一篇Matt Berseth的短文,URL为[url]http://mattberseth.com/blog/2007/06/aspnet_ajax_rendering_a_gmaill.html[/url]。
介绍如何使用AjaxControlToolkit 中的UpdatePanelAnimationExtender扩展器控件开发Gmail风格的加载提示。GOOD!

在新发行的ASP.NET 2.0版本中,微软不再建议使用System.Web.Mail命名空间而代之以新的System.Net.Mail命名空间。在这个新库中引入了许多新特征,但是在发送邮件的方式方面也相应地带入了一些小错误。

  一、 发送邮件

  在详细讨论这些小错误之前,让我们先看一段示例代码(我们假定你已经在文件开始添加了"using System.Net.Mail"):





MailMessage msg = new MailMessage();
msg.From = new MailAddress("address@domain.com", "Person's Name");
msg.To.Add(new MailAddress("[email]destination@domai..
类别:未分类|阅读(395)|回复(1)|(0)阅读全文>>
一. 简介

  猫和婴儿有很多共同之处。他们都喜欢吃家中养植的植物,都非常讨厌关门。他们也都爱玩弄你的键盘,结果是,你正发送给你的老板的电子邮件可能是以半截句子发送出去的,你的Excel帐户也被加入了一些乱七八糟的内容,并且你还没有注意到,当打开Windows资源管理器时,若干文件已经被移到了回收站!

  其解决方案是,开发一个应用程序实现如下功能:只要键盘处于"威胁状态"你就可以进行切换,并确保任何键盘输入活动都不会造成危害。本文想展示如何使用一种低级Windows API钩子在一个C#应用程序中实现键盘"控制"。下图是..
类别:未分类|阅读(830)|回复(0)|(0)阅读全文>>
微软在新出炉的Visual Studio 2005中为Starter Kits加入了新的功能;但是,你是否知道你也能创建自己Starter
Kit并且输出到.vsi文件中以与其他人共享之?本文所提供的示例为,利用Amazon Web服务来实现构建一个书目搜索的Starter Kit。

  1. 前言

 
 在ASP.NET 1.x时代,微软首先创建了ASP.NET Starter Kits来帮助开发者加快Web应用的开发。ASP.NET
Starter Kits是一些示例ASP.NET应用程序-它们提供代码作为一个可扩展的模板来完成普通的Web开发任务。每个Starter
Kit都是完整的而且被良好归档-用户可以立即用之进行开发活动..
类别:未分类|阅读(187)|回复(0)|(0)阅读全文>>
一、 简介

当创建ASP.NET 2.0应用程序时,开发者通常都把敏感的配置信息存储在Web.config文件中。最典型的示例就是数据库连接字符串,但是包括在Web.config 文件中的其它敏感信息还包括SMTP服务器连接信息和用户凭证数据,等等。尽管默认情况下可以配置ASP.NET以拒绝所有对扩展名为.config的文件资源的HTTP请求;但是,如果一个黑客能够存取你的web服务器的文件系统的话,那么,Web.config中的敏感信息仍然能够被窃取。例如,也许你不小心允许匿名FTP存取你的网站,这样以来就允许一个黑客简单地通过FTP协议下载你的Web.config文件。
..
类别:未分类|阅读(572)|回复(1)|(0)阅读全文>>
提要:ASP.NET为相当耗时的处理提供了几种解决方案。其中,最好的方法之一是把线程与查询方案或AJAX技术进行结合。

  一、 前言

  人们不得不等待。事实上,用户在操作计算机时,如果等待时间超过大约200毫秒,他们一般都感到厌烦。当你的基于万维网的应用程序使用一个需要耗费许多秒甚至几分钟的进程时,这可能成为一个问题。显然,你不可能仅通过建立一个进度条对话框或一等待光标就算万事大吉。

  幸好,ASP.NET为此提供了一些不同的解决方案来处理这种相当耗时的进程-具体情况要依赖于要求的交互级别和你愿意处理的复杂程..
类别:未分类|阅读(819)|回复(1)|(0)阅读全文>>
本文描述一种创建定制Web控件的容易方法,并把该控件使用于一个ASP.NET 2.0 web页面中显示微软DirectX图像转换过滤效果。

  一、简介

 
 本文描述一种创建定制web控件并应用于一个ASP.NET 2.0
web页面中显示微软DirectX图像转换过滤效果的容易的方法。文中包括一个拥有11个不同控件的类库,每一个控件分别展示微软DirectX图像转
换过滤效果的某些方面。在这11个控件中,5个是页面过渡效果控件,其它的6个是用于增强文本外观的过滤效果控件。

  在这6个用于增强
文本外观的过滤效果控件中,每一个被实现为一个容器控件。..
类别:未分类|阅读(261)|回复(1)|(0)阅读全文>>
五、上传图像并使用ASP.NET 2.0数据源控件代码存储二进制数据

  尽管ADO.NET方法
工作在一个ASP.NET 2.0应用程序环境下,但是,你还能够使用ASP.NET
2.0的数据源控件来把二进制数据存储到一个数据库,这不要求你编写ADO.NET代码。在这个演示程序中所使用的SqlDataSource控件包含了
一个InsertCommand,以及相应于Title,MIMEType和ImageData值的参数:





<asp:SqlDataSource ID="UploadPictureDataSource" runat="server"
ConnectionString="..."
InsertCommand="INSERT INTO [Pictures] ([Title], [MIMEType], [Imag..
类别:未分类|阅读(290)|回复(0)|(0)阅读全文>>
 <<   1   2   3   4   5   >>   页数 ( 1/9 )

公告