Bookmark与CodeActivity的区别当工作流运行至Bookmark时,Bookmark会让工作流在此处挂起(Idel),是线程挂起,如果是Web请求处理程序执行,将不会返回,等待恢复。而Code不会挂起;Code继承自CodeActivity,而Bookmark需继承自NativeActivity;设计一个bookmark1.csusing System;
using System.Activities;
using System.Collectio
WF工作流持久化2020-03-15 15:53:57
VS2017里安装时没有选SQLServer express?那就下载一个下载Sql Server 2016 Express LocalDB,下载地址在这里 是英文版的 https://download.microsoft.com/download/9/0/7/907AD35F-9F9C-43A5-9789-52470555DB90/ENU/SqlLocalDB.msi然后执行然后执行testActivity.csusing System;
using 
WF工作流设计器2020-03-15 15:49:24
先创建一个WinForm应用程序吧,再放SplitContainer,再工具箱WPF项下elementHost分别放三个,如下再添加一个类,factory.cs代码:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities.Presentation;
using Sy
面向服务支持简介在该平台,一个服务由服务契约+服务实现组成。服务契约为服务接口,而服务实现则是实现服务接口的类。一般来讲服务契约由一个模块或者一个通用的程序集定义,服务实现模块和服务使用模块则都依赖于服务契约模块或者程序集。服务实现模块在激活器的Start方法中,利用传入该方法的参数context的AddService方法来注册服务,而服务使用模块则利用其激活器Start方法中的context的GetService或者GetFirstOrDefaultService来获取服务并使用。面向服务设计
Sample 01:一个简单的模块1 新建一个名为SimpleModuleShell的“控制台宿主应用程序”项目。2 添加一个新建项目,名称为SimpleModule项目,其项目路径指向SimpleModuleShell项目的bin\plugins文件夹,这样一个默认的模块便创建完成。3 新建的SimpleModule模块由Activator.cs文件和Manifest.xml文件组成。4 Manifest.xml是模块的配置信息,默认创建的内容如下。<?xml version=
先说结论,vs2017及以上版本没有建模项目。vs2015,vs2013则有。这些高版本被精简了。===========================================教一跨行同事学C#,我想从基础的讲一下,也就是最基本的面象对象分析与设计(OOAD),我直接打开我最新安装的 visual studio 2017。准备建一个“建模项目”。结果发现死活找不到?打开一个老项目也无法生成UML图?果断Google之在这里:https://docs.microsoft.com/en-us
这应该是每次我们打算使用模块化框架来创建新的解决方案或者将已有程序重构时首先面对的一个问题。这里我们不谈详细的需求与功能点的探讨过程,直接拿假设的功能点作为讨论基础。比如我们现在准备实现一个简单的B/S的留言板程序,它需要如下功能1) 留言信息展示2) 增加留言信息3) 管理员登陆4) 管理员回复、删除留言传统的三层架构划分大概是这个样子,一种典型的横向划分。你可以将他们放在一个解决方案里完成并发布现在我们来看看,如何将他们拆分成OSGi.NET所
所谓的多环境支持,官方是这么介绍的 1) 支持控制台应用程序。 2) 支持Windows窗体应用程序。 3) 支持WPF应用程序。 4) 支持Windows服务应用程序。 5) 支持ASP.NET应用程序。 6) 支持Windows Mobile应用程序。 7) 支持UIOSP平台嵌套。 这个理解起来不难,主要是因为OSGi.NET是基于.NET框架且与语言以及类型无关,也就是说.NET能支持什么环境,OSGi.NET也就能支持什么环境,他能适应各种.NET生产和装配环境。
“热插拔和动态支持”应该算是OSGi.NET最有趣,最Cool的一个功能,官方文档是这样介绍的 1) 热插拔:所有的模块都可以被动态的添加和卸载。 2) 生命周期:模块生命周期状态由“已安装、已解析、正在启动、已激活、正在停止、已停止、已卸载”组成,每一个生命周期状态下,模块提供的功能都可能不同。 3) 动态:当模块执行任何生命周期操作时,模块会动态的想外界暴露或者隐藏它提供的功能,比如动态提供服务、扩展或者其它功能。 4) 远程部署:支持模块远程部署,比如远程安装、启动、停止和卸载
通过上面的实例,我们可以具体体会到模块与模块之间的“动态信息注入”方式。这种方式的好处是 1) 首先,被注入方不需要知道将会被谁注入,保证了逻辑的单一性,易于横向扩展 2) 其次,注入的协议的可配置型,基于XML的描述,可实现很方便的修改和维护 3) 结合“接口加实现”的服务模式,可以快速整合各个模块的资源,实现了有效的“服务化” 上面的代码只是实现了注入,也就是当具体业务模块被运行环境加载后的被相应的处理模块识别并解析,但OSGi.NET也同时支持某个业务模块的动态抽离,在这里就是从