5 lý do nên tổ chức bữa trưa kết hợp bàn việc kinh doanh

Bạn có một cuộc gặp quan trọng? Dưới đây là 5 lý do tại sao bạn nên bố trí cuộc gặp đó trong bữa trưa và bí quyết giúp tận dụng hiệu quả cuộc gặp gỡ đó.

Cuối cùng bạn đã liên hệ được với người mà bạn theo đuổi. Đó có thể là vị khách hàng trong mơ của bạn. Có thể đó là người cố vấn bạn luôn muốn có được. Cũng có thể đó là một đối tượng tuyển dụng hoàn hảo hoặc một đối tác tiềm năng. Vấn đề là bạn muốn họ lắng nghe và họ đồng ý dành thời gian cho bạn. Giờ là lúc bạn cần đặt cược vào cuộc gặp này.
Điện thoại và Skype không đủ riêng tư để chốt thương vụ này. Bạn cần phải gặp trực tiếp họ. Đừng đi tới văn phòng của họ. Thậm chí đừng đi uống cà phê hay uống nước với họ. Bạn cần mời họ ăn trưa. Và đây là lý do tại sao và cách thực hiện việc này:
1. Bạn sẽ kiểm soát môi trường tiếp xúc
Văn phòng của họ là lãnh địa của họ: đồng nghiệp của họ có thể ngắt lời bạn hoặc họ có thể bị phân tán vì các cuộc gọi hoặc email. Ngay cả khi họ đồng ý gặp gỡ tại văn phòng của bạn, hẳn bạn cũng không muốn bị phân tán như vậy. Bên cạnh đó, khi ở trong lãnh địa của bạn, có thể họ sẽ có tâm lý phòng vệ. Bạn muốn họ thật thoải mái. Bạn muốn môi trường tiếp xúc phải ủng hộ bạn. Bạn có thể kiểm soát toàn bộ không khí của buổi gặp gỡ trong bữa trưa.
Hãy nói với khách hàng tương lai rằng bạn sẽ sắp xếp mọi việc và gửi họ thông tin về địa điểm gặp gỡ. Hãy chọn một nhà hàng yên tĩnh để họ có thể nghe bạn. Hỏi họ về đồ ăn yêu thích của họ và tìm một không gian thích hợp (có thể là theo xu thế hoặc cổ điển, thanh lịch hoặc suồng sã) phản ánh được ấn tượng mà bạn muốn tạo ra. Sắp xếp trước với các nhân viên phục vụ bàn của quán ăn (trả trước tiền boa và thuộc tên riêng của họ) để họ chăm sóc đặc biệt bàn của bạn, làm xong phần này bạn có thể rảnh rang tập trung vào công việc của mình. Giờ mọi việc đã ở trên phần sân của bạn và khách hàng tương lai chỉ có thể bị ấn tượng mạnh với phong cách, sự nhiệt tình và cách giao tiếp của bạn với mọi người.
2. Bạn sẽ ở vị trí Bình đẳng
Tôi ghét phải tới văn phòng của ai đó và ngồi trước bàn làm việc của họ. Họ ngồi tại vị trí quyền lực và chờ bạn thể hiện. Một nửa thời gian ghế của họ cao hơn bạn làm bạn cảm thấy mình nhỏ bé và không quan trọng. Chỉ với một chút chuẩn bị tại bữa ăn trưa bạn sẽ làm cán cân quyền lực trở nên cân bằng hoặc thậm chí nghiêng về phía bạn. Xem trước nhà hàng mà bạn chọn và chọn trước bàn mà bạn thích với trưởng nhóm phục vụ bàn. Hãy chắc chắn rằng bạn có thể nhìn thấy cửa ra vào và tựa lưng vào tường nếu có thể. Bạn có thể vẫn ngồi để bạn và họ ở độ cao tương ứng và bạn là điểm có thể nhìn thấy duy nhất từ góc quan sát của họ.
3. Bạn sẽ làm chủ thời gian
Những việc phải làm sẽ chi phối khung thời gian của một cuộc gặp gỡ. Nếu bạn chỉ có 20 phút để thảo luận về nội dung, bạn sẽ thấy mình muốn ra về ngay khi đã đạt được mục đích của mình. Bữa trưa thì khác. Ăn uống là một trải nghiệm mang tính xã hội được mong đợi và rất ít người lại dành ít hơn 60-90 phút cho bữa trưa. Hãy để máy tính xách tay ở nhà. Một bản thuyết trình trên giấy đặt trên bàn sẽ rất hiệu quả và khách hàng tương lai có thể mang nó về nhà. Khi bạn đã làm công việc mô tả ngắn gọn, hãy tiếp tục trừ khi khách hàng tương lai muốn tìm hiểu kỹ hơn phần bạn vừa trình bày. Trừ trường hợp bạn cảm thấy bực mình, hãy nhớ bạn và họ ở đó để thưởng thức toàn bộ bữa ăn, hãy dành thời gian trống để kết nối với nhau một cách thân mật. Mọi người làm ăn với những người mà họ thích. Giờ là lúc bạn có thời gian để giúp họ thích bạn.
4. Bạn sẽ tạo ra một trải nghiệm chung
Hai bạn ở đây cùng nhau. Hãy làm khách hàng tương lai cảm thấy thoải mái. Hãy chắc chắn rằng các quy tắc xã giao của bạn đều chuẩn mực. Soi gương xem lại các hành vi của mình để bạn không phải xấu hổ vì chúng. Bạn có cơ hội để tìm ra điểm chung và mối liên hệ. Hãy tạo ra một kỷ niệm đáng nhớ làm cơ sở cho mối quan hệ trong tương lai của bạn. Hãy biến bữa trưa thành một kỷ niệm tuyệt vời và cả hai bên đều thấy thú vị khi nhắc lại. Nêu rõ sự cần thiết của buổi gặp gỡ. Tìm ra cách để buổi gặp gỡ trở nên thú vị và tạo ra những khoảnh khắc bất ngờ khiến khách hàng tương lai phải ngạc nhiên. Hãy gọi điện trước cho đầu bếp để họ chuẩn bị một món ăn đặc biệt.
5. Bạn sẽ khiến họ cảm kích
Hãy cầm quyển séc lên!!! Điều này có vẻ hiển nhiên nhưng hiện nay nhiều doanh nhân có xu hướng chia nhau trả tiền hóa đơn. Nếu muốn nắm lấy quyền lực thì bạn không nên chọn cách này. Bạn muốn khách hàng tương lai cảm thấy cảm kích bạn dù chỉ vì một bữa ăn. Hãy chắc chắn rằng bạn có lợi thế khi bữa ăn kết thúc. Cách tốt nhất để có được điều đó là hãy kín đáo đưa thẻ tín dụng của bạn cho nhân viên phục vụ bàn trước khi bữa ăn bắt đầu. Bạn có thể quyết định liệu có nói trước với khách hàng là bạn đã trả tiền cho bữa ăn hoặc chờ tới cuối bữa để tạo sự ngạc nhiên cho họ. Dù là cách nào thì bạn cũng sẽ đặt họ vào tình thế cảm kích bạn và để rộng lối cho bạn theo đuổi các bước tiếp theo.
(Dịch từ Inc)
Nguồn: hoclamgiau.vn
Advertisements

