使用SOA来实现两个数字的相加,不包含验证,仅供练习使用。

PDF文档下载地址:http://files.cnblogs.com/chenyongblog/SOA_Demo.pdf

源码下载:http://files.cnblogs.com/chenyongblog/WCFTest.7z

1、首先定义一个接口ICalculate

(1)引入System.ServiceModel程序集

(2)公开接口,使用ServiceContract特性定义服务契约(标注interface),OpeattionContract特性标注Method

using System.ServiceModel;

namespace CalculateImplement
{
[ServiceContract]
public interface ICalculate
{
[OperationContract]
double Add(double x, double y);
}
}

2、接口的实现

namespace CalculateImplement
{
public class Calculate : ICalculate
{
public double Add(double x, double y)
{
return x + y;
}
}
}

3、Host管理服务

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup> <!--WCF Setting-->
<system.serviceModel>
<services>
<service name="CalculateImplement.Calculate" behaviorConfiguration="serviceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:9001"/>
</baseAddresses>
</host>
<endpoint name="CalculateImplementEndPoint"
address="CalculateImplement"
binding="basicHttpBinding"
contract="CalculateImplement.ICalculate"/>
<endpoint name="mex"
binding ="mexHttpBinding"
contract="IMetadataExchange"
address="mex"/>
</service>
</services> <behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
using System;
using System.ServiceModel;
using CalculateImplement; namespace HostService
{
class Program
{
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(Calculate)); try
{
host.Open();
Console.WriteLine("Service is open......");
Console.ReadLine();
host.Close();
}
catch (Exception et)
{ throw et;
}
}
}
}

4、开启Host,在Client端添加Service,修改命名空间

Client代码:

using System;

namespace Client
{
class Program
{
static void Main(string[] args)
{
CalculateService.CalculateClient calculate = new CalculateService.CalculateClient();
Console.WriteLine("SOA Demo");
Console.Write("Please enter the first number:");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.Write("Please enter the second number:");
double num2 = Convert.ToDouble(Console.ReadLine());
double result = calculate.Add(num1, num2);
Console.WriteLine("Add result:" + result);
Console.ReadLine();
}
}
}

程序运行:

SOA Demo的更多相关文章

  1. 基于SOA分布式架构的dubbo框架基础学习篇

    以需求用例为基,抽象接口,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元.接口.功能.集成四层质量管理,自动化集成.测试.交付全程支持. 3个大阶段(需求分析阶段 ...

  2. CJCMS系列--demo代码篇

    CJCMS之前写了不多的文章,但是一直没有上代码,也许代码写得很乱很差,但是我觉得总得有个开始,持续改进.作为一个喜欢分享的程序员,我决定分享一下. 前面文章中的结构比较全,而此次我给出的demo,没 ...

  3. IDDD 实现领域驱动设计-SOA、REST 和六边形架构

    上一篇:<IDDD 实现领域驱动设计-架构之经典分层> 阅读目录: SOA-面向服务架构 REST 与 RESTful 资源(Resources) 状态(State) 六边形架构 DDD ...

  4. SOA、ESB、NServiceBus、云计算 总结

    SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统.与此同时,SOA 还实现了整合资源,资源复用. SO ...

  5. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  6. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  7. NET Core1.0之CentOS平台开发控制台程序DEMO

    微软发布NET Core1.0正式版本,并支持了red hat linux平台,所以在CentOS平台,通过编辑器玩下控制器程序. 一.安装.NET Core SDK 先下载SDK并放在指定目录. s ...

  8. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(二):配置WinClient分布式运行环境

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  9. 面向服务的架构SOA

    SOA简介 SCA实现SOA的最佳方式 Apache开源框架Tuscany实现SCA架构 SOA简单描述: SOA(Service-Oriented Architecture)面向服务的体系架构.为了 ...

随机推荐

  1. web前端开发(2)

    搜索引擎只能通过标签判断网页的语义. table布局代码量大.对搜素引擎不友好,应该使用div+css布局,使用css控制网页中元素的大小.颜色.位置,让html在样式.结构混杂的局面中挣脱出来,专注 ...

  2. Oracle 基础 数据库备份与恢复

    一.为什么需要数据备份 造成数据丢失的主要原因: 1.介质故障. 2.用户的错误操作. 3.服务器的彻底崩溃. 4.计算机病毒. 5.不可预料的因素. Oracle中故障类型分为以下4种. 1.语句故 ...

  3. msql_DDL_创建table

    • 语法: create table 表名(• 列名1 列类型 [<列的完整性约束>],• 列名2 列类型 [<列的完整性约束>],• ... ... ); • PRIMARY ...

  4. php的一些简单算法程序(冒泡、快速等)

    冒泡排序: function buttle_sort($array) { $len=count($array); if($len<2){ return $array; } for($i=0;$i ...

  5. CentOS安装VMware Tools

    新建cdrom挂载目录 mkdir /mnt/cdrom 挂载光驱 mount -t auto /dev/cdrom /mnt/cdrom这命令就是把CentOS CDROM挂载在/mnt/cdrom ...

  6. innerHTML与innerText的PK

    一.innerText属性用来定义对象所要输出的文本,在本例中innerText把对象it中的文本"您喜欢看微微一笑很倾城吗?"变成了"超级喜欢!"(语句it. ...

  7. 【CSS3】---嵌入字体@font-face

    @font-face能够加载服务器端的字体文件,让浏览器端可以显示用户电脑里没有安装的字体. 语法: @font-face { font-family : 字体名称; src : 字体文件在服务器上的 ...

  8. Part 7Handling events in AngularJS

    Let us understand with an example. Here is what we want to do. 1. Display the list of technologies i ...

  9. 1.linux概述及如何访问

    1.linux终端访问及退出 1.1访问 linux有7个终端:(1个真实终端+6个虚拟终端) ctril+alt+Fn (Fn是指F1\F2..)切换终端 1.2退出: shutdown 缓冲一会关 ...

  10. VC按钮控件实现指示灯效果

    VC为按钮控件添加图片的方法有很多种: 直接调用SetBitmap:  CButton pButton->SetBitmap(hBitmap); 使用CButtonST控件: 使用CDC: 使用 ...