
2008年7月5日
Service Broker实现发布-订阅(Publish-Subscribe)框架
Service Broker 实现一套完整的发布-订阅方案,其中author 发送Service Broker Message(又称article)到发布者(Publisher)。发布者负责分发消息给不同的订阅者(Subscriber)。每一个订阅者通过订阅来接受特定的消息。
下图描述了这一个发布/订阅方案:
posted @
2008-09-05 08:23 EntLib 阅读(733) |
评论 (1) |
编辑
ASP.NET 3.5 新特性开发向导实践(附项目源码下载)
本篇文章将演示ASP.NET 3.5 部分新功能、新特性,包括LINQ、ListView控件、LinqDataSource、DataPager 分页控件、ASP.NET AJAX等等。
示例程序演示界面:
本示例开发软件:Visual Studio 2008 和 SQL SERVER,使用Northwind 示例数据库的Customers表。
posted @
2008-09-04 08:22 EntLib 阅读(650) |
评论 (2) |
编辑
EntLib.com 网站征集中文名称,希望各位热心的朋友踊跃发言
EntLib.com Team 专注于开源.Net 系统,如开源ASP.NET论坛、开源ASP.NET博客、开源ASP.NET电子商务平台(前台购物系统和后台业务处理系统),以及分享、交流Microsoft .Net平台的相关技术及企业架构设计,如.Net Framework、ASP.NET、C#、ADO.NET Entity Framework、MVC Framework、AJAX、LINQ、SQL Server、Service Broker、WCF/WF/WPF、BizTalk、ESB (Enterprise Service Bus)、SOA (Service-Oriented Architecture) 、Enterprise Library 等等。
开源ASP.NET 论坛系统:
开源ASP.NET 论坛系统下载、安装手册:
开源ASP.NET 博客平台:
开源ASP.NET 博客平台下载、安装手册:
专业电子商务平台系统:
EntLib 是 Enterprise Library(企业库)的简写,我们EntLib.com Team 希望征集一个响亮的、简明的中文名称,希望各位热心的朋友用于发言。
也欢迎热心的朋友对我们网站的logo提供更好的建议。