WCF Proxy object

Yes, it possible to create a proxy programmatically (and there are several different approaches, only one of which is shown here).  And it is also useful.  For example, imagine that you had a Silverlight or WPF client in a Prism environment. You want to dynamically load an assembly with MEF that contained extensions to an existing service or data contract.  Using a programmatically generated proxy, rather than an “Update Service Reference” command in Visual Studio, would greatly aid in this.

This article focuses on the simplest approach that can possibly work to programmatically generating a client proxy, so as to facilitate learning.  This is likely not the approach you would use in a real life situation, but when you understand the example presented here you’ll have no problem developing much better real life programmatically generated proxies.

Ingredients

The Server needs:

  •         Service Contract(s).
  •         Service implementation.
  •         Data Contract(s) for complex types.  Simple types like int, string, etc. do not need Data Contracts.
  •         Service Endpoint – The service Address, Binding, and Contract.
  •         Service Host – It runs the service implementation and causes the WCF runtime to create a Server-side Channel Stack to operate the Service Endpoint.  The Channel Stack communicates with the Client Proxy, and processes all messages going back and forth, including serializing/deserializing all objects identified in the Data Contracts.

The Client needs – Almost the same things as the server:

  •         Service Contract(s) – Same as Server.
  •         Data Contract(s) – Almost the same as Server.
  •         Service Endpoint – Same as Server.
  •         Proxy  – Contains all of the above, plus ServiceClient class that causes the WCF   runtime to create a Client-side Channel Stack to process all messages on the Client Side.  Using Data Contracts, the Channel Stack serializes/deserializes all objects received from/sent to the Server.

Note both the Client and Server need the same Service Contract, Data Contract(s), and Endpoints.  Indeed the Service Contract can be copied and pasted from the Server files into the Client Proxy file.  This is described below.  The information in the Endpoint is placed into the Server’s Service Host and also the Client Proxy Class, also described below

Using the Ingredients

The Visual Studio solution containing this example is in the file named WCFProxyFromScratchColorsService.zip which can be down loaded at:

https://skydrive.live.com/#cid=AE7DBEA5CE02CF22&id=AE7DBEA5CE02CF22%21105

The below screen shot of the Solution Explorer for this solution shows where the various ingredients are located.

