Showing posts with label architecture. Show all posts
Showing posts with label architecture. Show all posts

Monday, March 11, 2019

Service Fabric Deployment via Power shell

Here is the power-shell to deploy Service fabric application. 
Just change Service Instances and Application Instances Variable as highlighted below.


clear

$sfURL = 'locahost:19080'

$AppPkgPathInImageStore = 'ProcessENTSFApp'
$sfApplicationBaseName = 'fabric:/rsoni.ENT.Process.SFApp'        
$sfApplicationName=''
$sfApplicationTypeName ='rsoni.ENT.Process.SFAppType'
$sfApplicationTypeVersion='1.0.0'
$sfAppServiceTypeName = 'rsoni.ENT.Process.Service.ProcessENTType'
$AppFolderPath = 'C:\GitMapping\ENTSolution\rsoni.ENT.Process.SFApp\pkg\Debug'
$TotalServiceInstances=5
$TotalApplicationInstances=4


$connectArgs = @{  ConnectionEndpoint = $sfURL;  WindowsCredential = $True;  }

#Connect-ServiceFabricCluster @connectArgs

Connect-ServiceFabricCluster 

#-ConnectionEndpoint $sfURL



$OnlyRemove=1






$sfAppType=Get-ServiceFabricApplicationType -ApplicationTypeName  $sfApplicationTypeName  -ApplicationTypeVersion $sfApplicationTypeVersion




if ($sfAppType)


{


   if ($OnlyRemove -eq 1)


    {


        $sfApps=  Get-ServiceFabricApplication -ApplicationTypeName $sfApplicationTypeName  


        foreach ($sfAppobj in $sfApps)


        {


             $sfApplicationName =$sfAppobj.ApplicationName


             $sfApp = Get-ServiceFabricApplication -ApplicationName $sfApplicationName




             if($sfApp)


                {


                        for ($i=1 ;$i -le $TotalServiceInstances ; $i++)


                        {


                            $sName =$sfApplicationName +'/'+ $sfAppServiceTypeName+'_'+$i


   


                            $sfAppService0=Get-ServiceFabricService -ServiceName $sName    -ApplicationName $sfApplicationName


                            if ($sfAppService0)


                            {


                                Write-Output "Removing  Service for $sName "


                                Remove-ServiceFabricService  -ServiceName $sName -ForceRemove -Force


                            }




                        }




                    #Get-ServiceFabricServiceType


           


                    Remove-ServiceFabricApplication -ApplicationName $sfApplicationName -ForceRemove -Force




                }


        }




        Unregister-ServiceFabricApplicationType $sfApplicationTypeName $sfApplicationTypeVersion -Force


        Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore $AppPkgPathInImageStore


    }


}


else


{


    if ($OnlyRemove -eq 0)


    {


        #Register Application Type


        #Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $AppFolderPath -CompressPackage -SkipCopy


        Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $AppFolderPath -ApplicationPackagePathInImageStore   $AppPkgPathInImageStore -TimeoutSec 1800


        Register-ServiceFabricApplicationType -ApplicationPathInImageStore $AppPkgPathInImageStore




        for ($ap=1 ;$ap -le $TotalApplicationInstances ; $ap++)


        {


            $sfApplicationName =$sfApplicationBaseName+'_'+$ap




            $sfApp = Get-ServiceFabricApplication -ApplicationName $sfApplicationName


      


            Write-Output "Creating New Application"


            New-ServiceFabricApplication -ApplicationName $sfApplicationName -ApplicationTypeName $sfApplicationTypeName -ApplicationTypeVersion $sfApplicationTypeVersion




            for ($i=1 ;$i -le $TotalServiceInstances ; $i++)


                {


                    $sName =$sfApplicationName +'/'+ $sfAppServiceTypeName+'_'+$i


                    $sfAppService0=Get-ServiceFabricService -ServiceName $sName    -ApplicationName $sfApplicationName


                    if (!$sfAppService0)


                    {


                        Write-Output "Creating Service for $sName "


                        #New-ServiceFabricService -Stateless -ServiceName $sName  -ApplicationName $sfApplicationName  -ServiceTypeName $sfAppServiceTypeName -InstanceCount 1 -PartitionSchemeSingleton -ServicePackageActivationMode ExclusiveProcess


                        New-ServiceFabricService -Stateful -ServiceName $sName  -ApplicationName $sfApplicationName  -ServiceTypeName $sfAppServiceTypeName -PartitionSchemeSingleton -ServicePackageActivationMode ExclusiveProcess -TargetReplicaSetSize 1 -MinReplicaSetSize 1


                    }


                }


          }


     }




}

exit


 

Monday, December 4, 2017

Same Method name in 2 interfaces, Implemented in one class

This is a tricky Question,  if I create 2 interface with same method name, and implement both in one class. Now if create object of this derived class, which method it will pick-up/Execute at run time.

To test this need to create 2 interface with same method Name.

 interface IFace1
    {
        void GetFaceDetails();
    }

    interface IFace2
    {
        void GetFaceDetails();
    }

Now create a class to implement both interfaces

public class DerivedClass : IFace1, IFace2
    {
        public DerivedClass()
        {
            Console.WriteLine(" Constructor Called. ");
        }
       void IFace1.GetFaceDetails()
        {
            Console.WriteLine(" IFace1.GetFaceDetails ");
        }
        void IFace2.GetFaceDetails()
        {
            Console.WriteLine(" IFace2.GetFaceDetails ");
        }
    }


Now to use this if I create an object of IFace1 then It will call IFace1.GetFaceDetails Method.
IFace1 obj1 = new DerivedClass();
            obj1.GetFaceDetails();

So it will print " IFace1.GetFaceDetails "

Similarly if I  create an object of IFace2 then It will call IFace2.GetFaceDetails Method.
IFace2 obj2 = new DerivedClass();
            obj2.GetFaceDetails();

So it will print " IFace2.GetFaceDetails "


Now what if I create an object of DerivedClass itself.
DerivedClass obj = new DerivedClass();
obj.GetFaceDetails();


In above code it will show a compiler error that GetFaceDetails Method doesn’t exists in DerivedClass. So it will not execute at all. Or you will have to create another method with same name in class, and compiler will pick that method in execution.

Tuesday, September 20, 2016

Interview Question Series - Service oriented architecture

Service oriented architecture (SOA) is based on distributed computing where the consumer of service need not to worry about provider's implementation.
in other words, it has loose coupling, where consumer sends a request to provider and provider gives the response. this communication happens based on some rules and XML.

these rules are defined in SOAP/ REST implementation.

here in SOA , our provider can be written in JAVA/ Dotnet, and consumer can also be in different language.  not all code should be in same language.

it is recommended that implementations of SOA should use open standards to realize interoperability.

Thursday, May 19, 2016

Interview Question Series - Architecture Concerns


Interview Question Series - Tier vs Layer


  • Layer is a logical separation, how to organize the code. E.g.: presentation (view), controller, models, repository, data access, and Tier is a physical separation, where the code / process runs. E.g.: client, application server, database server;
  • Layers mainly help in architecture principal of Maintainability, to deploy separate code at separate server, in Tier helps in performance where we can improve app performance if we have more then 1 server, like app server and DB Server.
  • Layers are like, presentation layer (or UI), business logic layer and Database Layer, and Tire is like 2 tire , with app server and DB server.