本文原链接:
http://forum.entlib.com/Default.aspx?g=posts&t=192
posted @
2008-09-01 22:42 EntLib 阅读(172) |
评论 (8) |
编辑
EntLib.com / Subtext 开源ASP.NET博客系统上线
|
|
|
|
|
EntLib.com 在Subtext v2.0 开源ASP.NET/C#项目的基础上,进行了中文汉化及定制化开发工作。
|
|
本次主要更新如下:
|
|
1. 修正Subtext 项目的一些bugs。
|
|
2. 汉化Subtext 首页及AnotherEon001 模板,同时修改部分CSS UI设置。
|
|
3. 汉化修改并启用 tags 标签设置。
|
|
4. 汉化修改 FCKEditor 编辑器。
|
EntLib.com 博客界面如下:
欢迎各位交流、分享Subtext 开源ASP.NET博客系统的中文汉化及定制化开发经验。
相关文章:
原文链接:
posted @
2008-08-31 12:21 EntLib 阅读(372) |
评论 (7) |
编辑
使用ADO.NET Entity Framework的实体作为数据源Data Source(附Demo程序下载)- 系列3
本文是ADO.NET Entity Framework 系列文章第三篇,继续演示如何使用ADO.NET Entity Framework 的实体作为数据控件的数据源Data Source,轻松将数据记录显示在数据控件中。
ADO.NET Entity Framework 前两篇文章如下:
1. 增加New Data Source
操作步骤如下:
选择Add New Data Source,弹出Data Source Configuration Wizard 窗口,界面如下:
选择Object 作为Data Source Type,然后点击Next按钮。
在向导的下一页,展开树节点 – Data Model,显示所有的Entity 类。选择需要创建Data Source 的 Entity 类,然后点击Next 按钮。
2. 显示Data Source
选择Data 菜单 / Show Data Sources 菜单项,显示项目中的Data Sources。
3. 将上一步创建的Data Source 拖曳到Windows Form 窗体上。
默认情况下,一个新的DataGridView 控件和Navigation toolbar 控件自动添加到Windows Form窗体上。同时,也自动创建BindingSource 和Binding Navigation 控件,并且上述的两个控件与BindingSource 和Binding Navigation 控件进行了自动绑定。
界面如下:
4. 下面进一步在DataGridView 控件显示Data Source的数据。
在Windows Form 添加如下代码:
private void Form1_Load(object sender, EventArgs e)
{
NorthwindEntities northwindEntities = new NorthwindEntities();
customersBindingSource.DataSource = northwindEntities.Customers;
}
示例程序运行界面如下:
5. 编辑和保存数据
BindingSource 组件确保对DataGridView 控件的编辑更新到Entity Class。当用户完成编辑后,需要保存更新的数据到数据库中。
下一步,将 Navigation toolbar 工具栏的Save 的Enable的属性调整为True。双击Save按钮,在Save 的click 事件添加如下代码:
private void customersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
northwindEntities.SaveChanges();
}
SaveChanges() 方法负责将Entity class 的更新保存到数据库中。
posted @
2008-08-26 21:31 EntLib 阅读(1216) |
评论 (0) |
编辑
ADO.NET Entity Framework 入门示例向导(附Demo程序下载)- 系列2
本篇文章在《
ADO.NET Entity Framework 入门示例向导(附Demo程序下载)》基础上,进一步演示如何使用EntityClient 新数据提供程序、对象服务(Object Services)和LINQ to Entities与概念模型交互。Entity Framework 使用概念层、映射层和逻辑层将关系数据库结构抽象化。EntityClient和Entity SQL(新语言-实体SQL)可以与概念层的实体数据模型(Entity Data Model - EDM)交互。
如下是Entity Framework 组件图:
下面分别演示如何使EntityClient、对象服务Object Services、LINQ to Entities 访问概念数据模型。
1.使用EntityClient
EntityClient 是新的.NET 数据提供程序,EntityClient使用基于文本的语言Entity SQL与概念模型通信。
EntityClient 中的类与常见的 ADO.NET 提供程序中的类相似。例如,使用 EntityCommand 对象执行 EntityClient 查询,这需要 EntityConnection 对象连接到 EDM。当 EntityClient 与 EDM 中的实体交互时,EntityClient 不返回实体的实例而返回 DbDataReader 对象中的所有结果。EntityClient 可以返回一组标准行和列,也可以通过 DbDataReader 返回更复杂的分层数据的表示形式。
示例代码:
string customerID = txtCustomerID.Text.Trim();
// Contains a reference to an Entity Data Model (EDM) and a data source connection.
using (EntityConnection cn = new EntityConnection("Name=NorthwindEntities"))
{
cn.Open();
EntityCommand cmd = cn.CreateCommand();
cmd.CommandText =
"SELECT VALUE c FROM NorthwindEntities.Customers "+
"AS c WHERE c.CustomerID = @customerID";
cmd.Parameters.AddWithValue("customerID", customerID);
DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (rdr.Read())
Console.WriteLine(rdr["CompanyName"].ToString());
rdr.Close();
}
示例使用 EntityClient 连接到概念模型并检索特定的客户。EntityConnection 可以接受概念层的完整连接字符串或 App.Config 文件中连接字符串的名称。连接字符串包含元数据文件(CSDL、MSL 和 SSDL 文件)列表,以及存储的专用于数据库的连接字符串信息。
如下是示例程序使用的数据库连接串:
<connectionStrings>
<add name="NorthwindEntities" connectionString=" metadata= res://NorthwindEDM/NorthwindModel.csdl|res://NorthwindEDM/NorthwindModel.ssdl|res://NorthwindEDM/NorthwindModel.msl; provider=System.Data.SqlClient;provider connection string=" Data Source=localhost; Initial Catalog=Northwind;Integrated Security=True; MultipleActiveResultSets=True""providerName="System.Data.EntityClient" />
</connectionStrings>
2.使用对象服务Object Services
与由 EDM 表示的数据进行交互的另一种方法是使用对象服务Object Services,对象服务允许直接返回对象列表。
下面的示例演示了如何使用对象服务和实体 SQL 进行查询以检索 Customers 列表:
NorthwindEntities northwindContext = new NorthwindEntities();
string customerID = txtCustomerID.Text.Trim();
ObjectQuery<Customers> query = northwindContext.CreateQuery<Customers>(
"SELECT VALUE c FROM Customers AS c WHERE c.CustomerID = @customerID",
new ObjectParameter("customerID", customerID));
foreach (Customers c in query)
Console.WriteLine(c.CustomerID + "---" + c.CompanyName);
在 EDM 中,EntityContainer 由从 ObjectContext(在本示例中为 northwindContext)继承的类表示。ObjectContext 类实施 ObjectQuery<T> 接口,从而使其可以使用实体 SQL 或 LINQ 创建查询。
CreateQuery 方法接受参数化的实体 SQL 语句,该语句定义了将检索 Customers 实体列表的查询。通过使用 foreach 语句对 ObjectQuery<Customers> 进行迭代时将执行作用于数据库的实际 SQL 语句。
3. 使用 LINQ to Entities
上述实体SQL脚本可以通过如下的LINQ to Entities 脚本实现,代码如下:
NorthwindEntities northwindContext = new NorthwindEntities();
string customerID = txtCustomerID.Text.Trim();
var query = from c in northwindContext.Customers
where c.CustomerID == customerID
select c;
foreach (Customers c in query)
Console.WriteLine(c.CustomerID + "---" + c.CompanyName);
本示例程序演示界面如下:
使用实体框架Entity Framework,开发人员可以通过对象模型(而不是逻辑/关系数据模型)专注于数据。一旦完成 EDM 的设计并将其映射到关系存储后,就可以使用 EntityClient、ObjectServices 和 LINQ 等多种技术与对象交互。
posted @
2008-08-25 20:38 EntLib 阅读(1400) |
评论 (0) |
编辑
ADO.NET Entity Framework 入门示例向导(附Demo程序下载)
ADO.NET Entity Framework 是.Net Framework 3.5 SP1 引入的实体框架,它使开发人员可以通过对象模型(而不是逻辑/关系数据模型)专注于数据。实体框架Entity Framework使用概念层、映射层和逻辑层将逻辑数据库结构抽象化。本文
http://forum.entlib.com 开源论坛小组提供。
实体数据模型(Entity Data Model)
实体框架的核心位于其模型中。实体框架支持表示数据库中的关系架构的逻辑存储模型。关系数据库通常存储数据的方式与应用程序使用数据的方式不同。通常,这会迫使开发人员按照数据库包含数据的结构检索数据。因此,开发人员通常将数据加载到更适合处理业务规则的业务实体中。在本示例中,以逻辑模型表示关系数据库的构架,业务实体表示概念模型。实体框架使用映射层在模型之间搭建了桥梁。因此,实体框架的模型中有三个处于活动状态的层:
1. 概念层(Conceptual layer) - 表示数据的概念模型,包括实体和相互关系。
2. 逻辑层(Logical layer)- 描述数据在数据库的存储模型。
3. 映射层(Mapping layer) - 在概念层和逻辑层模型之间建立映射。
这三层允许将数据从关系数据库映射到更加面向对象的业务模型。实体框架提供了使用 XML 文件定义这些层的方法。它还基于概念模型的架构生成了一系列类。可以针对这些类进行编程以直接与数据交互。这提供了抽象级别,因此开发人员可以针对概念模型而不是关系模型进行编程。
下面演示如何使用Entity Framework 构建示例程序。
首先,使用Entity Data Model Wizard创建如下NorthwindDB.edml文件。
概念模型和逻辑模型视图:
本示例程序采用Northwind 示例数据库,下面开始编写代码对Customers表进行增、删、改、查等等操作。
1.新增Customers记录
using (NorthwindEntities myDb = new NorthwindEntities())
{
Customers customer = new Customers();
Random rm = new Random();
customer.CustomerID = "A" + rm.Next(9999).ToString();
customer.CompanyName = "EntLib.com Forum";
customer.Address = "http://www.EntLib.com";
myDb.AddToCustomers(customer);
int count = myDb.SaveChanges();
txtCustomerID.Text = customer.CustomerID;
}
2.更新Customers记录
using (NorthwindEntities myDb = new NorthwindEntities())
{
var query = from customer in myDb.Customers
where customer.CustomerID == txtCustomerID.Text.Trim()
select customer;
foreach (var row in query)
{
row.CompanyName = "Updated Company Name";
}
myDb.SaveChanges();
}
3.删除Customers记录
using (NorthwindEntities myDb = new NorthwindEntities())
{
var query = from customer in myDb.Customers
where customer.CustomerID == txtCustomerID.Text.Trim()
select customer;
foreach (var row in query)
{
myDb.DeleteObject(row);
}
myDb.SaveChanges();
}
4.查询Customers,返回所有记录
using (NorthwindEntities myDb = new NorthwindEntities())
{
dataGridView1.DataSource = myDb.Customers;
}
如下的Entity Framework Demo 程序的运行界面:
posted @
2008-08-23 15:22 EntLib 阅读(1732) |
评论 (2) |
编辑
轻松搭建免费论坛BBS-开源ASP.NET论坛EntLib.com的安装配置
开源ASP.NET论坛EntLib.com /YAF Forum 是基于.NET Framework 2.0/3.0/3.5和SQL Server 构建的免费开源论坛。EntLib.com 开源论坛小组(
http://forum.entlib.com )在 YAF 英文开源论坛的基础上,进行了汉化、更新、增加了部分新的功能。
下面详细演示如何轻松搭建免费论坛:
1. 首先下载EntLib.com 开源论坛源代码。
目前提供的最新版本为v3.0,包含新功能的新版本会不断推出,欢迎反馈你的建议。
2. 下载EntLib.com 开源论坛数据库。
提供的数据库下载文件 – 为SQL SERVER 2005 的MDF和日志文件,只需要在SQL SERVER 2005上附加(attach)下载的数据库即可。
管理员帐号:admin / entlib.com
3. 修改EntLib.com 开源论坛源代码中web.config 配置文件。
EntLib.com开源论坛v3.0 源代码项目为Visual Studio 2005 Web application,您可以通过Visual Studio 2005 打开源项目,进行编辑与编译。(
http://forum.entlib.com 开源论坛小组注: EntLib.com 开源论坛的后续版本升级到.Net Framework 3.5 平台,并且源项目为Visual Studio 2008 Web Application。)
<connstr>user id=USERID;pwd=PASSWORD;data source=(local);initial catalog=EntLib_BBS;timeout=90</connstr>
OK. 现在您可以编译EntLib.com 论坛项目了。
如下是论坛项目的演示界面:
在此感谢YAF开源论坛开发人员提供的优秀的、开源论坛系统。
posted @
2008-08-18 21:07 EntLib 阅读(632) |
评论 (0) |
编辑
轻松搭建博客平台-开源ASP.NET 博客Subtext 的安装
开源ASP.NET博客Subtext 目前发布了最新版2.0,是基于.Net Framework 2.0/3.0的开源ASP.NET 博客系统。本文简要演示如何轻松搭建自己的博客平台(
http://forum.EntLib.com 开源小组编写)。
1.首先下载Subtext 开源代码v2.0。
下载地址:
Subtext v2.0 发布时间 2008-08-09。
2.展开zip压缩文件。
3.假定你已经在本地安装了MS SQL SERVER 2005数据库系统。这里只需要加载(attach)Subtext.Web项目中App_data目录下的SubtextData数据库文件。
4.打开Subtext 项目文件,修改Subtext.Web项目中web.config 配置文件:<connectionStrings>配置节,正确设置数据库连接。
现在,你可以编译Subtext 整个solution 开源代码了。
在本页面配置 Host Administrator 信息,Host Administrator 负责维护Subtext 的安装。Host Administrator 不是任何特定Blog 的管理员,但是可以增加、编辑和删除Blog和用户。Host Administrator 不能删除。
下一步,进入如下配置界面:
如果你仅仅配置一个Blog,也就是说将该Subtext 配置为支持仅一个Blog,你可以点击上述Create按钮,并输入相关信息即可。
6.配置Blog的相关信息。
配置示例界面如下:
点击Save按钮,保存该Blog配置信息。然后访问Blog,博客界面如下:
posted @
2008-08-17 16:45 EntLib 阅读(306) |
评论 (2) |
编辑
开源ASP.NET论坛EntLib.com/YAF 定制化开发 Part 1
目前,开源ASP.NET论坛EntLib.com/YAF 已经升级到.Net Framework 3.5 平台和Visual Studio 2008。我们将根据各方用户的反馈意见,对论坛进行升级,增加更多的功能,更好地满足用户的实际需求。本开源论坛可以免费使用,同时提供项目源代码下载。
下面针对具体的功能,演示如何进行定制化开发。开发完成后的效果如下:
增加论坛帖子的设置精华(精华贴分为1、2、3个等级,采用不同的标识)、设置推荐功能:
1. 首先修改数据表yaf_topic 结构
增加字段 DigestLevel 和 ApproveStatus ,字段类型为 INT ,默认值0,运行为NULL。
2. 修改存储过程[dbo].[yaf_topic_list]
省略前面的script ......
c.PollID,
ForumFlags = d.Flags,
c.DigestLevel, // 增加DigestLevel 输出
c.ApproveStatus // 增加ApproveStatus 输出
FROM yaf_Topic c
JOIN yaf_User b
ON b.UserID = c.UserID
省略后面的script ......
3. 修改TopicLine.cs 控件,增加显示-精华/推荐的标识。
////////////////////////////////////////////////////////////////////////////////////
// updated date: 2008-08-12
// 显示精华贴的标识
////////////////////////////////////////////////////////////////////////////////////
if ( m_row["DigestLevel"] != System.DBNull.Value && Convert.ToInt32(m_row["DigestLevel"]) > 0)
{
html.AppendFormat(" <img src='images/topics/digest_{0}.gif' alt='精华{0}' align='absbottom' />", m_row["DigestLevel"].ToString().Trim());
}
if (m_row["ApproveStatus"] != System.DBNull.Value && Convert.ToInt32(m_row["ApproveStatus"]) > 0)
{
html.Append(" <img src='images/topics/agree.gif' alt='推荐' align='absbottom' />");
}
////////////////////////////////////////////////////////////////////////////////////
4. 修改后台版主的管理界面 – moderate.ascx 用户控件,增加设置精华、设置推荐等等功能,只有版主才可以进行操作。
<asp:repeater id=topiclist runat=server>
<itemtemplate>
<yaf:TopicLine runat="server" DataRow=<%# Container.DataItem %>>
<td class="postheader" align="left" nowrap>
<asp:linkbutton runat=server onload="Delete_Load" commandargument='<%# DataBinder.Eval(Container.DataItem, "TopicID") %>' commandname='delete'>删除话题</asp:linkbutton>
| <asp:linkbutton ID="btnSetDigest" runat=server commandargument='<%# DataBinder.Eval(Container.DataItem, "TopicID")%>' CommandName='digest'>设置精华</asp:linkbutton>:<asp:TextBox ID="txtDigestLevel" runat="server" Width="20" Text='<%# DataBinder.Eval(Container.DataItem, "DigestLevel") %>'></asp:TextBox>
| <asp:linkbutton ID="btnRecommend" runat=server commandargument='<%# DataBinder.Eval(Container.DataItem, "TopicID")%>' CommandName='recommend' Text='<%# GetRecommendOpt(Eval("ApproveStatus")) %>'></asp:linkbutton>
</td>
</yaf:TopicLine>
</itemtemplate>
</asp:repeater>
具体的后台实现代码可以在EntLib.com 开源ASP.NET项目中获得,新项目版本为v3.5,运行在.Net Framework 3.5平台之上,开发环境为 Visual Studio 2008。版主后台维护界面如下:
原文链接:
posted @
2008-08-16 08:42 EntLib 阅读(1124) |
评论 (2) |
编辑
轻松玩转MSMQ, WCF和 IIS 7.0
MSMQ, WCF and IIS: Getting them to play nice
by Tom Hollander
方案的设计目标是在Client/Server端建立可靠的、异步的通信。系统采用MSMQ作为传输机制,因为MSMQ支持可靠的队列通信。MSMQ部署在三方Server上(一般集群部署,避免单点故障)。Client端应用程序使用WCF的NetMsmqBingding 来发送消息到MSMQ Server的私有队列。Service 服务程序将部署在IIS 7.0,并采用Windows Activation Services(WAS)来监听消息队列上的新消息。通过SMSvnHost.exe – Windows 服务程序来实现监听,当有消息到达时,它负责在IIS Worker process激活service服务,然后service服务将处理消息。整体的架构如下所示:
- 在 Part 1部分,演示创建一个Client程序和部署在IIS 7.0 的Service服务,接着Client/Server 采用WCF的NetMsmqBinding绑定,通过MSMQ进行通信。
- 在 Part 2部分,将Part 1中相同的应用程序进行跨多Server进行部署,同时启动MSMQ的传输安全特性。
- 在 Part 3部分,进一步开启事务性队列,确保消息不会丢失。
posted @
2008-08-12 19:55 EntLib 阅读(1961) |
评论 (12) |
编辑
在BizTalk Server 2006 R2 中调用 WCF Services – Part 3
前一部分文章:
在BizTalk Server 2006 R2 中调用 WCF Services – Part 1
在BizTalk Server 2006 R2 中调用 WCF Services – Part 2
3. 部署BizTalk 项目
在确保BizTalk 编译通过后,设置必要的BizTalk 项目属性,然后发布项目。如下是BizTalk Administration窗口:
下面导入前面WCF Consume Service 向导产出的端口绑定文件,如下图所示。分别选择第一个、第二个绑定文件,逐步导入。
其中一个端口采用WCF-WSHttp 作为传输类型,另一个端口采用WCF-Custom 作为传输类型。如下图所示:
现在,整个BizTalk 项目已经全部完成。下面采用如下的Message 作为测试:
<ns0:Rootxmlns:ns0="http://BizTalkDemo.msgAccount">
<ID>ID_0</ID>
<Name>EntLib.com</Name>
<Age>28</Age>
</ns0:Root>
Orchestration 流程同时调用AddAccount方法和GetAccounts方法。在开始测试之前,需要先启动 WCF Services,然后启动BizTalk项目,并传入测试消息。如下是测试结果:
《在BizTalk Server 2006 R2 中调用 WCF Services》 系列文章已经全部完成 – EntLib.com BizTalk 小组。
posted @
2008-08-07 21:05 EntLib 阅读(1055) |
评论 (1) |
编辑
在BizTalk Server 2006 R2 中调用 WCF Services – Part 2
前一部分文章:
在BizTalk Server 2006 R2 中调用 WCF Services – Part 1
2. 构建BizTalk Orchestration 流程
在BizTalk Orchestration 流程中,我们定义如下的流程,演示如何通过WCF Adapter调用 WCF Services中的方法。
这里,演示了调用WCF Services 的 AddAccount方法和GetAccounts方法。
在调用WCF Services 的AddAccount 方法之前,需要准备好要传入的参数,示例中采用BizTalk Map 进行消息的转换。
在调用WCF Services 的GetAccounts 方法之前,也需要准备好要传入的参数,示例中采用Message Assignment / Biztalk 表达式编辑器进行消息的构造。示例代码如下:
System.Diagnostics.EventLog.WriteEntry(" === start to build msgGetAccounts === ", "start");
xmlDoc = new System.Xml.XmlDocument();
xmlDoc.LoadXml("<ns0:GetAccounts xmlns:ns1=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" xmlns:ns0=\"http://Microsoft.ServiceModel.Samples\"> </ns0:GetAccounts>");
msgGetAccounts.parameters = xmlDoc;
System.Diagnostics.EventLog.WriteEntry(" === end === ", "end");
在上述BizTalk Orchestartion 流程图右边的Port 端口,是WCF Services 的逻辑端口,在导入WCF Services 元数据的过程中产生的。
下一步将演示如何部署BizTalk 项目,配置WCF Adapter,并演示对 WCF Services 的调用。
posted @
2008-08-04 23:41 EntLib 阅读(1055) |
评论 (2) |
编辑
在BizTalk Server 2006 R2 中调用 WCF Services – Part 1
本篇文章演示如何在BizTalk Server 2006 R2 项目中通过新增的WCF Adapter调用WCF Services。(This post shows you how to consume WCF Services via new WCF Adapter in BizTalk Server 2006 R2)
示例应用方案:假定你已经设计、实现并部署了WCF Services。现在你想在BizTalk Orchestration 流程中发送/接收消息给WCF Services。BizTalk 通过WCF Adapter 与 WCF 应用程序通信,这些可以通过在BizTalk 中配置发送和接收端口。这篇文章主要演示如何通过BizTalk consume WCF 向导来简化端口的创建,尤其是建立WCF 方法和SOAP Actions之间的映射,或者是端口配置文件。
首先,建立假设你已经建立、并部署好了WCF Services。这里,使用如下的WCF service(提供WCF 演示项目源代码下载!)
下面是通过C# Application 调用上述WCF Service 的运行情况:
1. 使用WCF Services Consume 向导调用WCF Services
通过这一向导,你可以基于WCF Services描述文件,创建Schema 文件和 Port binding configuration 文件,这些文件是BizTalk 项目所必须的。
在BizTalk 项目项目中,选择增加“Add Generated Items”,弹出如下窗口:
点击 Next 按钮,在接下来的窗口中,输入WCF Metadata Address,用来生成Metadata数据:
点击 Next 按钮,在接下来的窗口中,输入Namespace:
最后,点击Import 按钮,导入Schema 和相应的端口绑定文件到BizTalk 项目中。Schema 文件是基于调用的WCF Services 元数据生成的,可以作为后续request/response services的multipart messages。下面是BizTalk 项目中生成的BizTalk Schema 文件:
现在,我们已经完成了在BizTalk 项目中导入WCF Services 相关的Schema 和WCF 端口绑定文件。
接下来的文章中,我们将演示如何构建BizTalk Orchestration,以及如何在Orchestration 流程中使用Schema 消息,如何与WCF Adapter 交互等等。
posted @
2008-08-03 10:36 EntLib 阅读(717) |
评论 (1) |
编辑
WCF 简单示例程序(源码下载)
本示例程序演示如何编写一个简单的WCF 示例程序。
示例WCF 项目源码下载!
如何使用WCF 示例代码:
Server 端:Console 程序,WCF Service 承载在Console 程序中。
[ServiceContract(Namespace = "http://microsoft.servicemodel.samples/")]
public interface IBankService
{
[OperationContract]
int AddAccount(string clientName, int clientAge);
[OperationContract]
bool RemoveAccount(int accountNumber);
[OperationContract]
List<String> GetAccounts();
}
class BankService: IBankService
{
private List<Account> _accounts = new List<Account>();
private int _idGenerator = 0;
public int AddAccount(string clientName, int clientAge)
{
Console.WriteLine(OperationContext.Current.SessionId);
_idGenerator++;
Account acc = new Account(_idGenerator, clientName, clientAge);
_accounts.Add(acc);
Console.WriteLine("ADD - " + acc.ToString());
return _idGenerator;
}
......
Client 端: 也是一个Console 程序,负责调用/测试 WCF Services。
using (ChannelFactory<IBankService> bankFactory =
new ChannelFactory<IBankService>("MyClient"))
{
IBankService bankProxy = bankFactory.CreateChannel();
Console.WriteLine("Adding John , 20 years");
bankProxy.AddAccount("John", 20);
Console.WriteLine("Adding Peter , 21 years");
bankProxy.AddAccount("Peter", 21);
Console.WriteLine("Adding Andrew , 25 years");
bankProxy.AddAccount("Andrew", 25);
DisplayAccounts(bankProxy.GetAccounts());
Console.WriteLine("Removing John");
bankProxy.RemoveAccount(1);
DisplayAccounts(bankProxy.GetAccounts());
Console.WriteLine();
Console.WriteLine("Press <Enter> to close");
Console.ReadLine();
}
运行WCF 示例项目:
启动WCF Server 端 Console 程序,运行界面如下:

下面是通过C# Application 调用上述WCF Service 的运行情况:

恭喜!你现在已经完成了一个WCF Service 程序!
posted @
2008-08-03 08:16 EntLib 阅读(222) |
评论 (0) |
编辑
ASP.NET 3.5 新特性开发向导实践(附项目源码下载)- Part 2
上一部分内容:
ASP.NET 3.5 新特性开发向导实践(附项目源码下载)- Part 1
5. 设置LinqDataSource 控件的EnableInsert 属性 - EnableInsert=”True”
然后增加ListView 的Insert Item Template (注:InsertItemTemplate 有可能在前面的过程中自动生成)。
<InsertItemTemplate>
<span style="">CustomerID:
<asp:TextBox ID="CustomerIDTextBox" runat="server" Text='<%# Bind("CustomerID") %>' />
<br />
CompanyName:
<asp:TextBox ID="CompanyNameTextBox" runat="server" Text='<%# Bind("CompanyName") %>' />
<br />
ContactName:
<asp:TextBox ID="ContactNameTextBox" runat="server" Text='<%# Bind("ContactName") %>' />
<br />
ContactTitle:
<asp:TextBox ID="ContactTitleTextBox" runat="server" Text='<%# Bind("ContactTitle") %>' />
<br />
Address:
<asp:TextBox ID="AddressTextBox" runat="server" Text='<%# Bind("Address") %>' />
<br />
City:
<asp:TextBox ID="CityTextBox" runat="server" Text='<%# Bind("City") %>' />
<br />
Region:
<asp:TextBox ID="RegionTextBox" runat="server" Text='<%# Bind("Region") %>' />
<br />
PostalCode:
<asp:TextBox ID="PostalCodeTextBox" runat="server" Text='<%# Bind("PostalCode") %>' />
<br />
Country:
<asp:TextBox ID="CountryTextBox" runat="server" Text='<%# Bind("Country") %>' />
<br />
Phone:
<asp:TextBox ID="PhoneTextBox" runat="server" Text='<%# Bind("Phone") %>' />
<br />
Fax:
<asp:TextBox ID="FaxTextBox" runat="server" Text='<%# Bind("Fax") %>' />
<br />
<asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" />
<br />
<br />
</span>
</InsertItemTemplate>
同时设置ListView 控件的InsertItemPosition 属性为:FirstItem
6. 分页
设置ListView 的分页属性,脚本如下:
<asp:DataPager ID="DataPager1" runat="server" PageSize="5">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
上述脚本设置PageSize=5
7. ASP.NET AJAX 的使用
最后,我们增加AJAX功能,实现在增加记录时,局部更新页面,而不是重新load整个页面。
Visual Studio 2008 已经内置了ASP.NET AJAX Library 类库,因此我们只需要展开AJAX Extensions,拖拉 ScriptManager 和 UpdatePanel 控件到页面。ScriptManager 控件负责装载ASP.NET AJAX 所需要的JavaScript 类库。UpdatePanel 则包含整个ListView 脚本。示例代码如下:
<asp:UpdatePanel runat="server">
<ContentTemplate>
这里是ListView 控件的脚本
</ContentTemplate>
</asp:UpdatePanel>
本示例开发软件:Visual Studio 2008 和 SQL SERVER,使用Northwind 示例数据库的Customers表。
下载演示项目源代码!
posted @
2008-07-31 22:26 EntLib 阅读(1244) |
评论 (1) |
编辑
ASP.NET 3.5 新特性开发向导实践(附项目源码下载)- Part 1
本篇文章将演示ASP.NET 3.5 部分新功能、新特性,包括LINQ、ListView控件、LinqDataSource、DataPager 分页控件、ASP.NET AJAX等等。
1. 创建Web Application – EntLib.com.NewFeatureDemo
2. 增加新的项目文件,选择 LINQ to SQL Classes,命名为 Customers.dbml,如下图所示:
接着打开 Server Explorer,并连接到Northwind 示例数据库,拖放 Customers 表到工作区。如下图所示:
保存文件。此时,你可以发现自动生成的代码文件:Customers.designer.cs 文件,包含如下类的定义:
public partial class CustomersDataContext : System.Data.Linq.DataContext
3. 下面是LinqDataSource 的使用。
首先将LinqDataSource 控件拖放到 Web Form 中,自动生成的脚本如下:
<asp:LinqDataSource ID="linqDSCustomers" runat="server">
</asp:LinqDataSource>
在设计窗口,选择 Configure Data Source ,如下图所示:
在弹出窗口中,选择“