【转】Web服务软件工厂

.

patterns & practices开发中心

摘要

Web服务软件工厂(英文为Web Service Software Factory,也称作服务工厂)是一个集成的工具、模式、源代码和规范性指导的集合。它的设计是为了帮助你迅速、一致地构建符合普遍的体系结构和设计模式的Web服务。

如果你是一名负责创建面向服务的应用程序的架构师或开发员,那么我们的patterns & practices (模式与实践)小组就会邀请你参加学习,以了解服务工厂在未来的服务开发活动中的作用。服务工厂提供了相关的指导,以帮助你应对众多与创建ASP.NET (ASMX)、Windows Communication Foundation (WCF) Web服务和分布式应用程序组件相关的挑战。这些挑战包括:

设计ASMX和WCF消息以及服务接口。

应用异常屏蔽和异常处理。

在域模型中设计业务实体。

转换往返于业务实体的消息。

设计、创建和调用数据访问层。

使用代码分析来验证服务的实现、配置和安全性的一致性。

为移植到WCF制定计划。

向WCF服务应用安全措施。

应用消息验证工具。

使用下列信息来确定服务工厂是否适合你、你的团队以及你正在创建的服务。

下载

Web Service Software Factory–December 2006 (ASP.NET and WCF services in C#)

Web Service Software Factory–July 2006 (ASP.NET services in VB.NET)

Web Service Software Factory Hands-on Lab

媒体

MSDN Architecture Webcast: Web Service Software Factory (27 June 2006)

Web Service Software Factory Presentation (with PowerPoint slides)

Web Service Software Factory Demonstration (with code files)

MSDN Webcast: Web Service Software Factory (5 April 2007)

社区

Web Service Software Factory Community Workspace

The Service Factory Blogs

许可

End User Licensing Agreement (EULA)

*
本页内容
服务工厂(Service Factory)是什么?服务工厂(Service Factory)是什么?
目标受众目标受众
入门指南入门指南
系统要求系统要求
未来计划未来计划
已知问题已知问题
反馈和支持反馈和支持
作者和参与人员作者和参与人员

服务工厂(Service Factory)是什么?

总体来说,服务工厂代表了一个指导集合,它可以帮助架构师和开发人员创建特定类型的应用程序。因此,服务工厂可帮助开发人员和架构师创建Web服务应用程序。Web服务应用程序不仅仅属于发送和接收SOAP消息并公布WSDL协定的技术,它们还包括了实施服务行为所需的功能。图1展示了此应用程序的各个组件以及它们彼此之间的关系,服务工厂将帮助你创建它们。

.

图1. 服务工厂创建的服务的结构

除了“摘要”部分列出的挑战之外,实际上这些技术一直都在发展变化。另外一个应该注意的挑战是如何使用.NET Framework 2.0 (ASP.NET和Web Services Enhancements (WSE))创建XML Web服务,以便使它们可以在不久的将来移植到NET Framework 3.0 (WCF、Windows Workflow (WF)和CardSpace™)中。服务工厂可基于目前发布的技术创建服务,这些技术可能成为未来的技术。它能够引入与下一代技术密切相关的概念,并提供可最大限度减少未来变化的设计指导,从而完成此项工作。如果你已经在使用WCF创建服务,那么服务工厂还可帮助你创建和保护这些服务。

服务工厂的指导可通过三种基本方式获得:

书面文档。除了通过服务工厂提供的详细基本主题和可打印的范例之外,还有几个与体系结构相关的主题,它们介绍了更详细的指导信息和指导的基本原理。例如:

Web服务应用程序体系结构

面向服务的应用程序中的消息设计

面向服务的应用程序中的异常处理

为移植到WCF制定计划

指导包。通过结合指导包使用指导自动化扩展程序(Guidance Automation Extensions),开发人员可以使用向导和快捷菜单与Visual Studio 2005进行“对话”。对话将会生成源代码和配置,它们可遵循已证实可行的实践方法。服务工厂中包含了两个指导包:

ASMX指导包。该指导包有助于创建服务接口、服务将要公布和使用的消息以及将这些消息映射到域模型实体的转换器。

数据访问指导包。 该指导包有助于从现有的数据模型创建业务实体,从某个数据模型创建存储过程,生成包含数据访问逻辑的仓库类和工厂。

WCF指导包。该指导包有助于创建服务接口、服务将要公布和使用的消息和数据合同以及将这些消息映射到域模型实体的转换器。

WCF安全性指导包。该指导包可使用X.509和Kerberos保护WCF服务,并通过生成必要的配置节对验证过程进行引导。

引用实现。世界银行(Global Bank)是一个虚构的组织,该解决方案满足了它的需求。该解决方案是使用上述的指导包创建的,它可用作一个实例,以说明如何对服务使用附加功能,比如日志、异常管理等。欲了解详细信息,请参见世界银行方案(Global Bank Scenario)。

服务工厂提供了下列好处:

提高的质量。它提供了经过测试和验收的可重用资产、指导和实例,它们能够处理一般的方案和挑战。它以来自于已证实的行业实践方法和Microsoft实践方法的范例为基础。

提高的可预测性。patterns & practices小组与负责创建目前和未来两代的服务和数据访问技术的开发小组进行了密切合作。所有要使用服务工厂创建的服务都将以一种可预测的方式进行创建,并得到可预测的结果;同时,它们还将通过一条可预测的路线移植到未来的技术。

提高的生产力。它包括了专门为Visual Studio 2005生成的自动化代码和配置文件。借助于这种自动化技术,开发人员可以通过一致的、可重复的方式轻松地应用指导内容。同时,他们还可以有效地使用.NET Framework,而无须花费大量的时间来学习必需的API。

提高的灵活性。服务工厂是根据已证实可行的实践方法精心设计的,但它也具有开放性和高度的可定制性。架构师和开发负责人可以对工厂进行定制,以包含专用于某个小组或组织的约定、策略和实践方法。

返回页首返回页首

目标受众

基于目标受众,服务工厂将提供不同等级的价值。目标受众可由服务工厂用户的角色和正在创建的应用程序的类型进行定义:

架构师。如果你是一名关注面向服务的架构师,由于你的角色责任,服务工厂的设计很可能考虑到了你的因素。

团队开发人员。如果你是某个团队中的一名开发人员,并且你的责任没有跨越图1中的所有层级,那么各指导包就可以分别安装,以帮助你创建你负责的那部分应用程序。这些不同的层级经常可以同时开发。而且,服务工厂应该能够帮助较大的团队实现更高的生产力收益。

单独的开发人员。如果你是一名负责创建整个服务的开发人员,那么对于你如何、何时执行构建每个层级所需的活动,服务工厂都提供了详细的指导。在此过程中,你还将获得自信你正在遵循既定的模式和已证实可行的实践方法。

服务类型。服务工厂的这个发布版本有助于实施以下服务:

实体服务。这些服务提供了对于数据实体的访问功能,数据实体提供了组织流程在封装长期战略详细信息的同时管理和操作的信息的面向业务视图。一个可能性的操作实例是“GetCustomerDetails”(获得客户的详细信息)。

活动服务。这些服务提供了可重复封装的业务价值,它们可能需要使用实体服务来满足请求。一个可能性的操作实例是“RetrieveCreditScore”(检索信用分数)。

服务工厂的未来发布版本还将有助于实施以下服务:

流程服务。这些服务负责管理长期运行的业务流程。这些服务由组织的工作流进行控制,它们经常会配合其它服务进行使用。一个可能性的操作实例是“ProcessInsuranceClaim”(处理保险索赔)。

实用工具服务。这些服务提供了基础结构功能,比如日志、内容路由、安全性以及发布/订阅功能。这些服务可以对消息标题或消息正文发挥作用,但它们必须符合WS-Security等规范的要求。

patterns & practices小组希望个人和组织能够在使用服务工厂进行服务开发的过程中实行标准化。这将保证各种服务之间的一致性,并为将来的技术发展提供可预测性。

返回页首返回页首

入门指南

了解服务工厂的最佳方式是观看“摘要”部分中列出的网络广播。该简介将告诉你为什么要创建服务工厂,同时它还会在Visual Studio中演示本指导的自动化体验。在网络广播结束之前,将会演示如何使用服务工厂的下一个发布版本向WCF服务应用安全性。

开始评估服务工厂的最佳方式是下载“摘要”部分中列出的动手实验。该实验介绍了使用C#为虚构的Coho Winery构建ASP.NET服务的过程中要进行的众多活动:

练习1:创建解决方案结构

练习2:创建数据类型

练习3:创建消息类型

练习4:创建服务操作

练习5:创建业务实体

练习6:在消息和业务实体之间进行转换

练习7:创建CRUD(创建、读取、更新、删除)的存储过程

练习8:创建数据存储库类

练习9:调用数据访问层

练习10:连接客户端和测试服务

该实验采取了一种整体集中的方式,这样就可以按顺序完成练习,但你也可以从任何一点开始做起,以任何适合你学习的顺序完成练习。

如果你想更详细地了解某些特定的领域,你可以使用文档中的“浏览服务工厂”主题。

返回页首返回页首

系统要求

如要在开发环境中查看和运行服务工厂的资产,你需要在计算机上安装下列软件:

Microsoft Windows 2000、Windows XP Professional、Windows Server 2003或Windows Vista操作系统

Microsoft .NET Framework 3.0

Microsoft Visual Studio 2005 (除Express版之外)

Microsoft SQL Server 2005 Express Edition或SQL Server 2005

指导自动化扩展程序技术预览(2006年6月发布,用于Visual Studio 2005)

另外,你可能需要安装下列软件:

如果你要修改Web服务软件工厂的指导包,那么除了指导自动化扩展程序之外,你还须安装指导自动化工具包技术预览(2006年6月发布,用于Visual Studio 2005)。

如果你要使用企业库配置工具(Enterprise Library Configuration Tool),比如修改引用实现中正在使用的数据访问应用程序块(Data Access Application Block)里面的配置,你就需要安装.NET Framework 2.0的企业库。

如要进行Visual Studio Team System (VSTS)单元测试,你必须安装Visual Studio Team System 2005版。欲了解VSTS的详细信息,请参见MSDN上的Microsoft Visual Studio小组系统开发人员中心。

如要进行NUnit测试,你必须安装NUnit 2.2.7.0版。你可以从NUnit网站下载NUnit。

返回页首返回页首

未来计划

好消息是,这不是Web服务软件工厂的最后一个版本。服务工厂的下一个版本将在2007日历年度结束之前发布,其侧重点主要集中在服务建模、附加的自动化指导以及组成应用程序体系结构的各个组件。这些版本的发布计划尚处于最初阶段,不过它们的核心内容可能会包括以下方面:

服务建模

数据访问

服务建模

服务工厂下一个发布版本的主题是支持使用领域特定语言(DSL)进行Web服务建模。具体如何实现这项目标尚未最终确定。欲了解服务工厂下一个发布版本的详细信息,请对服务工厂 社区站点保持关注。

数据访问

服务工厂的这个发布版本包括了相关的指导,其目的是在使用ADO.NET 2.0创建基于业务实体的数据访问层的同时,使开发人员能够遵循已证实可行的实践方法。

Visual Studio的下一个发布版本将包含附加的功能,它们的设计是为了通过.NET语言集成查询(LINQ)的形式简化数据驱动的.NET Framework应用程序的设计和实现过程。专用于ADO.NET的LINQ使LINQ编程模型能够与Microsoft托管代码数据访问平台协同工作。由于提供了这些新技术,创建数据驱动应用程序的建议性实践方法也将得到更新。

服务工厂的初期版本定位于ADO.NET 2.0,但是创建数据访问层和实体的建议模式和方法的设计是为了简化将来到ADO.NET LINQ技术的移植过程。为了演示此移植过程,patterns & practices小组将发布相关的移植指导和参考实现工具,它们展示了服务工厂的体系机构是如何应用这些新技术的。服务工厂也将得到升级,以便在这些技术正式发布时对它们提供完整的支持。

返回页首返回页首

已知问题

欲了解服务工厂已知问题的相关信息,请阅读KnownIssues.htm文件。欲查看该文件,请单击任务栏上的开始,指向所有程序,指向Microsoft patterns & practices,指向Web Service Software Factory,然后单击已知问题。

返回页首返回页首

反馈和支持

如要提供有关本指导的反馈或获得针对任何问题的帮助,请访问Web服务软件工厂社区网站。社区工作区上的留言板是首选的反馈和支持渠道,因为它允许你与整个社区分享你的想法、问题和解决方案。

说明 你需要了解,社区工作区上的所有发布内容在任何情况下都不是最终版本,这一点非常重要。它们尚未通过一系列完整的性能和安全性测试,因此patterns & practices小组推荐你将这些从社区下载的文件视为试验性指导内容。

返回页首返回页首

作者和参与人员

The Service Factory was produced by the following individuals:

Program and Product management: Don Smith, Dmitri Ossipov, Jason Hogg, Sanjeev Garg, and Tom Hollander (Microsoft Corporation)

Architect: Dragos Manolescu, Wojtek Kozaczynski, and Edward Jezierski (Microsoft Corporation)

Development: Chris Tavares (Microsoft Corporation); Hernan de Lahitte (Digit Factory); Pablo Galiano, Juan Wajnerman, José Escrich (Clarius Consulting); and Brian Button (Asynchrony Solutions, Inc.)

Test: Larry Brader and Carlos Farre (Microsoft Corporation); Tushar More, Mani Krishnaswami, Manickavasagam Shanmugasundaram, Arunkumar Sundararajan, Sajjad Nasir Imran, Meenakshi Krishnamoorthi, Muralidharan C Narayanan, Manu Agarwal, Bhavin Raichura, Vinod Kumar S, Venkata Reddy Donthireddy, and Lalitha Sundaram (Infosys Technologies Ltd)

Documentation: Nelly Delgado and RoAnn Corbisier (Microsoft Corporation); Lonnie Wall (RDA Corporation); William French (Linda Werner & Associates, Inc.); Paul Slater (Wadeware LLC); Tim Osborn (Ascentium Corporation); Tina Burden McGrayne (TinaTech, Inc.); and Claudette Siroky (CI Design Studio)

.

Many thanks to the Microsoft Practice team at CGI's Quebec City office who contributed to the development of the Service Factory and who were entrusted with its conversion to Visual Basic .NET. A leading IT and business process services provider with approximately 25,000 professionals operating in more than 100 offices worldwide, CGI works on behalf of its clients to evolve Service Factory and other patterns & practices offerings. To learn more about CGI's Microsoft solutions, visit the CGI corporate Web site.

Many thanks to the following advisors who provided invaluable assistance:

Edward Bakker and René Schrieken (LogicaCMG); Aaron Skonnard (Pluralsight); Gabriel Gilabert and Patrick Johnston (Thomson Financial); Norman Headlam (Fidelity Investments); Brandon Bohling (Intel Corporation); Alejandro G. Jack (Southworks); Christian Weyer (Thinktecture); Daniel Cazzulino (Clarius Consulting); Steve Millet, Jan Alexander, Andy Gordon, Mark Fussell, Ford McKinstry, Steve Maine, Eugene Osovetsky, Daniel Roth, Jezz Santos, Beat Schwegler, Shy Cohen, Serena Yeoh, Vajira Weerasekera, Sam Keall, Jason McConnell, Pablo Castro, Sanjay Mishra, and Umachandar Jayachandran (Microsoft Corporation)

相关主题

Smart Client Software Factory

Mobile Client Software Factory

Guidance Automation Extensions and Guidance Automation Toolkit

Enterprise Library for .NET Framework 2.0

返回页首返回页首

转载说明
作者:来自微软MSDN相关文章
网址:本文引用自http://www.microsoft.com/china/msdn/library/architecture/WebServiceFactory.mspx?mfr=true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机外围模块漫谈之二,如何提高ADC转换精度

在此我们简要总结一下ADC的各种指标如何理解,以及从硬件到软件都有哪些可以采用的手段来提高ADC的转换精度。1.ADC指标除了分辨率,速度,输入范围这些基本指标外,衡量一个ADC好坏通常会用到以下这些指标:失调误差,增益误…

Datawhale-零基础入门NLP-新闻文本分类Task05

该任务是用Word2Vec进行预处理,然后用TextCNN和TextRNN进行分类。TextCNN是利用卷积神经网络进行文本文类,TextCNN是用循环神经网络进行文本分类。 1.Word2Vec 文本是一类非结构化数据,文本表示模型有词袋模型(Bag of Words&…

想要学好C++有哪些技巧?

学C能干什么? 往细了说,后端、客户端、游戏引擎开发以及人工智能领域都需要它。往大了说,构成一个工程师核心能力的东西,都在C里。跟面向对象型的语言相比,C是一门非常考验技术想象力的编程语言,因此学习起…

window.open打开新窗口被浏览器拦截的处理方法

一般我们在打开页面的时候&#xff0c; 最常用的就是用<a>标签&#xff0c;如果是新窗口打开就价格target"_blank"属性就可以了&#xff0c; 如果只是刷新当前页面就用window.location.reload()&#xff0c; 在某些特殊情况下也要用到另外一种新窗口打开的方法…

Datawhale-零基础入门NLP-新闻文本分类Task06

之前已经用RNN和CNN进行文本分类&#xff0c;随着NLP的热门&#xff0c;又出现了大热的Attention&#xff0c;Bert&#xff0c;GPT等模型&#xff0c;接下来&#xff0c;就从理论进行相关学习吧。接下来&#xff0c;我们会经常听到“下游任务”等名词&#xff0c;下游任务就是N…

Linux-C编程 / 多线程 / 如何终止某个线程?

示例 demo最简单的 demo&#xff1a;static void* thread1_func(void *arg) {int i 0;// able to be cancelpthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);for(i0; ; i) {printf("thread1 %d\n", i);…

PaddlePaddle入门——基本概念

最近报了百度的深度学习认证&#xff0c;需要使用Paddle进行编程实现&#xff0c;找了一些基础教程&#xff0c;特意记录下来&#xff0c;加深印象。思维导图如下&#xff1a; 一、Paddle的内部执行流程 二、内部详解 1.Variable&#xff08;变量&#xff09; &#xff08;1…

回答一个微信好友的创业问题

ps:很喜欢这种有烟火气息的照片— — 提问&#xff1a;我最近要创业&#xff0c;打算跟一个朋友合伙&#xff0c;但是我朋友不会技术&#xff0c;所以他只投入钱&#xff0c;也不会参与公司的管理。我们启动资金是10万&#xff0c;他打算投入7万&#xff0c;想占股65%。因为没有…

百度深度学习初级认证——已过

开头先放图&#xff0c;百度深度学习初级工程师认证已通过&#xff0c;记录一下备战和考试细节&#xff01;&#xff01;&#xff01; 1.报考 当时是通过百度的AI Studio看到深度学习的认证了&#xff0c;价格是800&#xff0c;然后阴差阳错从百度技术学院的链接看到深度学习…

哦,这是桶排序

漫画&#xff1a;什么是桶排序&#xff1f;要了解桶排序之前&#xff0c;可以先看看上面小灰的那篇文章&#xff0c;我觉得是比较不错的。桶排序也可以理解为分类排序&#xff0c;把不同的数据归类&#xff0c;归类之后再重新排序&#xff0c;每个桶里面的内容就是一类数据&…

如何防御光缆窃听

很多年前&#xff0c;人们就认识到采用铜缆传输信息很容易通过私搭电缆的方式被窃取。对于一个网络和安全管理人员来说&#xff0c;要么对铜缆采用更严格的安全防护措施&#xff0c;要么就使用光缆。因为很多人都认为光纤可以很好地防止***通过窃听手段截获网络数据。但是实际上…

Linux字符设备驱动实例

globalmem看 linux 设备驱动开发详解时&#xff0c;字符设备驱动一章&#xff0c;写的测试代码和应用程序&#xff0c;加上自己的操作&#xff0c;对初学者我觉得非常有帮助。写这篇文章的原因是因为我看了我之前发表的文章&#xff0c;还没有写过字符设备相关的&#xff0c;至…

8-[函数]-嵌套函数,匿名函数,高阶函数

1.嵌套函数 &#xff08;1&#xff09;多层函数套用 name "Alex"def change_name():name "Alex2"def change_name2():name "Alex3"print("第3层打印", name)change_name2() # 调用内层函数print("第2层打印", name)chan…

c语言画谢宾斯基三角形

谢宾斯基三角形是一个有意思的图形&#xff0c;&#xff08;英语&#xff1a;Sierpinski triangle&#xff09;是一种分形&#xff0c;由波兰数学家谢尔宾斯基在1915年提出,它是一种典型的自相似集。先画一个三角形&#xff0c;然后呢&#xff0c;取三角形的中点&#xff0c;组…

进程间的通信——无名管道

进程间的通信——无名管道 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、进程间的通信 &#xff08;1&#xff09;同主机进程间数据交互机制&#xff1a;无名管道&#xff08;PIPE&#xff09;&#xff0c;有名管道&#xff08;FIFO&#xff09;…

sklearn官网-多分类问题

sklearn实战-乳腺癌细胞数据挖掘&#xff08;博主亲自录制视频&#xff09; https://study.163.com/course/introduction.htm?courseId1005269003&utm_campaigncommission&utm_sourcecp-400000000398149&utm_mediumshare 1.12.6. Multioutput classification Mult…

剖析C语言是如何画出这样的三角形的

哈哈&#xff0c;就是喜欢这些有意思的C语言上篇文章是这样写的c语言画谢宾斯基三角形那篇文章写的有点不直接&#xff0c;然后再查了下资料&#xff0c;看到了下面这些&#xff0c;我觉得解释更加好&#xff0c;这里主要是运用了光栅法&#xff0c;至于光栅法&#xff0c;可以…

NILMTK在Windows下的安装教程

近期&#xff0c;要进行负荷辨识&#xff0c;找到NILMTK安装包&#xff0c;特意将过程记录下来。 &#xff08;1&#xff09;Windows安装 本机已安装了Anaconda&#xff0c;环境是Python3&#xff0c;NILMTK包的项目地址为&#xff1a;https://github.com/nilmtk/nilm_metada…

修改cmdline 把内存改成512MB

#添加cmdline的方式— — 在BoardConfig.mk中修改device/mediateksample/aiv8167sm3_bsp/BoardConfig.mk BOARD_KERNEL_CMDLINE bootopt64S3,32N2,32N2 mem512MB— — 在dts 里面修改kernel-4.4\arch\arm\boot\dts\*.dts / {model "Atmel AT91SAM9M10G45-EK";compa…

NILMTK——经典数据集REDD介绍和使用

配置了NILMTK包的环境之后&#xff0c;想找数据测试一下&#xff0c;在NILMTK官网的API Docs里边发现dataset_converters模块中有内置的数据集处理函数&#xff0c;如图&#xff1a; 将数据转换成HDF文件&#xff0c;这些数据都是比较优秀的&#xff0c;其中&#xff0c;常用的…