WF4.0实战(二十一):Windows Server AppFabric中宿主WF4.0应用程序
在之前的一篇博文Windows Server AppFabric介绍上,简单的介绍了一下Windows Server AppFabric。这篇文章中,我将介绍一下,如何在将WF4.0应用程序宿主到Windows Server AppFabric中,以及如何持久化配置和追踪配置。
首先,我将使用asp.net和WF4.0实现一个简单的Pizza订购系统。然后将这个应用系统宿主到Windows Server AppFabric上,实现持久化,跟踪等配置。
Pizza订购系统:
分两部分,一个是asp.net应用程序实现UI界面;另外一个是WF Service实现业务逻辑,系统类似下图。
实现WF Service:
业务处理过程是:客户在asp.net客户端选择Pizza类型和填写Pizza的数量,然后提交给WF Service处理。WF Service根据选择的Pizza类型查询出价格,然后计算Pizza的总价格,并将这个价格返回给asp.net客户端。然后购买者确认是否订购,确认之后,WF Service报告对应的信息。这个流程我分成了两个部分。
第一部分如下图:获取Pizza的价格。
第二部分是:确认订购,如下图:
客户端和服务端交互的数据实体代码如下;
[DataContract(Namespace="urn:pizzas")] public class PriceResponse { [DataMember] public int OrderId { get; set; } [DataMember] public double Price { get; set; } }
实现客户端:
一个提交界面,很简单,如下图:
后台代码:
protected void Button1_Click(object sender, EventArgs e) { FeedMeClient client = new FeedMeClient("BasicHttpBinding_IFeedMe"); PriceResponse prse = client.GetPizzaCost(DropDownList1.Text, int.Parse(TextBox1.Text)); ViewState["id"] = prse.OrderId; Label1.Text = "订单号码为:" + prse.OrderId + "价格为" + prse.Price.ToString(); client.Close(); } protected void Button2_Click(object sender, EventArgs e) { if(ViewState["id"]!=null) { FeedMeClient client = new FeedMeClient("BasicHttpBinding_IFeedMe"); Label1.Text = client.ConfirmOrder(int.Parse(ViewState["id"].ToString())); client.Close(); } }
如何将这个应用程序宿主到Windows Server AppFabric。
首先:要安装Windows Server AppFabric,安装的顺序见Windows Server AppFabric介绍。
第二步:生成WCF的zip包,选择服务项目,右键选择build deplyment packpage。在\obj\Debug\Package路径下面可以看到生成的zip文件,如下图:
第三步:打开IIS,新建一个网站,命名为:RichsPizzaService,端口改为90,如下图:
第四步:选择部署,如下图
第五步:选择包,然后一直点下一步,直到完成。
第六步:配置持久化:选择服务,右键配置,如下图:
配置工作流暂留:
配置工作流主机管理:
第七步:配置跟踪:
1、在\obj\Debug\Package中新建一文本文件,输入下面文本,将其后缀改成tp。
<trackingProfile name="CustomServiceProfile"> <workflow activityDefinitionId="*"> <workflowInstanceQueries> <workflowInstanceQuery> <states> <state name="*" /> </states> </workflowInstanceQuery> </workflowInstanceQueries> <activityStateQueries> <activityStateQuery activityName="GetPizzaCost"> <states> <state name="Closed" /> </states> <variables> <variable name="quantity"/> <variable name="type"/> </variables> </activityStateQuery> </activityStateQueries> <faultPropagationQueries> <faultPropagationQuery faultSourceActivityName="*" faultHandlerActivityName="*" /> </faultPropagationQueries> <bookmarkResumptionQueries> <bookmarkResumptionQuery name="*" /> </bookmarkResumptionQueries> <customTrackingQueries> <customTrackingQuery name="*" activityName="*" /> </customTrackingQueries> </workflow> </trackingProfile>
2、配置监控:在下面界面中选择上面新建的tp文件,点击确认。
效果:
1、在aspx页面上选择,一种pizza,输入你要的数量,如下图:
2、点击提交,获得pizza的总价格,如下图:
3、点击确认,pizza店会告诉你,你的pizza已经在路上了,你等着就行了。
4、Windows Server AppFabric上进行查看:
下图告诉你,已经有7次pizza的预定了。
选择一个实例,查看跟踪信息:
你将会看到如下的事件信息:
这个应用程序很简单,就不能看持久化的效果了。
总结:这篇文章教你如何在Windows Server AppFabric上发布和使用WF4.0应用程序,如何配置Windows Server AppFabric。
附件:pizza订购系统代码https://files.cnblogs.com/zhuqil/WFServices.rar
(全文完)
以下为广告部分
您部署的HTTPS网站安全吗?
如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!
快速了解HTTPS网站安全情况。
安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。
安装部署SSL证书变得更方便。
SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。
让服务器远离SSL证书漏洞侵扰
TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述