SQL Server提早公布4/25上海俱乐部活动演讲“集中化WCF服务配置管理”示例程序

承蒙4/25上海文化馆活动团团队约,本人有幸将以此次活动着以及大家享受一下“集中化WCF服务配置管理”方面的一些探讨。为了吃大家对活动当天己开口的话题提前生一个又直观的刺探,在此提前介绍一下暨常我会演示的言传身教程序。

本示例程序具体演示如下内容:

1) 基于SQL Server数据库的集中化WCF服务配置管理;

2) 集中化ConnectingString管理;

3) 集中化AppVariable管理;

4) 基于集中化配置管理之WCF ServiceHostFactory和WCF ServiceLocator;

5) 基于集中化配置管理之跨WCF的LINQ
Style分页、排序查询及DataSource控件的下;

6) 整合本地ServiceLocator的WCF服务发布和花;

下载地址(请动SVN客户端下载):

http://nintegrate.googlecode.com/svn/trunk/

安说明:

吁先下SVN客户端下载所有代码,然后根据samples\setup目录中之readme.txt初始化配置数据库并打开示例的solution。要运行本示例,您需要至少安装了IIS6,VS2008与SQL
Server 2005或2008或Express。如果如运行Net.Tcp Binding的演示,需要IIS7。

示范工程:

本示例程序由下四只C#工程项目组成:

  1. SimpleServiceContracts – 定义了ServiceContracts和DataContracts

  2. SimpleServiceImpls – 包含了ServiceContracts的贯彻类似

  3. SimpleServiceProvider – 服务发布Web程序

  4. SimpleServiceConsumer – 服务消费Web程序

马上四个示范工程同时分别因让由NIntegrate, NIntegrate.Query,
NIntegrate.Query.Command和NIntegrate.Web这四只工程做的名叫吧NIntegrate的冲WCF和集中化配置的SOA框架(关于这框架的还多内容,Teddy的博客以后会起更多介绍,这里被我们或事先关注示例程序本身)。

SimpleServiceProvider程序

本程序使用IIS发布了一定量只WCF服务QueryService.svc和SimpleService.svc。这片独.svc文件之始末如下:

QueryService.svc – NIntegrate查询服务,由NIntegrate内置实现

1 <%@ ServiceHost Service=”NIntegrate.Query.IQueryService, NIntegrate.Query, Version=0.5.0.1, Culture=neutral, PublicKeyToken=e2b9e2165dbdd5e6″ Factory=”NIntegrate.WcfServiceHostFactory, NIntegrate, Version=0.5.0.1, Culture=neutral, PublicKeyToken=e2b9e2165dbdd5e6″ %>

 

SimpleService.svc –
一个简短的SayHello服务,用于演示集中化配置的多Binding,多Endpoint的WCF服务发布和花

1 <%@ ServiceHost Service=”SimpleServiceContracts.ISimpleServiceDemo, SimpleServiceContracts” Factory=”NIntegrate.WcfServiceHostFactory, NIntegrate, Version=0.5.0.1, Culture=neutral, PublicKeyToken=e2b9e2165dbdd5e6″ %>

 

此值得注意的有些许接触:

1.
立半个劳务之Service指定的凡劳务的ServiceContract接口类型而非服务之实际实现类似。

2.
立马点儿个劳务通过由NIntegrate实现的WcfServiceHostFactory自动通过点名的ServiceContract接口类型和依据SQL
Server的集中化配置数据库创建相应的ServiceHost,并公布服务。

 

解析:

WcfServiceHostFactory于中间是哪通过点名的ServiceContract接口类型找到切实可行的兑现类似的为?是通过一个而当Web.config中布局的地头ServiceLocator实现之。NIntegrate内置实现了一个根据SQL
Server数据库集中化配置的AppVariableServiceLocator,并提供了有益之接口可以与老三在的ServiceLocator,如Unity,Castle这样的IoC容器进行整理合来自动定位接口的实现。在本示例中,ServiceContract接口类型对应之劳务实现类似,是透过数据库被的AppVariable表进行映射,并采取AppVariableServiceLocator类进行一定的。

 

