1、业务层服务
。
业务层可以通过连接到“业务适配器”进行注册。将自身的“公共地址”注册给服务层,并且注册自己所对应的“应用程序名”。这有点像这样:
/// <summary> 业务服务器的注册信息。
/// </summary>
[Serializable]
public class RegisterInfo
{
protected string _BusinessID;
public string BusinessID
{
get
{
return this._BusinessID;
}
}
protected string _ApplicationName;
public string ApplicationName
{
get
{
return this._ApplicationName;
}
}
protected string _PrivateIP;
public string PrivateIP
{
get
{
return this._PrivateIP;
}
}
protected string _PublicIP;
public string PublicIP
{
get
{
return this._PublicIP;
}
}
protected string _AddressFormat;
public string AddressFormat
{
get
{
return this._AddressFormat;
}
}
public RegisterInfo(string bussineID, string applicationName, string privateIP, string publicIP)
{
this._BusinessID = bussineID;
this._ApplicationName = applicationName;
this._PrivateIP = privateIP;
this._PublicIP = publicIP;
}
public void SetAddressFormat(string address)
{
this._AddressFormat = address.Replace("localhost", "{0}");
}
}
业务层在向往适配层注册服务时,需要提供自己的“客户层应用程序名”,自己的“内外网地址”。这样,适配层在接收到客户层的申请时,便可以将注册的“连接地址”告诉客户层。
这样做的目的在于:保护实际业务的操作接口(虽然也是公开接口,但是客户端并不知道如何连接他,只能通过账号密码验证后,业务层发送过来的地址,客户端才可以连接)。
当然更重要的是,还可以实现一个应用多个“服务接口”,这样在分布式应用中是最有效缓解服务器压力的方法之一。
业务层需要注册信息已经确认了,那么便是将服务契约(适配层实现)。
/// <summary> 注册适配器的契约。
/// </summary>
[ServiceContract(CallbackContract = typeof(IRegisterCallback))]
public interface IRegisterContract
{
/// <summary> 将业务服务器注册到适配服务器。
/// </summary>
[OperationContract]
Result Register(RegisterInfo info);
[OperationContract(IsOneWay = true)]
void FromBusinessPing(object arg);
}
Callback契约如下(业务层实现):
/// <summary> 注册适配器的回调契约。
/// </summary>
public interface IRegisterCallback
{
/// <summary> 当适配器接收登录验证时的回调函数。
/// </summary>
[OperationContract]
Result ClientLogin(string uid, string pwd);
/// <summary> 激活业务服务器的状态。
/// </summary>
[OperationContract(IsOneWay = true)]
void FromAdapterPing(PingCommand command, object arg);
}
这两个接口用于业务层与适配层之间的会话。每当有一个新的客户端连接到适配层时,适配层会向其索要登录凭证,然后转发给对应的应用名的业务层。当业
务层校验成功,适配层才会将这个“隐藏于公众”的地址抛给客户端。IRegisterContract.FromBusinessPing
是适配层接收到业务层的“激活测试”,业务层要告诉适配层:“我正在运行,可以将客户给我
”。IRegisterCallback.FromAdapterPing 也是同样的道理。这样双方互 PING,可以确保业务层和适配层的在线情况。
当然,这么繁琐的“双方互PING”,还有一个更加重要的作用。
/// <summary> 表示适配服务器发送至业务服务器的命令。
/// </summary>
public enum PingCommand
{
/// <summary> 表示这是一个普通的命令。
/// </summary>
None,
/// <summary> 表示这是一个业务服务器关闭的命令。
/// </summary>
Close,
/// <summary> 表示这是一个业务服务器更新的命令。使用Hubble.Net实现全文检索
/// </summary>
Update,
}
通过上面的代码,园友便可以发现,在互动会话的过程中,可以做到“一方断线,多方支援
”。而当业务层分布在10台不同的电脑上,更新业务层也是一个头疼的问题
。所以,这个问题可以交给适配层来完成。适配层只要检测到本地“业务层”或“客户层”应用程序有版本变化,便会主动(客户层是被动)通知对方更新要求。这样客户层和业务层的更新便可以完美解决。
至此,业务层与适配层之间的交互,已经简单的告诉大家了。
分享到:
相关推荐
Packt Publishing] WCF 4.5 Multi-Layer Services Development with Entity Framework (E-Book)
在提供的压缩包中,我们看到的是一个完整的WCF服务实现,采用了四层架构。四层架构通常包括表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)和数据存储层(例如数据库)。这种分层设计有助于代码的组织和重用,...
综上所述,这个多层架构的大型.NET OA系统是一个全面的企业解决方案,涵盖了软件开发的多个方面,不仅涉及技术实现,还关注系统架构和业务流程的优化。对于想要深入了解.NET开发和OA系统设计的开发者来说,这是一个...
在多层架构中,网络层负责处理客户端和服务器之间的通信,通常包括HTTP请求、WCF服务、RESTful API等。理解并正确实现这一层对于确保系统间的高效数据交换至关重要。 **Domain(领域)** 领域层是多层架构中的核心...
2. **多层架构**:在WCF中实现多层架构,包括客户端、业务逻辑层(BLL)、数据访问层(DAL)和实体模型。理解各层的职责和它们之间的交互。 3. **LINQ简介**:学习LINQ的基本语法,包括查询表达式和方法语法。掌握...
9. **多层架构与WCF**:展示如何在多层应用程序中有效利用WCF。 10. **WCF设计模式**:介绍常见的WCF设计模式及其应用场景。 随书附带的“WCF全面解析源码.zip”包含了书中示例代码,便于读者动手实践,加深对理论...
可能包含使用Windows Communication Foundation (WCF) 或ASP.NET SignalR实现的服务通信,以便各层之间能够进行高效的数据交换。 5. **RedSoft**:虽然没有提供关于RedSoft的更多信息,但这个名字可能指的是开发此...
在多层分布式架构中,还涉及到服务化思想,即通过Web服务(如WCF或Web API)将业务逻辑暴露给其他组件或远程客户端。这样可以实现组件的解耦,提高系统的灵活性和可扩展性。在本教程中,你可能还会看到如何配置和...
此外,此实例可能还涉及到负载均衡和分布式缓存技术,如使用IIS的Application Request Routing (ARR)实现服务器间的请求分发,以提高系统的可用性和响应速度。分布式缓存如Redis或Memcached可以提升性能,将经常访问...
此外,还可以探索WCF的多层架构、服务实例化模式、并发控制、服务宿主(如IIS、自承载等)等高级特性。 总之,WCF练习项目是一个深入理解WCF技术的好工具,通过对该项目的研究,开发者可以提升在分布式系统设计、...
WCF可以在这多层架构中充当各层之间通信的桥梁,每层都可以实现为一个或多个服务,从而构建出稳定、可扩展的分布式系统。 总的来说,WCF为.NET平台的开发者提供了一套强大的工具集,用于设计、构建和运行分布式系统...
8. **部署与配置**:多层架构允许灵活的部署策略,可以根据需求将各层部署在同一台服务器上,或者分散到多台服务器以实现负载均衡和性能优化。 9. **测试与调试**:由于各层职责明确,测试可以更加有针对性,提高了...
在教程中,你可能会遇到各种实际项目案例,比如创建一个MVC博客应用,使用AJAX实现无刷新的搜索功能,或者构建一个使用WCF服务的多层架构应用。通过这些实例,你将有机会实践所学知识,解决实际问题,从而深化理解和...
9. **多层架构中的WCF应用**:如何在企业级多层应用程序中有效利用WCF进行通信。 通过这些示例,读者不仅可以掌握WCF的基本用法,还能了解到如何在实际项目中灵活运用这些技术,解决分布式系统中的通信问题。学习和...
3. 创建WCF服务:定义接口、实现服务类、配置服务。 4. 使用LINQ进行数据操作:数据库查询、XML处理、集合操作。 5. 多层架构设计:业务逻辑层、数据访问层和表示层的划分。 6. 部署和测试WCF服务:调试、异常处理、...
本书《Packtpub WCF 4.0 Multi-tier Services Development with LINQ to Entities》主要介绍了如何使用 WCF 4.0 和 LINQ to Entities 开发多层服务。 #### 二、多层服务开发的重要性 多层服务架构是一种将应用程序...