Notice that there is no Client Service Reference.  And there are no App.config files in the Client nor Service.  This is because all the information normally in a Service Reference and App.config file is hand coded.  This code can be found in the following files.

  •         The Service Contract is located on the Server in ColorsService.ServiceInterface.cs, and on the Client in ColorsClientConsole.Proxy.cs.  They both contain exact dulicate copies of the Service Contract.
  •         The Data Contract is located on the Server in ColorsBusinessLayer.ColorsBusinessObjects.cs, and on the Client in ColorsClientConsole.Proxy.cs.  They both contain exactly the same members.  The Server-side Data Contract can use automatic properties or full properties.  However, the Client-side Data Contract must use full properties, with private backing variables.  Full properties are required by the Client deserializer.  Without them you will get null assigned to each field.
  •         The Service Host is located in ColorsServiceHostConsole.Program.cs.  This is where the WCF Channel is created and maintained that runs the service on the Server-side.  This is done with the WCF ServiceHost<T> type.
  •         The Proxy in ColorsClientConsole.Proxy.cs also contains the code that creates the Client-side WCF Channel, in addition to the Service and Data Contracts.  The Client-side WCF channel is in the class ColorsServiceClient in ColorsClientConsole.Proxy.cs.  This class uses the WCF type ChannelFactory to create the channel and allow the Client code to communicate with the Service.

Here is the code for the Client-side ColorsClientConsole.Proxy.cs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;
namespace ColorsClientConsole
{
    ///
<summary> /// Service Contract
 /// </summary>
    [ServiceContract(Namespace = "GeorgeStevens.Software.Developer/2012/05")]
    public interface IColorsService
    {
        [OperationContract]
        string GetColorBrushString(string colorName);
        [OperationContract]
        ColorSwatch GetColor(string colorName);
    }
    ///
<summary> /// Data Contract
 /// </summary>
    [DataContract(Namespace = "GeorgeStevens.Software.Developer.Schemas/2012/05")]
    public class ColorSwatch
    {
        [DataMember]
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }
        private int _id;
        [DataMember]
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private string _name;
        [DataMember]
        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }
        private string _description;
        [DataMember]
        public string ARGBString
        {
            get { return aRGBString; }
            set { aRGBString = value; }
        }
        private string aRGBString;
    }
    ///
<summary> /// The Client Proxy class
 /// </summary>
    public class ColorsServiceClient
    {
        public static IColorsService GetProxy()
        {
            EndpointAddress ep = new EndpointAddress("http://localhost:8732/ColorsService/ColorsServiceImpl");
            IColorsService proxy =
                ChannelFactory.CreateChannel(new BasicHttpBinding(), ep);
            return proxy;
        }
    }
}

The above file shows that the hand coded programmatic way of generating a WCF proxy is quite straight forward.  It removes a lot of the complexity from the xml and code generated by Add Service Reference so that one can see exactly what is going on.

Try placing a breakpoint on one of the setters in the Data Contract.  It will be hit when the deserializer is initializing the object’s properties.

It would be useful to compare the above code to that generated by Add Service Reference.  I’ll leave that as an exercise for the reader.  This will give you a deeper insight into what is going on in the proxy.  One thing that you will notice is a generated proxy uses ClientBase<T> rather than ChannelFactory to generate the channel.  I used ChannelFactory since its main purpose is to allow the creation of proxies programmatically, on the fly.

Here is the code for the Server-side ColorsServiceHostConsole.Program.cs.  Compare this code and its Address, Binding, and Contract with those in the ColorsServiceClient code, above.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static void Main(string[] args)
{
     Console.WriteLine("ColorsServiceHost Console:\n");
     ///
<summary> /// The Service Host -- Contains the Serivce's address, binding, and contract.
 /// Constructs a channel that processes messages to/from the Client and serializes/deserializes
 /// data going to/from the Client according to the DataContract defined above.
 /// </summary>
     // Args = Service type, base address(es).
     using(ServiceHost host = new ServiceHost(typeof(ColorsService.ColorsServiceImpl), new Uri"http://localhost:8732/ColorsService"))
     {
          // Args = Contract, Binding, Address (within the above base address)
          host.AddServiceEndpoint(typeof(ColorsService.IColorsService), new BasicHttpBinding(), "ColorsServiceImpl");
          host.Open();
          Console.WriteLine("\nPress ENTER to terminate this ColorsServiceHost Console.");
          Console.ReadLine();
     }
}

Download the example solution and play with it.  To run the solution:

  • First, start the Service Host.  Set the start up project to the ColorsServiceHostConsole project, then press F5.
  • Second, start the ColorsClientConsole by hovering over this project in the Solution Explorer, right clicking, the selecting Debug > Start New Instance.  This will launch the Client app which immediately launches some service operations and reports back the results to the display.

P.S.  You will have to start Visual Studio as Administrator if you are not logged in as an Admin.  Otherwise you will get a WCF exception when the Service Host starts.

A Better Way

If you want to use this technique in production software, I suggest you create a separate project in the Shared folder in the above Solution Explorer screen shot.  The project in this folder will contain WCF data and service contracts that are shared by the Clients and Services.  Perhaps call the project SharedContracts.  Then have both the Service and the Client reference the SharedContracts dll.  This way, there will be only 1 copy of all service and data contracts to maintain, rather than the duplicate copies of each that is shown in this example for the purpose of demonstration only.

source: George Stevens