Websharp使用说明之六(转)

业务服务的提供

业务外观层(Business Facade)的目的,是隔离系统功能的提供者和使用者,更明确地说,是隔离业务逻辑的软件的用户界面(可以参见Facade设计模式)。可以使用现有的任何方法来构建构建这个层次,在我们提供的例子中,我们使用了Web Service。

Websharp应用系统的配置

1、 缓存的配置

Websharp使用了微软的Cached Application Block来缓存数据,因此,下面的缓存信息必须在应用程序中添加。关于Cached Application Block,可以参见微软的相关文档。

<!-- DATA PROTECTION SETTINGS

Use DataProtectionInfo to set the assembly and class which implement

the dataprotection interfaces for the cache.

--&gt

ClassName="Microsoft.ApplicationBlocks.Cache.DataProtection.DefaultDataProtection"

ValidationKey="Oci44OQ9C3xAdQ3/BMHpksPfzeTezLkXen/ahQ8T7nVk/KMgAFnssQJr00KUNhRso+MpLVwAinGep6i14X9M+A=="

Validation="SHA1"/>

<!-- STORAGE SETTINGS

Use StorageInfo to set the assembly and class which implement

the storage interfaces for the cache.

Modes: InProc, OutProc

--&gt

<!--StorageInfo AssemblyName="Microsoft.ApplicationBlocks.Cache" ClassName="Microsoft.ApplicationBlocks.Cache.Storages.SqlServerCacheStorage" Mode="InProc" ConnectionString="user id=sa;password=msljkdv1;Network=DBMSSOCN;DATABASE=cacheab;SERVER=msljksrv02" Encrypted="true" Validated="true" ApplicationName="Sports" RemotingUrl="tcp://localhost:8282/CacheService" /--&gt

<!----&gt

<!--

MmfDictionarySize - It is the size (in bytes) of the dictionary object (in MmfCacheStorage) used to store the references of cache items.

--&gt

<!-- SCAVENGING SETTINGS

Use the ScavengingAlgorithm to set a class that will be executed when

scavenging is performed.

--&gt

<!-- EXPIRATION SETTINGS

Use the ExpirationCheckInterval to change the interval to check for

cache items expiration. The value attribute is represented in seconds.

--&gt

2、 系统持久化配置信息

配置PersistenceProperty,对于Web应用系统,可以在Global.asax中配置,对于Windows应用程序,可以在程序初始化时设置。

下面是设置的一个例子:

PersistenceProperty pp=new PersistenceProperty();

pp.ConnectionString="server=127.0.0.1;uid=sa;pwd=;database=logisticsDemo;";//数据库连接字符串

pp.DatabaseType=DatabaseType.MSSQLServer; //数据库类型

pp.MapFileLocation=@"WebsharpTestLib,WebsharpTestLib.xml"; //XML定义文件的路径

pp.MapFileLocationTye=MapFileLocationType.Assembly; //XML文件路径的类型

pp.UserID="sa"; //数据库用户名,必须与数据库连接字符串中的用户名一致

pp.Password=""; //数据库用户密码,必须与数据库连接字符串中的用户密码一致

ApplicationConfiguration.DefaultPersistenceProperty=pp; //设置应用程序的默认配置属性

配置信息的说明如下:

1) 数据库连接字符串、用户名和密码的设置按照常规设置

2) MapFileLocationTye指明XML映射文件的路径类型,可以有三种类型:

a) AbsolutePath:采用绝对路径的形式,在这种情况下,MapFileLocation设置成绝对路径的形式,如:“d:apppathxml”。

b) VirtualPath:对于Web应用程序,可以设置为虚拟路径的形式,如“/MyWebApp/EntityDefinitions/”。

c) Assembly:XML文件作为资源文件被编译。采用这种形式,需要将XML文件的生成操作属性设置成“嵌入的资源”,这种情况下,MapFileLocation的格式为:“AssemblyName,NameSpace”。例如,XML文件位于WebsharpTestLib项目的xml文件夹下面,MapFileLocation可以设置为:“WebsharpTestLib,WebsharpTestLib.xml”

附1:Websharp主要接口定义:

PersistenceCapable:

public interface PersistenceCapable

{

EntityData EntityData{get;set;}

int ObjectCount{get;}

void AddNew();

bool Next();

void First();

}

PersistenceManager:

public interface PersistenceManager : IDisposable

