iT Synergy Blogs

Growing Innovation - Soluciones a problemas reales

  • Facebook
  • Instagram
  • LinkedIn
  • Phone
  • Twitter
  • YouTube

Copyright © 2025 · iT Synergy·

Service Throttling
Service Throttling avatar

June 13, 2013 By Jaime Alonso Páez torres Leave a Comment

Cuando se están escribiendo servicios web escalables, se necesita ser consciente de ciertas propiedades que aplican a nivel de la clase del servicio y que pueden afectar el desempeño WCF para despachar las solicitudes de un servicio.

InstanceContextMode y ConcurrencyMode

Estas propiedades son InstanceContextMode y ConcurrencyMode. En pocas palabras, InstanceContextMode controla cuando una nueva instancia de un servicio es creada y ConcurrencyMode controla la forma como las solicitudes pueden ser atendidas simultáneamente.

  • InstanceContextMode = InstanceContextMode.PerSession (valor por defecto)

PerCall una instancia del servicio por cada llamado del método que haga el cliente, PerSession solo una instancia del servicio existe por cada sesión que posea el cliente WCF; Single, una única instancia del servicio es creada para todos los clientes.

  • ConcurrencyMode = ConcurrencyMode.Single (valor por defecto)

               La siguiente tabla muestra cuando una operación puede ser invocada mientras hay otra en progreso, dependiendo del ConcurrencyMode.

ConcurrencyMode

Puede una nueva operación ser invocada?

Single

Nunca

Reentrant

Solamente cuando invoca otro servicio o un callback

Multiple

Siempre

Formas de elegir,

InstanceContextMode.Percall

Considere este modo instancia en estas circunstancias:

  • Si su servicio es sin estado.
  • Si su servicio tiene código de inicialización de peso ligero (o ninguna). No aplica si por ejemplo, consulta una base de datos o crear gráficos de grandes objetos en memoria)
  • Si su servicio es de un solo hilo de ejecución.

 

InstanceContextMode.PerSession (Por defecto)

Considere este modo de instancia en estas circunstancias:

  • Si su servicio debe mantener algún estado entre las llamadas del mismo cliente.
  • Si su servicio tiene código de inicialización de peso ligero (o ninguna).

Nota: De forma predeterminada, WCF utilizará PerSession siempre y cuando el cliente y el servicio se estén comunicando a través de un binding que admita estado de sesión. De lo contrario, el servicio se comportará como un servicio PerCall.

El desarrollador puede para eso, colocar una restricción utilizando la propiedad ServiceContractAttribute.SessionMode que se puede aplicar a su contrato de servicio. Con eso, si cualquier endpoint configurado para su servicio no soporta sesiones el servicio fallara al iniciar.

 

<ServiceContract(Name:="SampleDuplexHello", Namespace:="http://microsoft.wcf", CallbackContract:=GetType(IHelloCallbackContract), SessionMode:=SessionMode.Required)>

Public Interface IDuplexHello

<OperationContract(IsOneWay:=True)> _

Sub Hello(ByVal greeting As String)

End Interface

InstanceContextMode.Single

  Considere este modo instancia en estas circunstancias:

  • Si su servicio debe mantener algún Estado entre clientes.
  • El servicio tiene código de inicialización caro. Es decir, al inicializar por cada cliente (PerSession) o por cada llamada (PerCall) sería demasiado costoso.
  • No hay necesidad de escalar horizontalmente el servicio.

  Tener en cuenta las consideraciones para balanceo de cargas en WCF en una granja de servidores.

 

Posibles escenarios

Para resumir unos ejemplos de posibles escenarios básicos, que suceden cuando 100 clientes simultáneamente invocan un método de un servicio.

  • Escenario 1: InstanceContextMode.Single+ConcurrencyMode.Single

                    Resultado: 100 invocaciones secuenciales del método en un hilo.

  • Escenario 2: InstanceContextMode.Single+ConcurrencyMode.Multiple

                    Resultado: N invocaciones concurrentes del método en N hilos, donde N es determinado por el service throttle MaxConcurrentCalls.

  • Escenario 3:InstanceContextMode.PerCall+Any ConcurrencyMode

                      Resultado: N invocaciones concurrentes del método en N instancias del servicio, donde N es determinado por el service throttle MaxConcurrentInstances.

           Link relacionado, http://kennyw.com/indigo/178

Filed Under: WCF Tagged With: ConcurrencyMode, InstanceContextMode, PerCall, PerSession, Service Throttling, Single, WCF

Cannot resolve the collation conflict between “Modern_Spanish_CI_AS” and SQL_Latin1_General_CP1_CI_AS” in the equal To operation.
Cannot resolve the collation conflict between “Modern_Spanish_CI_AS” and SQL_Latin1_General_CP1_CI_AS” in the equal To operation. avatar

