SOA Demo
使用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的更多相关文章
- 基于SOA分布式架构的dubbo框架基础学习篇
以需求用例为基,抽象接口,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元.接口.功能.集成四层质量管理,自动化集成.测试.交付全程支持. 3个大阶段(需求分析阶段 ...
- CJCMS系列--demo代码篇
CJCMS之前写了不多的文章,但是一直没有上代码,也许代码写得很乱很差,但是我觉得总得有个开始,持续改进.作为一个喜欢分享的程序员,我决定分享一下. 前面文章中的结构比较全,而此次我给出的demo,没 ...
- IDDD 实现领域驱动设计-SOA、REST 和六边形架构
上一篇:<IDDD 实现领域驱动设计-架构之经典分层> 阅读目录: SOA-面向服务架构 REST 与 RESTful 资源(Resources) 状态(State) 六边形架构 DDD ...
- SOA、ESB、NServiceBus、云计算 总结
SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统.与此同时,SOA 还实现了整合资源,资源复用. SO ...
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- NET Core1.0之CentOS平台开发控制台程序DEMO
微软发布NET Core1.0正式版本,并支持了red hat linux平台,所以在CentOS平台,通过编辑器玩下控制器程序. 一.安装.NET Core SDK 先下载SDK并放在指定目录. s ...
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(二):配置WinClient分布式运行环境
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- 面向服务的架构SOA
SOA简介 SCA实现SOA的最佳方式 Apache开源框架Tuscany实现SCA架构 SOA简单描述: SOA(Service-Oriented Architecture)面向服务的体系架构.为了 ...
随机推荐
- Oracle 基础 <2> --函数
一:函数的定义 函数是用于返回特定数据的PL/SQL程序块 (函数必须返回一个值) 语法: create [or replace] function function_name--函数名称 [(par ...
- C#中的virtual & override
很奇怪的设计,需要靠着两个Keyword共同作用,才能完成多态——而不是类似Java那样的默认多态.所谓共同作用,即基类使用virtual 标示函数,子类使用override显示重写. 有点奇怪,MS ...
- 剑指Offer31 把数组排成最小的数
/************************************************************************* > File Name: 31_SortAr ...
- 关于cornerstone无法上传library文件的问题
在CornerStone中先选中左边的项目: 然后在菜单栏里面选择View->ShowIgnoreItems, 再选择项目中的library文件,点击Add按钮即可上传到服务器:
- css改变谷歌浏览器的滚动条样式
详细内容请点击 /*---滚动条默认显示样式--*/ ::-webkit-scrollbar-thumb{ height:50px; outline-offset:-2px; ...
- JavaScript引用类型(二)
Date类型 Javascript中的Date类型是采用Java中的java.util.Date类基础上构建的,使用UTC时间来保存数据,可以精确到1970年1月1日之前或之后的285616年 创建一 ...
- Part 32 Abstract classes in c#
- webkit常见问题汇总
前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, Resourc ...
- powershell查看pc信息的常用命令
Ps:powershell功能十分强大,这里只是简单说明一些比较常用的 get-wmiobject(获取对象) 查看本机的BIOS信息 1. 使用命令:get-wmiobject Wi ...
- asp.net 下载Excel (数据流,不保存)--客户端
效果图: 前端页面 <html> <head> <title>Test For Excel</title> <script src="j ...