我的WCF项目系列之五----WCF 面向对象开发

在学习WCF之前,就见到过另一种编程思想,叫做面向服务开发,哈哈,当时不甚了了。

前面提到,我之前一直用Delphi开发的,所以是学习的Delphi面向对象开发,记得足足有3个多月,写了22万行代码,才算是明白面向对象开发。对我以后的工作和学习打下了结实的基础。

很长时间,我都是用WCF开发服务,用Delphi开发客户端,其中数据通过WCF交互的部分没有用到面向对象开发的思想,一直到转到C#开发WinForm。

用C#开发了一些客户端期间,学习了一本书《Expret C#2005 Business Objects》,虽然最后也没有用轨道CSLA架构,可是对我的启发很大。

一直到自己摸索到的开发风格。一律用类作为WCF数据交互的参数基础。

略写如下。

1. 先对一个系统要操作的数据进行规划,类化,即相关的数据组成一个类,

2. 对主要数据集部分做成段或类,生成类的泛型列表属性

3. 当然还要完善这个类的其他成员,方法等,才能写成一个有用的类

4. 把类作为ref读写参数,或作为返回值,返回处理后的她自己

例如:

using System;

using System.Collections.Generic;

using System.Data;

using System.Text;

using myHomeLibrary;//这里写了许多基础的东西,写了一些通用的属性,成员等,算是一个基础类

namespace BufferLibrary

{

public class BufLineItem ///主要数据集部分

{

private string _line = "N/A";

private string _onLine = "N/A";

private string _onLineFeederList = "N/A";

private string _linkModel = "N/A";

private string _linkMO = "N/A";

private string _typeF = "F";

public BufLineItem ()

{

//

}

public string LineName

{

get

{

return _line;

}

set

{

if (_line == value)

return;

_line = value;

}

}

public string OnLineModel

{

get

{

return _onLineModel;

}

set

{

if (_onLineSFCModel == value)

return;

_onLineSFCModel = value;

}

}

public string OnLineFeederList

{

get

{

return _onLineFeederList;

}

set

{

if (_onLineFeederList == value)

return;

_onLineFeederList = value;

}

}

public string LinkSFCModel

{

get

{

return _linkSFCModel;

}

set

{

if (_linkSFCModel == value)

return;

_linkSFCModel = value;

}

}

public string LinkMO

{

get

{

return _linkMO;

}

set

{

if (_linkMO == value)

return;

_linkMO = value;

}

}

/// <summary>

/// TypeF的標示

/// </summary>

public string TypeF

{

get

{

return _typeF;

}

set

{

if (_typeF == value)

return;

_typeF = value;

}

}

}

public class BufLineItemS : CHome

{

//

private List<BufLineItem> _lineItemS = new List<BufLineItem>();//泛型列表属性成员

#region 构造函数,析构函数

public CBufLineItemS()

{

ProjectName = "LineItemS";

ProjectType = 0;

}

#endregion

#region 自定義屬性

public List<BufLineItem> LineItemS//泛型列表属性

{

get

{

return _lineItemS;

}

set

{

if (_lineItemS == value)

return;

_lineItemS = value;

}

}

#endregion

#region 自定義方法

public BufLineItem ItemOfLine(string _tmpLine)

{

BufLineItem _tmpItem = new BufLineItem();

//

foreach( BufLineItem _item in _lineItemS )

{

if (_item.LineName == _tmpLine)

{

_tmpItem = _item;

break;

}

}

//

return _tmpItem;

}

#endregion

//

}

还有一个把LineItemS转换成DataTable的方法,就不写详细代码啦,以便于客户端DataGrid或作为数据集操作处理

}

WCF服务端是这么写的

[OperationContract]

bool ExecuteBufLine(ref CBufLineItemS _tmpBufLineItemS, string ftype);

public bool ExecuteBufLine(ref CBufLineItemS _tmpBufLineItemS, string ftype)

{

bool _boRes = false;

try

{

//这里是作为数据库处理,得到数据,就不详细谢啦

_tmpBufLineItemS.LineItemS.Clear();//这里清空原有数据

BufLineItem _tmpBufLineItem = new BufLineItem() { LineName = _tmpLine, LinkMO = _tmpWO, LinkModel = _tmpLinkModel, OnLineSFCModel = _tmpOnLineModel, OnLineFeederList = _tmpOnLineBom, Type34F = _tmp34f };//这里是根据数据集处理结果生成新的

_tmpBufLineItemS.LineItemS.Add(_tmpBufLineItem);//添加数据集

}

_boRes = true;

}

catch

{

_boRes = false;

}

return _boRes;

}

基本操作就是上述的方式,实际工作中,当然比非面向对象的方式快捷多啦。具体代码部分以后再补上。

你可能感兴趣的:(我的WCF项目系列之五----WCF 面向对象开发)