于SimpleServiceProvider的Web.config中,只待设置一个AppCode和一个ConnectionString,无需任何WCF配置信息:

 1 …
 2 <appSettings>
 3   <add key=”NIntegrate.Configuration.AppCode” value=”SP_SSP” />
 4   <!–To set service locator wrapper for external IoC container here, by default, the build-in AppVariableServiceLocator is used.–>
 5   <!–<add key=”NIntegrate.ExternalServiceLocator” value=”NIntegrate.AppVariableServiceLocator, NIntegrate, Version=0.5.0.1, Culture=neutral, PublicKeyToken=e2b9e2165dbdd5e6″/>–>
 6 </appSettings>
 7 <connectionStrings>
 8   <add name=”NIntegrate.Configuration” connectionString=”Data Source=vista;Initial Catalog=NIntegrateDemo;Persist Security Info=True;User ID=nbear;Password=nbear” providerName=”System.Data.SqlClient” />
 9 </connectionStrings>
10 …

 

SimpleServiceConsumer程序

本程序也是一个布局于IIS下之Web程序,它仅含有一个Default.aspx页面及一个Web.config文件。

他的Web.config和SimpleServiceProvider的Web.config一样,只待装一个AppCode和一个ConnectringString:

1 …
2 <appSettings>
3   <add key=”NIntegrate.Configuration.AppCode” value=”SP_SSC”/>
4 </appSettings>
5 <connectionStrings>
6   <add name=”NIntegrate.Configuration” connectionString=”Data Source=vista;Initial Catalog=NIntegrateDemo;Persist Security Info=True;User ID=nbear;Password=nbear”
7     providerName=”System.Data.SqlClient”/>
8 </connectionStrings>
9 …

 

外的Default.aspx页面则演示了QueryService.svc和SimpleService.svc这简单只Service的运。运行Default.aspx页面的界面如下:

SQL Server 1

起界面可以看来,这里发出几乎独GridView可以排序和编QueryService和SimpleService的Binding和Endpoint,他们都是通过下由NIntegrate提供的QueryDataSource控件基于QueryService.svc实现之。最后一履行是SimpleService.svc的调用的输出及当下应用的WCF
Binding类型。

现阶段,QueryService和SimpleService都采取数据库中配备的“Sample – Shared
Binding”这个Binding运行的,我们可一直当GridView中修改Binding的类以及布置信息。修改Binding后,需要recycle
IIS中之AppPool使新的布生效。(注意,只有IIS7支持修改成非HTTP的Binding,并且只要协调当IIS中启用相应的net.tcp或net.pipe
Binding支持)。

SimpleService有次独名吧“SimpleServiceDemo Binding
2”的NetTcpBinding,如果您运的是IIS7,并且一度启用了IIS中的net.tcp
Binding,可以点击Enable将她激活。recycle IIS中之AppPool并重行运行
Default.aspx的言辞,您将看到,最后一行的Binding
Type变成“NetTcpBinding”。也就是说,如果一个Service有差不多只激活状态的两样类别的Endpoint,NIntegrate提供的ServiceManager会保证最好理想的Binding被应用。例如,这里SimpleService有WSHttp和NetTcp这有限单Binding,当然NetTcp是最最了不起的。更进一步。假如,这里还安排了本地ServiceLocator,并也SimpleService指定了相应的实现类似,那么,您也可猜到,“更优良”的本地Service实现会晤给下,而休会见走WCF通道。

 

QueryDataSource控件又是怎么样通过QueryService.svc实现对Service,
Binding和Endpoint这些部署信息之展现、排序和改动的也罢?事实上,QueryService提供的询问语法不仅支持简的CRUD,还支持LINQ
Style的询问语言,多种数据库支持,数据库特有的函数扩展以及分页排序,并且询问语言可以跨WCF和COM兼容(也就是说,可以当非.NET应用程序如ASP中运用同样的LINQ
Style查询语言访问WCF发布的劳动远程进行相同的分页排序查询)。这里容我卖个关节,就无多介绍了。大家可以择自己拘留代码(包括NIntegrate核心类库和本示例都是依据BSD协议公开任何源代码的),来出席俱乐部活动和Teddy一起追或者当Teddy的博客将来专门的专题来介绍。

好了不畏优先介绍这么多了。有其他意见以及建议欢迎通过各种渠道和Teddy交流。如果你来与4/25的移位,当然再接了。不过,我懂得许多情人周末打算去押上海车展的,没涉及,顶顶这个帖子我吧满足了。

//我是结尾符

相关文章