{

void Close();

bool IsClosed{get;}

Transaction CurrentTransaction{ get;}

bool IgnoreCache{get;set;}

void PersistNewObject(EntityData entity);

void PersistNewObject(PersistenceCapable pc);

void UpdateObject(EntityData entity);

void UpdateObject(PersistenceCapable pc);

void DeleteObject(EntityData entity);

void DeleteObject(PersistenceCapable pc);

void Reload(EntityData entity);

void Reload(PersistenceCapable pc);

void Evict (object pc);

void EvictAll (object[] pcs);

void EvictAll (ICollection pcs);

void EvictAll ();

EntityData FindEntityDataByPrimaryKey(object id,string entityTypeName);

EntityData FindEntityDataByPrimaryKey(object id,EntityData entity);

PersistenceCapable FindObjectByPrimaryKey(object id,PersistenceCapable pc);

PersistenceCapable FindObjectByPrimaryKey(object id,Type entityType);

Query NewQuery();

Query NewQuery(string entityTypeName);

Query NewQuery(string entityTypeName,string filter);

Query NewQuery(string entityTypeName,string filter,QueryParameterCollection paramColletion);

DataAccess NewDataAccess();

}

Transaction:

public interface Transaction

{

void Begin();

void Commit();

void Rollback();

PersistenceManager PersistenceManager{get;}

}

Query:

public interface Query

{

string EntityTypeName{get;set;}

string Filter{get;set;}

QueryParameterCollection Parameters

{

get;

set;

}

string Ordering{get;set;}

bool IgnoreCache{get;set;}

EntityData QueryData();

PersistenceCapable QueryObject(PersistenceCapable ps);

EntityData LoadSubObject(EntityData entity,string subTypeName);

PersistenceCapable QueryObject(PersistenceCapable ps,string subTypeName);

EntityData LoadSubObjects(EntityData entity);

PersistenceManager PersistenceManager{get;}

bool QuerySubObjects{get;set;}

bool IsClosed{get;}

void Close ();

void Open();

}

DataAccess:

public interface DataAccess

{

#region Support Property & Method

DatabaseType DatabaseType{get;}

IDbConnection DbConnection{get;}

PersistenceManager PersistenceManager{get;}

IDbTransaction BeginTransaction();

void Open();

void Close();

bool IsClosed{get;}

#endregion

#region ExecuteNonQuery

int ExecuteNonQuery(CommandType commandType, string commandText);

int ExecuteNonQuery(string commandText);

int ExecuteNonQuery(string commandText, QueryParameterCollection commandParameters);

int ExecuteNonQuery(CommandType commandType, string commandText, QueryParameterCollection commandParameters);

#endregion ExecuteNonQuery

#region ExecuteDataSet

DataSet ExecuteDataset(CommandType commandType, string commandText);

DataSet ExecuteDataset(string commandText);

DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters);

DataSet ExecuteDataset(string commandText, QueryParameterCollection commandParameters);

DataSet ExecuteDataset(CommandType commandType, string commandText,string tableName);

DataSet ExecuteDataset(string commandText,string tableName);

DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters,string tableName);

DataSet ExecuteDataset(string commandText, QueryParameterCollection commandParameters,string tableName);

DataSet ExecuteDataset(CommandType commandType, string commandText,DataSet ds);

DataSet ExecuteDataset(string commandText,DataSet ds);

DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters,DataSet ds);

DataSet ExecuteDataset(string commandText, QueryParameterCollection commandParameters,DataSet ds);

DataSet ExecuteDataset(CommandType commandType, string commandText,DataSet ds,string tableName);

DataSet ExecuteDataset(string commandText,DataSet ds,string tableName);

DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters,DataSet ds,string tableName);

DataSet ExecuteDataset(string commandText, QueryParameterCollection commandParameters,DataSet ds,string tableName);

#endregion ExecuteDataSet

#region ExecuteReader

IDataReader ExecuteReader(CommandType commandType, string commandText);

IDataReader ExecuteReader(string commandText);

IDataReader ExecuteReader(CommandType commandType, string commandText, QueryParameterCollection commandParameters);

IDataReader ExecuteReader(string commandText, QueryParameterCollection commandParameters);

#endregion ExecuteReader

#region ExecuteScalar

object ExecuteScalar(CommandType commandType, string commandText);

object ExecuteScalar(string commandText);

object ExecuteScalar(CommandType commandType, string commandText, QueryParameterCollection commandParameters);

object ExecuteScalar(string commandText, QueryParameterCollection commandParameters);

#endregion ExecuteScalar

#region ExecuteXmlReader

XmlReader ExecuteXmlReader(CommandType commandType, string commandText);

XmlReader ExecuteXmlReader(string commandText);

XmlReader ExecuteXmlReader(CommandType commandType, string commandText, QueryParameterCollection commandParameters);

XmlReader ExecuteXmlReader(string commandText, QueryParameterCollection commandParameters);

#endregion ExecuteXmlReader

}

附2:使用Websharp中间件开发的Demo程序一份。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/79548/viewspace-925361/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/79548/viewspace-925361/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值