[英]Create IOrganizationServiceFactory in Console Application for Dynamics CRM 2013
我想创建IOrganizationServiceFactory
的实例,因为我想创建多个线程以连接到服务endpoind。 要创建多线程安全服务上下文,可以使用工厂。 但是我似乎无法创建一个。
这是否可以在C#控制台应用程序中实现?还是仅限于插件和工作流程?
我可以创建OrganizationServiceProxy
,但是我不知道如何从这里继续。
这是我目前拥有的代码:
var serverName = (string)ConfigurationManager.AppSettings["OrganisationUrl"];
Uri organisationUri = new Uri(string.Format("{0}/XRMServices/2011/Organization.svc", serverName));
Uri homeRealmUri = null;
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
var serviceProxy = new OrganizationServiceProxy(organisationUri, homeRealmUri, credentials, null);
您可以设计一个实现IOrganizationServiceFactory
接口的类。 可以使此类负责创建和发布IOrganizationService
实例。
我做了一个基本的例子:
class OrganizationServiceFactory: IOrganizationServiceFactory, IDisposable
{
private readonly ConcurrentBag<OrganizationServiceProxy> _issuedProxies =
new ConcurrentBag<OrganizationServiceProxy>();
public IOrganizationService CreateOrganizationService(Guid? userId)
{
var serverName = (string)ConfigurationManager.AppSettings["OrganisationUrl"];
Uri organisationUri = new Uri(string.Format("{0}/XRMServices/2011/Organization.svc", serverName));
var credentials = new ClientCredentials();
credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
var serviceProxy = new OrganizationServiceProxy(organisationUri, null, credentials, null);
_issuedProxies.Add(serviceProxy);
return serviceProxy;
}
public void Dispose()
{
foreach (var serviceProxy in _issuedProxies)
{
serviceProxy.Dispose();
}
}
}
工厂的客户端可以通过调用CreateOrganizationService(Guid? userId)
获得IOrganizationService
实例,但不能负责处理代理。 工厂将为他们做到这一点。
顺便说一句,您可以使用IServiceManagement<IOrganizationService>
接口使创建多个代理实例的效率更高,但这是另一个主题。
您可能会发现MSDN上的这篇文章有用: 优化多线程进程的CRM 2011服务通道分配 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.