为 XPO 通过 WCF 生产分布式应用,配置App.config 或者 Web.config
为 XPO 通过 WCF 生产分布式应用,配置App.config 或者 Web.config:
1、服务端配置
参考:WCF服务安全控制之netTcpBinding的用户名密码验证
WCF入门教程1——WCF简要介绍 https://www.cnblogs.com/jiekzou/p/5325310.html 各种Binding 的性能比较。
2、客户端配置
1)如何 通过 DataStoreClient 通过 DataStoreClient(String) 初始化,则 App或者Web的config文件中必须有 <system.serviceModel> 节。也可以使用异步方式:DataStoreClientAsync(String)。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDataStoreService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8733/WCFService" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IDataStoreService" contract="DevExpress.Xpo.DB.IDataStoreWarpServiceAsync"
name="BasicHttpBinding_IDataStoreService" />
</client>
</system.serviceModel>
注意: contract="DevExpress.Xpo.DB.IDataStoreWarpServiceAsync" 也可以使用contract="DevExpress.Xpo.DB.IDataStoreWarpService" 其中 Warp 是加入的,通过服务引用生成的没有这点。
参考 Devexpress 的一个示例: XPOTestLibrary.sln (地址忘记!) ,代码如下:
string bindingName = "BasicHttpBinding_IDataStoreService"; 此名称必须在配置文件中有对应 endpoint.
//IDataStore dataStore = new DataStoreClient(bindingName); 同步
//XpoDefault.DataLayer = new SimpleDataLayer(dataStore);
IDataStoreAsync dataStoreAsync = new DataStoreClientAsync(bindingName); 异步
XpoDefault.DataLayer = new SimpleDataLayer(dataStoreAsync);
2)直接使用 DataStoreClient(Binding binding, EndpointAddress remoteAddress) 或者
DataStoreClientAsync(Binding binding, EndpointAddress remoteAddress) 代码如下:(也否用同步方式)
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress endpointAddress = new EndpointAddress(new Uri("http://localhost:8734/"));
IDataStoreAsync dataStoreAsync = new DataStoreClientAsync(binding, endpointAddress);
XpoDefault.DataLayer = new SimpleDataLayer(dataStoreAsync);