June 6, 2013 By Ana María Orozco Zuluaga Leave a Comment

Sometimes when you are working with different database to get data the way you require, you can get the next error:

Msg 468, Level 16, State 9, Line 3: “Cannot resolve the collation conflict between “Modern_Spanish_CI_AS” and “SQL_Latin1_General_CP1_CI_AS” in the equal to operation.”

It happens because the database collations of those two database I was working on have different collation as show the next two pictures:

To resolve the problem you have to identify the column which are presenting the problem. Normally you can identify them in two cases:

  • If you are working with a simple query like:

Select *

From Tabla

Where Cond1 = Cond2

The “issue” is going to be in the data you are using in the clause Where.

  • If you are working with a Merge sentence like:

MERGE PISGRSTG_Dev.dbo.Fuente AS T

USING PISGR_Dev.dbo.Fuente AS S

ON T.IdTipoRecurso=S.IdTipoRecurso AND T.IdTipoEntidad=S.IdTipoEntidad AND T.IdEntidad=S.IdEntidad

WHEN NOT MATCHED BY TARGET THEN

INSERT ……

VALUES….

WHEN MATCHED THEN

UPDATE SET

T.Con=S.Con,

…….

 

The “issue” is going to be in the data you are using in the clause On.

As I was using a Merge statement in this case I fixed the error as show below:

ON T.IdTipoRecurso=S.IdTipoRecurso AND

T.IdTipoEntidad=S.IdTipoEntidad AND T.IdEntidad=S.IdEntidad COLLATE Modern_Spanish_CI_AS

 

Is Like make a cast between two database collations.

Filed Under: SQL Tagged With: Collation

Correlación para colas en una orquestación BizTalk
Correlación para colas en una orquestación BizTalk avatar

May 31, 2013 By Jhon Jairo Rodriguez Leave a Comment

Para realizar una correlación de una cola en una orquestación, el mensaje de entrada y salida deben tener un campo en común (Para este caso el campo en común es id_referencia).

Mensaje de Entrada a la cola

image

Mensaje de Salida a la cola

image

 

El primer paso es crear un Property Schema y para tal efecto se debe hacer clic sobre el proyecto seleccionar la opción “Add” y luego hacer clic en la opción “Add New Item”

image

En la ventana emergente se selecciona “Property Schema”, y se le da un nombre al esquema

image

 

Luego se modifican las propiedades del elementFile

  • Node Name = “id_referencia”
  • Property Schemas Base = “MessageDataPropertyBase”
  • RootNodeTypeName = “id_referencia”

 

image

Después se adicionan los esquemas a esta propiedad, para realizar esta relación, se debe abrir los esquemas de entrada y salida. Una vez abiertos los esquemas se debe hacer clic derecho sobre el campo al que se le desea adicionar la relación (Para este caso id_referencia), luego se selecciona la opción “Promote” y clic en “show Promotions…”

image

En la ventana emergente se hace clic sobre la opción “Property Fields” y luego en la opción de “open”

image

Posteriormente se selecciona el PropertySchema creado en pasos anteriores y se clic en el botón “OK”

image

Acto seguido se selecciona el campo del esquema con el que se desea relacionar con la propiedad agregada y se da clic en el botón “Add >>”.

NOTA: Esta serie de pasos se debe hacer con el esquema de salida.

image

Posteriormente se abre la orquestación en donde se realiza la correlación y se va al “Correlation View”. Se hace clic en “Type” y en “Correlation types”, se hace clic derecho y se selecciona “New Correlation Type”

image

Luego se selecciona la propiedad que se va correlacionar y se hace clic en el botón “Add >>” y “OK”

image

Posteriormente se cambia el nombre de la correlación con la propiedad “Identifier”

image

Paso a seguir, se crea el “correlations set” de la orquestación

image

Una vez creado el “correlations set” se modifican las propiedades:

  • Correlation type: Se selecciona el tipo de correlación creada anteriormente.
  • Identifier: nombre del “correlations set”

 

image

 

Las correlaciones se pueden manejar de las siguientes formas en las orquestaciones:

1 – La orquestación queda deshidratada, esperando la respuesta de la cola.

image

2 – Dar un tiempo de espera a la respuesta, si este tiempo se termina la orquestación genera un mensaje para seguir con el proceso.

image

En cualquiera de las dos formas la configuración va ser la misma. Lo primero que se debe hacer es ir a las propiedades del control “send” y se selecciona el “correlations set” creado en el paso anterior en la propiedad “initializing correlatior”

image

Luego se va a las propiedades del control “Receive” y se selecciona el “correlations set” creado en el paso anterior en la propiedad “Following Correlation Sets”

image

Por último, ya desplegada la orquestación en el puerto que recibe la respuesta del servicio cola en la propiedad “Receive pipeline” seleccionar XML Receive

image 

