Person Service

This service is used to handle EPS people, such as users, subscribers, customers,…

Note: Some part of this documentation are currently incomplete, as the new .NET Core REST deployment has not yet been finalized.

C# Service Access Example using CODE Framework

Using CODE Framework service call infrastructure, this service can be called from the client like so:

ServiceClient.Call<IPersonService>(s => {
    var response = s.GetPeople(new PersonInformationRequest();
});

ServiceClient.Call<IInquiryService>(s => {
    var response = s.SaveInquiry(new InquirySavingRequest());
});

ServiceClient.Call<IPositionService>(s => {
    var response = s.GetAvailableJobs();
});

NuGet Packages

To use this service from .NET Core applications, add appropriate packages from the private EPSPackages repository. The following packages are available:

Package Purpose
EPS.Thessaly.Person.PersonContract Provides all contracts needed to access the service (usually through CODE Framework)
EPS.Thessaly.Person.ServiceImplementation Full service implementation for in-process hosting
EPS.Thessaly.Person.BusinessObjects Lower-level business object implementation used by the service implementation

.NET Core Client Configuration

When using these services through CODE Framework's ServiceClient class the following configuration settings need to be added. This can be done through an XML configuration file, or a JSON file, or any other mechanism CODE Framework's configuration system supports. For ASP.NET Core applications, the following settings need to appear in appsettings.json:

"ApplicationSettings": {
  "RestServiceUrl": {
    "IPersonService": "tbd",
    "IInquiryService": "tbd",
    "IPositionService": "tbd"
  }
}

For XML configurations (such as in web.config or app.config:

<add key="RestServiceUrl:IPersonService" value="tbd"/>
<add key="RestServiceUrl:IInquiryService" value="tbd"/>
<add key="RestServiceUrl:IPositionService" value="tbd"/>

For more information on .NET Core service calling, see also: Calling Services in .NET Core.

Full .NET Framework Configuration

This requires the following settings to be set in the application configuration file (such as App.config or Web.config):

<add key="ServiceBaseUrl" value="www.epsservices.net"/>
<add key="ServiceProtocol" value="NetTcp"/>

<add key="ServiceBasePath:IPersonService" value="Person"/>
<add key="ServicePort:IPersonService" value="45150"/>
<add key="ServiceMessageSize:IPersonService" value="Large"/>

<add key="ServiceBasePath:IInquiryService" value="Inquiry"/>
<add key="ServicePort:IInquiryService" value="45151"/>
<add key="ServiceMessageSize:IPositionService" value="Large"/>

<add key="ServiceBasePath:IPositionService" value="Position"/>
<add key="ServicePort:IPositionService" value="45152"/>
<add key="ServiceMessageSize:IPositionService" value="Large"/>

Note: This is an older service that does not follow all the latest service standards. For instance, the GetAvailableJobs() operation does not accept an input message/parameter. However, the overall paradigm is reasonably close to all our latest standards.

Exposed Services

IPersonService

Protocol Port Uri Base URL Base Path
NetTcp 45150 net.tcp://www.epsservices.net/person/IPersonService www.epsservices.net person
BasicHttp 80 http://www.epsservices.net/person/IPersonService/basic www.epsservices.net person
REST XML 80 http://www.epsservices.net/person/IPersonService/rest/xml www.epsservices.net person
REST JSON 80 http://www.epsservices.net/person/IPersonService/rest/json www.epsservices.net person

IInquiryService

Protocol Port Uri Base URL Base Path
NetTcp 45151 net.tcp://www.epsservices.net/person/IInquiryService www.epsservices.net person
BasicHttp 80 http://www.epsservices.net/person/IInquiryService/basic www.epsservices.net person
REST XML 80 http://www.epsservices.net/person/IInquiryService/rest/xml www.epsservices.net person
REST JSON 80 http://www.epsservices.net/person/IInquiryService/rest/json www.epsservices.net person

IPositionService

Protocol Port Uri Base URL Base Path
NetTcp 45152 net.tcp://www.epsservices.net/person/IPositionService www.epsservices.net person
BasicHttp 80 http://www.epsservices.net/person/IPositionService/basic www.epsservices.net person
REST XML 80 http://www.epsservices.net/person/IPositionService/rest/xml www.epsservices.net person
REST JSON 80 http://www.epsservices.net/person/IPositionService/rest/json www.epsservices.net person

Service Ports for TCP/IP (NetTcp) Service Endpoints

Interface NetTcp Port
IPersonService 45150
IInquiryService 45151
IPositionService 45152
– reserved for future use – 45153
– reserved for future use – 45154
– reserved for future use – 45155
– reserved for future use – 45156
– reserved for future use – 45157
– reserved for future use – 45158
– reserved for future use – 45159

Solution

This service is part of the Person solution of the Thessaly Services folder.

Deployment

To re-deploy a new version of this service, follow these steps:

  1. Rebuild the Person solution in Release configuration.
    1. Verify that the configuration settings in app.config of the EventServiceWindowsService project are set properly (BaseUri = www.epsservices.net, and database:Server = SQL01).
    2. Verify that all projects have an appropriately updated version number.
  2. Use the Installer Service Client Application to deploy the service to the server
  3. Deploy the ASP.NET Core REST hosting environment
    1. t.b.d.
  4. Publish NuGet packages into the prive EPSPackages source.
    1. \nuget push -Source "EPSPackages" -ApiKey AzureDevOps "EPS.Thessaly.Person.PersonContract.5.0.0.nupkg"
    2. \nuget push -Source "EPSPackages" -ApiKey AzureDevOps "EPS.Thessaly.Person.ServiceImplementation.5.0.0.nupkg"
    3. \nuget push -Source "EPSPackages" -ApiKey AzureDevOps "EPS.Thessaly.Person.BusinessObjects.5.0.0.nupkg"

Make sure your package sources are configured to include EPSPackages, as described when you click “Connect to feed” on https://dev.azure.com/eps-software/EPSPackages/_packaging?_a=feed&feed=EPSPackages