Filed Under: BizTalk, BizTalk 2010 configurations, BizTalk Application, ESB, SOA Tagged With: colas, Windows 8

  • « Previous Page
  • 1
  • …
  • 15
  • 16
  • 17
  • 18
  • 19
  • …
  • 72
  • Next Page »

Team


Marco
Antonio Hernández

Jaime
Alonso Páez

Luis
Carlos Bernal

Ana
María Orozco

Juan
Camilo Zapata

Carlos
Alberto Rueda

Sonia
Elizabeth Soriano

Diana
Díaz Grijalba

Bernardo
Enrique Cardales

Alexandra
Bravo Restrepo

Juan
Alberto Vélez

Diana
Paola Padilla

Jhon
Jairo Rodriguez

Yully
Arias Castillo

Carlos
Andrés Vélez

Brayan
Ruiz

Jesús
Javier Hernández

Alejandro
Garcia Forero

Gustavo
Adolfo Echeverry

Josué
Leonardo Bohórquez

Oscar
Alberto Urrea

Odahir
Rolando Salcedo

Jimmy
Quejada Meneses

Natalia
Zartha Suárez

Mario
Andrés Cortés

Eric
Yovanny Martinez

Carolina
Torres Rodríguez

Juan
Mauricio García

Tag Cloud

.NET (9) 940px (1) Analysis Services mdx (1) An attempt was made to load a program with an incorrect format. (1) ASP.NET MVC (1) Azure (3) Backup (1) BAM (7) BAM API (1) BAMTraceException (2) BI (3) BizTalk (24) Business Intelligence (6) C# (2) caracteristicas de publicacion (2) Content Editor (3) ESB (15) ESB Toolkit (3) General (4) habilitar caracteristicas (3) indexes (2) Integration Services (2) Master Page (3) MDX (2) MSE (11) net.tcp (2) Office 365 (2) Oracle (2) Performance Point (2) Public Website (2) Receive Location (2) SDK (2) Servicio Web (2) Sharepoint 2010 (2) SharePoint 2013 (4) SharePoint Online (2) SOA (8) Soap Fault (2) Sort Months MDX (2) SQL Server (2) Visual (2) Visual Studio 2010 (2) WCF (19) Windows (3) Windows 8 (17)

Categories

  • .NET (33)
  • Analysis Services (1)
  • ASP.NET MVC (2)
  • Azure (7)
  • BAM (9)
  • BAM PrimaryImport (3)
  • BigData (1)
  • BizTalk (77)
  • BizTalk 2010 configurations (57)
  • BizTalk Application (60)
  • BizTalk Services (13)
  • Business Intelligence (4)
  • Cloud (3)
  • CMD (1)
  • CodeSmith – NetTiers (2)
  • CommandPrompt (1)
  • CRM OptionSet mapping component (1)
  • Desarrollo de software (6)
  • develop (6)
  • developers (3)
  • DropBox (1)
  • Dynamics (1)
  • Enterprise Architect (1)
  • Entity Framework (1)
  • Errores BizTalk (2)
  • ESB (27)
  • ETL (1)
  • Event Viewer (1)
  • Excel Services (1)
  • Foreach loop container (1)
  • General (4)
  • Gerencia de Proyectos (2)
  • Google (1)
  • Grouped Slices (1)
  • Human Talent (1)
  • IIS (4)
  • Integración (6)
  • Integration Services (3)
  • KingswaySoft (1)
  • Lync (1)
  • MSE (13)
  • Office 365 (2)
  • Oracle Data Adapter (2)
  • Performance Point (4)
  • Picklist (1)
  • Pivot Table (1)
  • Procesos (1)
  • Pruebas (1)
  • Public Website (2)
  • Reports (1)
  • SCRUM (1)
  • SDK (2)
  • SEO (1)
  • Servicios (2)
  • Sharepoint (9)
  • SharePoint 2010 (10)
  • SharePoint 2013 (4)
  • SharePoint Online (2)
  • SharpBox (1)
  • Shortcuts (1)
  • Sin categoría (1)
  • SOA (50)
  • SQL (5)
  • SQL Server (3)
  • SQL Server Management Studio (1)
  • SSIS (3)
  • SSL (1)
  • SSO (1)
  • Tracking Profile Editor (2)
  • Twitter (1)
  • Uncategorized (1)
  • Virtual Network (2)
  • Visual Studio 11 (1)
  • Visual Studio 2010 (2)
  • Visual Studio Online (1)
  • VMware (2)
  • WCF (24)
  • Web (1)
  • Web Api (1)
  • Windows (5)
  • Windows 8 (11)
  • Windows Azure (2)
  • Windows Live Write (1)
  • Windows Phone (7)
  • Windows Phone 8 (1)
  • Windows Scheduler (1)
  • windows8 (2)
  • WindowsRT (3)
  • WP7 SDK (1)

Manage

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org